外部编程工具接入模式
这篇适合已经跑通 CountBot,并准备把 Codex、Claude Code、OpenCode 这类 CLI 接进 IM 渠道或 Web 聊天的场景。
如果你想先看能力边界,请读 外部编码工具。这篇只讲“怎么接、怎么选、怎么用”。
先决定走哪种模式
| 模式 | 后台配置 | 谁先处理消息 | 更适合什么 |
|---|---|---|---|
AI 模式 | routing_mode=ai | CountBot 主 Agent | 综合助手、混合任务、需要最终解释和收口 |
直通模式 | routing_mode=direct | 外部编程工具 | 持续编码、手机 IM coder 入口、微信 ClawBot 代理 |
一句话理解:
AI 模式:CountBot 先理解,再决定是否调用外部编程工具。直通模式:CountBot 主要负责转发、路由、会话和回传。
共用前置准备
无论你选哪种模式,第一步都一样:
- 打开
设置 -> 编程工具 - 新增或检查一个 profile
- 至少确认
name、command、args、working_dir、session_mode - 先用“检查”功能确认 profile 可运行,再去绑定渠道
当前最常见的 profile 是:
codexclaudeopencode
会话模式怎么选
stateless:只发送当前请求,最干净,但连续编码体验弱history:带最近几条上下文,最适合大多数持续编码场景native:优先用工具原生会话能力,当前claude支持最稳定,其他工具可能回退到history
模式一:AI 模式
AI 模式 下,消息先进入 CountBot 主 Agent,再决定是否调用外部编程工具。
典型链路:
IM 消息
-> CountBot 主 Agent
-> 如有必要,调用 external_coding_agent
-> 外部编程工具执行
-> CountBot 整理结果并回复
怎么配置
- 先把外部编程工具 profile 配好
- 打开
设置 -> IM 渠道 - 进入目标账号的高级功能或路由设置
- 确认
routing_mode = ai - 保存并测试该渠道账号
在这个模式下:
external_coding_profile不是必填项- 你可以让 CountBot 自己判断要不要调工具
- 也可以在消息里显式说“用 codex”或“用 claude”
怎么使用
普通用法:
帮我分析一下这个报错可能是什么原因。
显式指定工具:
用 codex 帮我修这个报错
用 claude 帮我写一个爬虫
用 opencode 帮我审一下这段代码
这个模式的优势是,CountBot 能在工具执行后继续做收口。例如:
用 codex 帮我修这个 bug,修完后再总结一下改动点。
模式二:直通模式
直通模式 下,普通消息会直接转给默认外部编程工具,CountBot 不再先用主 Agent 深度决策。
典型链路:
IM 消息
-> CountBot 渠道路由
-> external_coding_agent
-> 外部编程工具执行
-> CountBot 回写会话并回复
怎么配置
- 先把外部 编程工具 profile 配好
- 打开
设置 -> IM 渠道 - 进入目标账号的高级功能或路由设置
- 设置
routing_mode = direct - 同时设置
external_coding_profile = codex或claude或opencode - 保存并测试该渠道账号
这里有一个硬约束:
- 账号处于
direct时,external_coding_profile必须有效
怎么使用
如果账号默认就是 direct,普通消息会直接转发:
帮我修一下这个 Python 报错
IM 会话里还可以临时切换:
/route direct
/route ai
/route default
/coder codex
/coder claude
/coder default
这些命令只影响当前聊天会话,不会改后台默认配置。
怎么选
优先选 AI 模式:
- 你要的是“综合研发助手”
- 同一条消息里可能既要解释、又要编码、又要调用别的工具
- 你希望最终回复仍然由 CountBot 统一整理
优先选 直通模式:
- 你就是要一个持续编码入口
- 主要场景是改代码、跑命令、反复迭代
- 你希望手机或 IM 端尽快把消息送到
codex/claude
一个常见组合是:
- 飞书或企业微信主助手走
AI 模式 - 微信 ClawBot 或专职 coder 账号走
直通模式
常见问题
明明配置了 profile,但聊天里没有调用
优先检查:
- profile 是否已启用
- 渠道账号的
routing_mode是否正确 direct模式下是否填了external_coding_profile- 当前聊天是否被
/route default或/coder default恢复过
为什么 native 看起来没生效
先确认当前工具是否真的稳定支持 native。当前 claude 支持最好,其他工具可能会回退到 history。
为什么多个 profile 同时启用后不总是命中我想要的那个
如果你同时启用了多个工具,最好在消息里明确写:
用 codex 帮我处理用 claude 帮我继续