
claude-to-im
熱門將此 Claude Code 或 Codex 工作階段橋接到 Telegram、Discord、飛書/Lark、QQ 或微信,讓使用者可以從手機與 Claude 對話。用於:設定、啟動、停止或診斷 claude-to-im 橋接守護行程;將 Claude 回覆轉發到即時通訊應用程式;任何類似「claude-to-im」、「bridge」、「消息推送」、「消息轉發」、「橋接」、「連上飛書」、「手機上看claude」、「啟動後台服務」、「診斷」、「查看日誌」、「配置」的用語。子命令:setup、start、stop、status、logs、reconfigure、doctor。請勿用於:建立獨立機器人、Webhook 整合或使用 IM 平台 SDK 進行程式開發——這些是一般程式設計任務。
Bridge THIS Claude Code or Codex session to Telegram, Discord, Feishu/Lark, QQ, or WeChat so the user can chat with Claude from their phone. Use for: setting up, starting, stopping, or diagnosing the claude-to-im bridge daemon; forwarding Claude replies to a messaging app; any phrase like "claude-to-im", "bridge", "消息推送", "消息转发", "桥接", "连上飞书", "手机上看claude", "启动后台服务", "诊断", "查看日志", "配置". Subcommands: setup, start, stop, status, logs, reconfigure, doctor. Do NOT use for: building standalone bots, webhook integrations, or coding with IM platform SDKs — those are regular programming tasks.
Claude-to-IM 橋接技能
你正在管理 Claude-to-IM 橋接。
使用者資料儲存在 ~/.claude-to-im/。
技能目錄 (SKILL_DIR) 位於 ~/.claude/skills/claude-to-im。
在 Codex 安裝中,可能位於 ~/.codex/skills/Claude-to-IM-skill。
如果兩個路徑都不存在,則回退到使用 Glob 模式 **/skills/**/claude-to-im/SKILL.md 或 **/skills/**/Claude-to-IM-skill/SKILL.md,並從結果推導出根目錄。
命令解析
從 $ARGUMENTS 中將使用者意圖解析為以下子命令之一:
| 使用者說法(範例) | 子命令 |
|---|---|
setup, configure, 配置, 我想在飞书上用 Claude, 帮我连接 Telegram, 帮我接微信 |
setup |
start, start bridge, 启动, 启动桥接 |
start |
stop, stop bridge, 停止, 停止桥接 |
stop |
status, bridge status, 状态, 运行状态, 怎么看桥接的运行状态 |
status |
logs, logs 200, 查看日志, 查看日志 200 |
logs |
reconfigure, 修改配置, 帮我改一下 token, 换个 bot |
reconfigure |
doctor, diagnose, 诊断, 挂了, 没反应了, bot 没反应, 出问题了 |
doctor |
區分:status 與 doctor — 當使用者只想檢查橋接是否在運行(資訊性)時使用 status。當使用者回報問題或懷疑有故障(診斷性)時使用 doctor。如果不確定且使用者描述了症狀(例如「沒反應了」、「掛了」),優先使用 doctor。
為 logs 提取可選的數字參數(預設為 50)。
在詢問使用者任何平台憑證之前,先內部讀取 SKILL_DIR/references/setup-guides.md,以便知道每個憑證在哪裡取得。不要將完整指南一次全部顯示給使用者——只提及他們需要進行的下一步(例如:「前往 https://open.feishu.cn → 你的應用程式 → 憑證,找到 App ID」)。如果使用者說不知道怎麼做,再顯示指南的相關章節。
執行環境偵測
在執行任何子命令之前,偵測你正在哪個環境中執行:
- Claude Code —
AskUserQuestion工具可用。用於互動式設定精靈。 - Codex / 其他 —
AskUserQuestion不可用。回退到非互動式指引:解釋步驟,顯示SKILL_DIR/config.env.example,並要求使用者手動建立~/.claude-to-im/config.env。
你可以透過檢查 AskUserQuestion 是否在你的可用工具列表中來測試。
設定檔檢查(適用於 start、stop、status、logs、reconfigure、doctor)
在執行 setup 以外的任何子命令之前,檢查 ~/.claude-to-im/config.env 是否存在:
- 如果不存在:
- 在 Claude Code 中:告訴使用者「找不到設定檔」,並使用 AskUserQuestion 自動啟動
setup精靈。 - 在 Codex 中:告訴使用者「找不到設定檔。請根據範例建立
~/.claude-to-im/config.env:」然後顯示SKILL_DIR/config.env.example的內容並停止。不要嘗試啟動守護行程——沒有 config.env,程序會在啟動時崩潰並留下過時的 PID 檔案,從而阻止未來啟動。
- 在 Claude Code 中:告訴使用者「找不到設定檔」,並使用 AskUserQuestion 自動啟動
- **如果存在:**繼續執行請求的子命令。
子命令
setup
執行互動式設定精靈。此子命令需要 AskUserQuestion。如果不可用(Codex 環境),則改為顯示 SKILL_DIR/config.env.example 的內容,並逐欄位解釋,指示使用者手動建立設定檔。
當 AskUserQuestion 可用時,一次收集一個欄位。在每個答案之後,向使用者確認該值(將機密遮罩為僅顯示最後 4 個字元),然後再進入下一個問題。
步驟 1 — 選擇頻道
詢問要啟用哪些頻道(telegram、discord、feishu、qq、weixin)。接受逗號分隔的輸入。簡要描述每個頻道:
- telegram — 最適合個人使用。串流預覽、內嵌權限按鈕。
- discord — 適合團隊使用。伺服器/頻道/使用者層級的存取控制。
- feishu (Lark) — 適用於飛書/Lark 團隊。串流卡片、工具進度、內嵌權限按鈕。
- qq — 僅限 QQ C2C 私人聊天。無內嵌權限按鈕,無串流預覽。權限使用文字
/perm ...命令。 - weixin — 微信 QR 碼登入。僅限單一連結帳號;新的登入會取代前一個。無內嵌權限按鈕,無串流預覽。權限使用文字
/perm ...命令或快速1/2/3回覆。語音訊息僅使用微信自帶的語音轉文字文字;橋接不會轉錄原始語音音訊。
步驟 2 — 為每個頻道收集 Token
對於每個啟用的頻道,一次收集一個憑證。用一句話告訴使用者每個值在哪裡找到。僅在使用者要求協助或表示不知道如何操作時,才顯示完整的指南章節(來自 SKILL_DIR/references/setup-guides.md):
- Telegram:Bot Token → 確認(遮罩)→ Chat ID(參閱指南了解如何取得)→ 確認 → 允許的使用者 ID(可選)。重要: Chat ID 或允許的使用者 ID 至少必須設定一個,否則機器人將拒絕所有訊息。
- Discord:Bot Token → 確認(遮罩)→ 允許的使用者 ID → 允許的頻道 ID(可選)→ 允許的伺服器 ID(可選)。重要: 允許的使用者 ID 或允許的頻道 ID 至少必須設定一個,否則機器人將拒絕所有訊息(預設拒絕)。
- Feishu:App ID → 確認 → App Secret → 確認(遮罩)→ Domain(可選)→ 允許的使用者 ID(可選)。收集憑證後,說明使用者必須完成的兩個階段設定:
- 階段 1(啟動橋接前):(A) 批次新增權限,(B) 啟用機器人功能,(C) 發布第一個版本 + 管理員核准。這使權限和機器人生效。
- 階段 2(需要運行橋接):(D) 執行
/claude-to-im start,(E) 使用長連線模式設定事件(im.message.receive_v1)和回呼(card.action.trigger),(F) 發布第二個版本 + 管理員核准。 - **為什麼需要兩個階段:**飛書在儲存事件訂閱時會驗證 WebSocket 連線——如果橋接未運行,儲存會失敗。橋接需要已發布的權限才能連線。
- 保持為簡短檢查清單——僅在詢問時才顯示完整指南。
- QQ:收集兩個必填欄位,然後是可選欄位:
- QQ App ID(必填)→ 確認
- QQ App Secret(必填)→ 確認(遮罩)
- 告訴使用者:這兩個值可以在 https://q.qq.com/qqbot/openclaw 找到
- 允許的使用者 OpenID(可選,按 Enter 跳過)— 注意:這是
user_openid,不是 QQ 號碼。如果使用者還沒有 openid,可以留空。 - 啟用圖片(可選,預設 true,按 Enter 跳過)— 如果底層提供者不支援圖片輸入,設為 false
- 最大圖片大小 MB(可選,預設 20,按 Enter 跳過)
- 提醒使用者:QQ 第一個版本僅支援 C2C 私人聊天沙箱存取。不支援群組/頻道、內嵌按鈕或串流預覽。
- Weixin:不要要求靜態 token。改為:
- 告訴使用者此頻道使用 QR 碼登入,而非手動輸入憑證。
- 執行
cd SKILL_DIR && npm run weixin:login - 輔助程式會寫入
~/.claude-to-im/runtime/weixin-login.html並嘗試在本地瀏覽器中自動開啟。 - 如果自動開啟失敗,告訴使用者手動開啟該 HTML 檔案並使用微信掃描 QR 碼。
- 等待輔助程式報告成功,然後確認連結的帳號已儲存在本地。
- 簡要說明:連結的微信帳號儲存在
~/.claude-to-im/data/weixin-accounts.json。再次執行輔助程式會取代先前連結的帳號。 - 簡要說明:
CTI_WEIXIN_MEDIA_ENABLED僅控制入站圖片/檔案/影片下載。對於語音訊息,橋接僅接受微信內建語音轉文字傳回的文字。如果微信未提供轉錄文字,橋接會回覆錯誤,而不是下載/轉錄原始音訊。
步驟 3 — 一般設定
詢問執行環境、預設工作目錄、模型和模式:
- 執行環境:
claude(預設)、codex、autoclaude— 使用 Claude Code CLI + Claude Agent SDK(需要安裝claudeCLI)codex— 使用 OpenAI Codex SDK(需要codexCLI;透過codex auth login或OPENAI_API_KEY驗證)auto— 先嘗試 Claude,如果找不到 Claude CLI 則回退到 Codex
- 工作目錄:預設
$CWD - 模型(可選):留空則繼承執行環境的預設模型。如果使用者想要覆蓋,請他們輸入模型名稱。不要硬編碼或建議特定模型名稱——可用模型會隨時間變化。
- 模式:
code(預設)、plan、ask
步驟 4 — 寫入設定檔並驗證
- 顯示所有設定的最終摘要表格(機密遮罩為僅顯示最後 4 個字元)
- 在寫入前要求使用者確認
- 使用 Bash 建立目錄結構:
mkdir -p ~/.claude-to-im/{data,logs,runtime,data/messages} - 使用 Write 建立
~/.claude-to-im/config.env,所有設定以 KEY=VALUE 格式寫入 - 使用 Bash 設定權限:
chmod 600 ~/.claude-to-im/config.env - 驗證 Token——讀取
SKILL_DIR/references/token-validation.md以取得每個平台的正確命令和預期回應。這可以在使用者嘗試啟動守護行程之前捕捉拼寫錯誤和錯誤的憑證。對於微信,成功的 QR 碼登入即視為驗證。 - 使用摘要表格報告結果。如果任何驗證失敗,說明可能的原因以及如何修正。
- 成功時,告訴使用者:「設定完成!執行
/claude-to-im start啟動橋接。」
start
預先檢查: 確認 ~/.claude-to-im/config.env 存在(參閱上方「設定檔檢查」)。如果沒有,守護行程會立即崩潰並留下過時的 PID 檔案。
執行:bash "SKILL_DIR/scripts/daemon.sh" start
將輸出顯示給使用者。如果失敗,告訴使用者:
- 執行
doctor進行診斷:/claude-to-im doctor - 檢查最近的日誌:
/claude-to-im logs
stop
執行:bash "SKILL_DIR/scripts/daemon.sh" stop
status
執行:bash "SKILL_DIR/scripts/daemon.sh" status
logs
從參數中提取可選的行數 N(預設為 50)。
執行:bash "SKILL_DIR/scripts/daemon.sh" logs N
reconfigure
- 從
~/.claude-to-im/config.env讀取目前設定 - 以清晰的表格格式顯示目前設定,所有機密遮罩(僅顯示最後 4 個字元)
- 使用 AskUserQuestion 詢問使用者想要更改什麼
- 收集新值時,告訴使用者在哪裡找到該值;僅在使用者要求協助時才顯示
SKILL_DIR/references/setup-guides.md的完整指南 - 原子地更新設定檔(寫入暫存檔,重新命名)
- 重新驗證任何更改的 Token
- 提醒使用者:「執行
/claude-to-im stop然後/claude-to-im start以套用變更。」
如果使用者在 reconfigure 期間想要切換微信帳號,再次執行 cd SKILL_DIR && npm run weixin:login。每次成功掃描都會取代先前連結的本地帳號。
doctor
執行:bash "SKILL_DIR/scripts/doctor.sh"
顯示結果並針對任何失敗建議修正方法。常見修正:
- SDK cli.js 缺失 →
cd SKILL_DIR && npm install - dist/daemon.mjs 過時 →
cd SKILL_DIR && npm run build - 設定檔缺失 → 執行
setup - 微信帳號缺失/過期 →
cd SKILL_DIR && npm run weixin:login - 微信語音訊息回報缺少語音轉文字 → 啟用微信自帶的語音轉寫功能並重新傳送;橋接本身不會轉錄原始語音音訊
對於更複雜的問題(未收到訊息、權限超時、記憶體過高、過時的 PID 檔案),請閱讀 SKILL_DIR/references/troubleshooting.md 以取得詳細的診斷步驟。
飛書升級注意事項: 如果使用者從此技能的舊版本升級,且飛書回傳權限錯誤(例如串流卡片無法運作、打字指示器失敗、權限按鈕無回應),根本原因幾乎肯定是飛書後端缺少權限或回呼。請引導使用者參閱 SKILL_DIR/references/setup-guides.md 中的「從先前版本升級」章節——他們需要新增新的範圍(cardkit:card:write、cardkit:card:read、im:message:update、im:message.reactions:read、im:message.reactions:write_only),新增 card.action.trigger 回呼,並重新發布應用程式。升級需要兩個發布週期,因為新增回呼需要活躍的 WebSocket 連線(橋接必須正在運行)。
注意事項
- 在輸出中始終遮罩機密(僅顯示最後 4 個字元)——使用者經常在錯誤報告中分享終端機輸出,因此暴露的 Token 會造成安全事件。
- 在啟動守護行程之前始終檢查 config.env——如果沒有,程序會在啟動時崩潰並留下過時的 PID 檔案,從而阻止未來啟動(需要手動清理)。
- 守護行程作為背景 Node.js 程序運行,由平台監控程式管理(macOS 上的 launchd、Linux 上的 setsid、Windows 上的 WinSW/NSSM)。
- 設定檔持久儲存在
~/.claude-to-im/config.env——跨工作階段保留。





