除了 OpenClaw,你还有另外一种选择
AI 编程工具的两种思路
当我们谈论 AI 辅助编程工具时,大多数人第一时间想到的是 IDE 插件——安装、授权、在编辑器里调用。这条路线已经相当成熟:GitHub Copilot、Cursor、Windsurf,都是典型代表。
但还有另一种思路:不动 IDE,通过即时通讯工具远程操控 AI 编程助手。
你在会议室开会,手机弹出一条飞书消息,随手输入 /ask 帮我把用户登录接口改成 JWT 认证,几十秒后,Claude Code 已经在你的服务器上完成了修改。你甚至不需要打开笔记本电脑。
这两种思路没有高下之分,解决的是不同场景下的不同问题。今天,我们来聊聊第二种思路的一个具体实现——ChatCC。
OpenClaw 是什么
在展开 ChatCC 之前,先简单说说 OpenClaw。
OpenClaw 是一个运行在本地设备上的通用个人 AI 助手,支持 20+ 消息平台(WhatsApp、Telegram、Slack、Discord、飞书等),可接入 ChatGPT、Claude、Gemini 等多个模型,提供日常 AI 对话、语音交互、技能系统扩展等能力。
如果你需要一个跨平台的统一 AI 助手,OpenClaw 是一个不错的选择。
但如果你的需求是:远程控制本地 Claude Code、移动端操作、不依赖特定 IDE、与团队飞书工作流深度整合——那么 ChatCC 可能更适合你。
ChatCC 是什么
ChatCC 是一个用 Go 编写的飞书机器人服务。Chat(聊天)+ CC(Claude Code + Command),名字本身就概括了它的核心理念:
通过飞书消息远程操控 Claude Code 和本地程序。
ChatCC 运行在你本地或服务器上,通过飞书开放平台的 WebSocket 长连接与飞书云端保持实时通信。当你在飞书中 @机器人 或发送命令消息时,ChatCC 接收到请求,调用本地安装的 Claude Code 执行任务,再将结果回复给你。
整个过程不需要公网 IP,不需要开放任何防火墙端口,WebSocket 长连接从内网主动发出,对网络环境没有特殊要求。
核心特性详解
1. 双模式 Claude Code 集成
ChatCC 提供两种截然不同的交互模式,满足不同场景需求:
无状态模式(/ask)
/ask 解释一下这个项目的目录结构
/ask --cwd /path/to/project 帮我写单元测试
/ask @server 查看最近的错误日志每次调用独立执行,底层使用 claude -p 一次性调用。适合快速查询、代码解释、单次任务。默认超时 50 分钟,足以处理复杂的代码分析任务。
持久会话模式(/session + /s)
/session start @myproject # 启动 tmux 持久会话
/s 先看看 README # 发送消息到活跃会话
/s 现在帮我重构 auth 模块 # 继续上下文对话
/session status # 查看当前会话详情
/session list # 列出所有活跃会话
/session stop # 关闭会话持久会话模式基于 tmux,Claude Code 在 tmux 窗格中持续运行,保留完整的对话上下文。适合需要多轮交互的复杂开发任务。
两种模式可以灵活切换,非命令消息会自动路由:有活跃 tmux 会话时发给会话,否则作为 /ask 处理。
2. 交互式输入智能处理
当 Claude Code 在会话中遇到交互式提示(如确认操作、yes/no 问题等)时,ChatCC 会自动检测并提示你:
⚠️ 检测到交互式提示,Claude Code 正在等待输入。
💡 请使用 /s 命令发送您的响应。系统能识别 (y/n)、[yes/no]、continue?、press enter 等常见交互模式,你只需通过 /s yes 或 /s n 回应即可。这个功能让远程操控 Claude Code 变得更加顺畅——你不会因为错过一个确认提示而导致任务卡住。
3. Claude Code Hooks 双向回调
ChatCC 在 9876 端口启动一个 HTTP 服务,提供 /notify 和 /health 端点。
这意味着 Claude Code 在执行过程中可以主动向飞书推送消息——文件修改、任务完成、重要决策点……你不需要盯着终端,飞书消息会主动告诉你 Claude Code 正在做什么。
在 Claude Code 配置 Hooks:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "curl -sS http://localhost:9876/notify -H 'Content-Type: application/json' -d '{\"event\":\"file_changed\",\"message\":\"Claude 修改了文件\",\"chat_id\":\"oc_xxx\"}'"
}
]
}
]
}
}Hook HTTP API 支持 POST 通知和 GET 健康检查:
POST http://localhost:9876/notify
Content-Type: application/json
{
"event": "task_complete",
"message": "任务已完成: 重构了认证模块",
"chat_id": "oc_xxx" // 可选,指定推送到哪个飞书聊天
}这是真正的双向通信:你控制 Claude Code,Claude Code 也能主动汇报进度。
4. 安全控制体系
对于一个能远程执行代码的工具,安全设计至关重要。ChatCC 提供了多层安全控制:
- 用户白名单:只有配置中列出的飞书用户 ID 才能使用机器人
- 群组白名单:可限制机器人只在指定群聊中响应
- Shell 命令白名单:
/shell命令只能执行预先配置的允许命令 - 危险模式开关:
/danger on|off动态控制 Claude Code 的权限绕过行为 - 嵌套会话保护:自动过滤
CLAUDECODE、ANTHROPIC_*等环境变量,避免在 Claude Code 环境中启动子进程时出现嵌套检测错误
即便机器人 Token 泄露,未授权用户也无法通过机器人执行任何操作。
5. 长消息智能分块
Claude Code 的输出经常很长。ChatCC 会自动将超过 3500 字符的消息分块发送,避免消息截断导致信息丢失。分块时会智能选择段落、句子边界,确保内容完整性,每条分块消息标注序号(如 [1/3], [2/3], [3/3])。
分块大小可自定义:
max_chunk_size: 3500 # 默认 3500 字符6. 后台运行与日志管理
ChatCC 编译为单个二进制文件,内置完整的守护进程支持:
chatcc start --config config.local.yaml # 后台启动
chatcc stop # 停止
chatcc restart --config config.local.yaml # 重启
chatcc status # 查看状态
chatcc console --config config.local.yaml # 前台运行(调试用)日志按天滚动,自动 gzip 压缩历史日志(logs/chatcc-YYYY-MM-DD.log.gz),不需要额外配置 logrotate。console 模式日志直接输出到终端,方便调试。
7. 热重载与项目别名
修改配置文件后,发送 /reload 命令,配置立即生效,无需重启服务、无需重连飞书。
项目别名让你不需要记忆绝对路径:
projects:
server: "/home/user/projects/backend"
devops: "/home/user/infrastructure"
web: "/home/user/projects/frontend"配置好后,直接用 /ask @server 或 /session start @devops 即可。使用 /project(或 /p)命令可以随时查看所有已配置的项目别名。
完整命令列表
| 命令 | 说明 | 示例 |
|---|---|---|
/ask <提示词> | Claude Code 无状态问答 | /ask 帮我看看有什么文件 |
/ask --cwd <目录> <提示词> | 指定工作目录 | /ask --cwd /path/to/project 分析结构 |
/ask @别名 <提示词> | 用项目别名 | /ask @server 看看迁移方案 |
/session start [目录] | 启动 tmux 持久会话 | /session start @webapp |
/session status | 查看当前会话详情 | /session status |
/session list | 列出所有活跃会话 | /session list |
/session kill <会话名> | 终止指定会话 | /session kill cc-chat-xxx |
/session stop | 关闭当前会话 | /session stop |
/s <消息> | 发送到活跃会话 | /s 帮我重构这个函数 |
/shell <命令> | 执行白名单 shell 命令 | /shell docker ps |
/project 或 /p | 查看已配置的项目别名 | /project |
/status | 查看系统状态和活跃会话 | /status |
/danger on|off | 切换权限绕过模式 | /danger on |
/reload | 热重载配置文件 | /reload |
/help [命令] | 帮助信息 | /help ask |
非命令消息:如有活跃 tmux 会话则发送到会话,否则等同 /ask。
ChatCC vs OpenClaw 对比
理解两个工具各自的定位和优势,有助于做出正确选择。
| 维度 | OpenClaw | ChatCC |
|---|---|---|
| 定位 | 通用个人 AI 助手,支持多平台 | 专注飞书的 Claude Code 远程控制网关 |
| 核心功能 | 多模型 AI 对话(ChatGPT/Claude/Gemini) | Claude Code 专用执行环境(本地开发工具) |
| 消息平台 | 20+ 平台(WhatsApp/Telegram/Slack 等) | 仅飞书(深度集成) |
| 技术栈 | Node.js | Go(单二进制部署) |
| 本地执行 | 主要调用 AI API | 直接在本地执行 Claude Code(tmux 持久会话) |
| 配置复杂度 | 多平台 + 多模型认证 | 仅需飞书 app_id/app_secret |
| 目标用户 | 需要跨平台 AI 助手的个人用户 | 需要远程控制开发环境的开发者 |
选择 ChatCC 的场景
- 你需要通过飞书远程控制本地 Claude Code,访问本地文件系统,执行代码分析和自动化任务
- 你的团队深度使用飞书作为协作工具,希望开发工作流与飞书打通
- 你在企业内网环境工作,需要从外部安全访问内网开发机
- 你希望在移动端或非编码场景(会议、外出)也能操控 Claude Code
- 你追求轻量部署——单平台、单二进制、5 分钟部署完成
- 你管理多个服务器/项目,希望通过统一的飞书界面远程控制
选择 OpenClaw 的场景
- 你需要跨平台统一 AI 助手——在 WhatsApp、Telegram、Slack 等多平台使用同一个 AI
- 你需要多模型 AI 对话——同时使用 OpenAI、Claude、Gemini,支持故障转移和自动切换
- 你需要语音和多模态交互能力
- 团队熟悉 Node.js/TypeScript 生态,希望二次开发
两者并不互斥。完全可以用 OpenClaw 做日常 AI 助手处理通用对话,同时在服务器上运行 ChatCC 处理 Claude Code 相关的开发任务:
WhatsApp/Telegram ──→ OpenClaw ──→ 日常 AI 对话
飞书 ──→ ChatCC ──→ 远程控制 Claude Code各司其职,互不干扰。
快速上手
第一步:创建飞书自建应用
- 登录飞书开放平台,创建一个企业自建应用
- 添加「机器人」能力
- 在「权限管理」中开启以下权限:
im:message(接收消息)im:message:send_as_bot(发送消息)im:message:patch(更新消息)
- 在「事件订阅」中选择 WebSocket 模式,订阅
im.message.receive_v1事件 - 发布应用版本
- 获取 App ID 和 App Secret
第二步:安装 Claude Code
npm install -g @anthropic-ai/claude-code确保 claude 命令可在 PATH 中访问。
第三步:安装 ChatCC
git clone https://github.com/CritasWang/chat-cc.git
cd chat-cc
go build -o chatcc .或直接下载发布版二进制文件。
第四步:配置
cp config.yaml config.local.yaml编辑 config.local.yaml:
feishu:
app_id: "cli_xxxxxxxxxxxxxxxx"
app_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
security:
allowed_users:
- "your_feishu_user_id"
allowed_shells:
- "git status"
- "git log --oneline -10"
- "docker ps"
# 超时配置(分钟)
claude_ask_timeout: 50
claude_session_timeout: 50
projects:
server: "/home/user/backend"
web: "/home/user/frontend"也支持环境变量方式配置:
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"第五步:启动
./chatcc start --config config.local.yaml
./chatcc status在飞书中找到你的机器人,发送 /help,开始使用。
进阶用法
配置 Claude Code Hooks 回调
在 ~/.claude/settings.json 中配置 Hooks,让 Claude Code 主动回报进度:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit|Bash",
"hooks": [
{
"type": "command",
"command": "curl -sS http://localhost:9876/notify -H 'Content-Type: application/json' -d '{\"event\":\"file_changed\",\"message\":\"Claude 修改了文件\",\"chat_id\":\"oc_xxx\"}'"
}
]
}
]
}
}每次 Claude Code 完成文件写入或执行命令后,你的飞书会收到通知。
群聊协作模式
将机器人加入团队群聊,配置群聊 ID 到白名单,团队成员都可以 @机器人 发起任务。任务执行过程和结果对整个群组可见——这在结对编程或代码 Review 场景中非常有用。
结合 tmux 调试
ChatCC 的会话模式本质上管理的是 tmux 会话,你也可以直接登录服务器查看 tmux 中 Claude Code 的实时输出,双向调试非常方便:
# 通过 /session list 查看会话名
tmux attach -t cc-chat-xxx同时 ChatCC 支持 console 前台模式,日志直接输出到终端,便于排查问题。
总结
OpenClaw 和 ChatCC 代表了两种不同的设计哲学:
- OpenClaw:通用 AI 助手,跨平台统一入口,覆盖多种模型和交互方式
- ChatCC:专注开发者场景,让飞书成为 Claude Code 的远程控制台
如果你的工作流已经深度整合飞书,如果你需要远程控制开发环境,如果你想让 AI 编程任务变得可观测、可协作——不妨试试 ChatCC。
它的安装部署只需 5 分钟,单二进制文件、零依赖(除了 Go 和 Claude Code),代码完全开源可审计,WebSocket 架构意味着你不需要改动任何网络配置。对于个人开发者和小团队来说,这是一个轻量、灵活、实用的选择。