← 返回
开发者工具

claude-code-bridge

Bridges OpenClaw (QQ, Telegram, WeChat, and other messaging channels) to a persistent Claude Code CLI session running in a background tmux process. Enables s...
将 OpenClaw(QQ、Telegram、微信等消息渠道)桥接至后台 tmux 中持久运行的 Claude Code CLI 会话。
zlhad zlhad 来源
开发者工具 clawhub v1.0.0 1 版本 99872.8 Key: 无需
★ 0
Stars
📥 785
下载
💾 18
安装
1
版本
#latest

概述

Claude Code Bridge

Bridge every incoming message to a live, persistent claude CLI process running

in a background tmux session. The user interacts via QQ/Telegram/any channel;

Claude Code responds as if they were typing in a real terminal.

Session State Detection (CRITICAL — CHECK EVERY TURN)

At the start of EVERY incoming message, determine session state:

~/.openclaw/workspace/skills/claude-code-bridge/scripts/claude-code-bridge.sh "<SESSION_ID>" status
  • ✅ Claude Code 会话运行中CC mode active, route message to CC
  • ⭕ 没有活跃CC mode off, respond normally
  • ⚠️ CC 正在等待审批 → tell user and await their approval choice

Construct as _ using only [a-zA-Z0-9_].

Routing Logic

Every incoming message:
  1. Run status check
  2. Is it a CC control command?
       ──── Startup (with workdir) ────
       "在 <path> 打开cc"        → start <path>
       "沙盒打开cc" / "沙盒模式" → start --sandbox
       "启动cc"(no path)       → ASK workdir first (see Startup Flow below)
       ──── Other controls ────
       "关闭cc"    → stop
       "重启cc"    → restart
       "cc状态"    → status
       "cc在哪" / "cc目录" → workdir
       "/cc peek"  → peek
       "/cc history [N]" → history
  3. Is CC in approval-waiting state?
       YES → parse user's intent (y/n/1/2/3) → approve
  4. Is CC session active?
       YES → forward as send
       NO  → respond normally as OpenClaw agent

Startup Flow — Working Directory

When the user wants to start Claude Code without specifying a directory:

  1. Ask briefly: "工作目录放哪?发路径就在那里打开,不指定就用临时沙盒。"
  2. Parse the reply:
    • User sends a path (e.g. ~/projects/paper) → start ~/projects/paper
    • User says "沙盒" / "随便" / "临时" / doesn't specify → start --sandbox

When the user specifies a directory in the startup command itself:

  • "在 ~/Documents/Code 打开cc" → extract the path → start ~/Documents/Code
  • "沙盒打开cc" / "沙盒模式启动cc" → start --sandbox

Do NOT ask if the path is already provided in the command.

Executing Actions

SCRIPT="$HOME/.openclaw/workspace/skills/claude-code-bridge/scripts/claude-code-bridge.sh"

"$SCRIPT" "<ID>" start '/path/to/workdir'   # 在指定目录启动
"$SCRIPT" "<ID>" start --sandbox             # 沙盒模式启动
"$SCRIPT" "<ID>" send '<message>'            # 发送(90s 超时)
"$SCRIPT" "<ID>" send '<message>' --long     # 长任务(5min 超时)
"$SCRIPT" "<ID>" approve 1                   # 审批:选 Yes
"$SCRIPT" "<ID>" approve 2                   # 审批:选 Allow always
"$SCRIPT" "<ID>" approve 3                   # 审批:选 No
"$SCRIPT" "<ID>" approve esc                 # 审批:取消
"$SCRIPT" "<ID>" stop                        # 停止(沙盒自动清理)
"$SCRIPT" "<ID>" restart                     # 重启(保留原工作目录)
"$SCRIPT" "<ID>" restart '/new/path'         # 重启到新目录
"$SCRIPT" "<ID>" status                      # 状态(含工作目录信息)
"$SCRIPT" "<ID>" workdir                     # 查询当前工作目录
"$SCRIPT" "<ID>" peek                        # 原始终端画面
"$SCRIPT" "<ID>" history 200                 # 最近 200 行历史

IMPORTANT — message quoting: Use tmux send-keys -l (literal mode) so

special characters ($, !, \) are sent verbatim. The script handles this

internally; just pass the raw message as argument 3.

CC Slash Commands — Direct Passthrough

CC's own slash commands work by sending them via send:

User saysForward as
----------------------
/plansend '/plan'
/model sonnetsend '/model sonnet'
/compactsend '/compact'
/costsend '/cost'
/helpsend '/help'
/clearsend '/clear'
/diffsend '/diff'
/fastsend '/fast'
/vimsend '/vim'
/contextsend '/context'
/exportsend '/export'
/copysend '/copy'
/rewindsend '/rewind'
/forksend '/fork'
/permissionssend '/permissions'
/taskssend '/tasks'
/statussend '/status'
/statssend '/stats'
/reviewsend '/review'
/themesend '/theme'
/sandboxsend '/sandbox'
Any /xxx commandsend '/xxx'

These are NOT OpenClaw commands — forward them verbatim to CC.

All CC slash commands work via passthrough, including ones not listed above.

Handling CC Approval Prompts

When CC encounters a tool it needs permission to run, it shows a TUI selection

menu (arrow-key navigation, not text input). The approve action handles this:

CC shows:
  Do you want to proceed?
  ❯ 1. Yes
    2. Yes, allow from this project
    3. No

The user's reply should be interpreted:

  • "y" / "是" / "好" / "1" / "同意" → approve 1
  • "2" / "允许" / "一直允许" → approve 2
  • "n" / "否" / "不" / "3" / "拒绝" → approve 3
  • "取消" / "cancel" → approve esc

Long Tasks & Streaming

For tasks that take a long time (refactoring, writing large codebases):

  1. Detect intent: if the user's message implies a large task (e.g. "重构整个项目",

"帮我写一个完整的 XXX"), use --long flag (5-minute timeout)

  1. If the output is empty after timeout, use peek to check CC's current state
  2. If CC is still working, inform the user: CC 仍在处理中,稍后再查
  3. Then use peek or history to get progress updates

Formatting — Seamless Mode

Goal: make the user feel like they're talking to Claude Code directly.

When CC session is active:

  • Do NOT prefix every reply with 🤖 CC → — just relay CC's output directly
  • Only add brief status markers for:

· Session startup / shutdown

· Approval prompts (show the options)

· Errors / timeouts

  • CC's code blocks, file paths, tool output → relay as-is, no reformatting
  • Empty output → brief CC 处理中... then try peek after 3s
  • Output >3000 chars → show last 2000 chars, note /cc history for full output
  • Approval prompt → show options directly, minimal decoration

Error Handling

SituationAction
-------------------
send returns emptyWait 3s, run peek, relay result
Session not foundInform user, offer to start
Session crashedDetect via status, offer restart
CC shows errorRelay error verbatim
Timeout on long taskInform user, suggest peek or history

Additional Resources

  • scripts/claude-code-bridge.sh — Full session management (start/send/approve/stop/restart/status/workdir/peek/history)
  • references/usage.md — User-facing help text and example conversations

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-31 16:53 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-agent

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,228 📥 267,960
ai-agent

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,380 📥 320,585
professional

ieee-reference-manager

zlhad
IEEE Trans 论文参考文献全流程管理助手。负责参考文献的格式校验、引用审查、BibTeX 条目修复、期刊名标准化、DOI/元数据在线验证、Early Access 处理、作者数量合规、重复条目检测等。当用户需要"检查参考文献"、"修
★ 0 📥 1,040