Claudio让Claude Code支持远程操作与并行任务
Claudio通过REST API和网页界面封装Claude Code,支持浏览器交互、手机访问及变更审查。其任务编排让并行工作者各用独立git worktree,并通过CLI参数、流式协议和文件与Claude Code通信。
AI 深度解读
Claude Code 跑在终端里,离开电脑后怎么接着聊、查看进度、处理权限请求?Claudio 的做法是把 CLI 包成服务,再接上浏览器、手机网页应用和 Linux 桌面端。它没有换掉 Claude Code,而是给它补了一套远程操作和任务管理界面。
真正值得看的是服务化之后的边界:并行任务怎样隔离、改动怎样验收、账号额度怎样接续,以及开放端口后,谁能动用你的 Claude 账号和本地文件。
包一层服务,能接管 Claude Code 到什么程度
Claudio 在自己的机器或服务器上运行,使用自己的 Claude 登录。作者强调,它不抓取终端画面、不调用未公开接口,也不自行实现第二套登录,只使用 CLI 提供的参数、流协议和落盘文件。
例如,对话通过 claude -p --input-format stream-json --output-format stream-json 运行,认证状态通过 claude auth status --json 获取,历史记录来自 $CLAUDE_CONFIG_DIR/projects/*/*.jsonl。使用了哪些接口,列在 docs/cli-surfaces.md。
Claudio 的能力上限,就是 Claude Code CLI 暴露出来的能力。
因此,Web artifacts 和 claude.ai chat memory 没有对应 CLI 接口,Claudio 就不支持。
每个聊天背后是一个长期运行的 claude 进程,通过 stdin 接收输入;进程退出后再用 --resume 续接。下面的请求会在指定项目中启动一次聊天:
curl -X POST http://localhost:8797/api/chats \
-H 'Content-Type: application/json' \
-d '{"prompt": "Add a unit test for parseDuration", "cwd": "/workspace/my-app"}'
要看清 cwd 这一行:它指定代理操作的目录。请求还支持 worktree,用于创建指定名称的 git worktree,以及用于结构化输出的 jsonSchema。
后续操作包括 POST /api/chats/:id/messages,以及聊天路径下的 /stop、/interrupt、/resume、/fork。单个聊天用 GET /api/chats/:id/stream 跟踪;权限、提问和计划审批可在界面回答,也可调用 POST /api/chats/:id/permissions/:requestId。
界面通过服务端事件(SSE)接收更新,不做轮询。统一入口 GET /api/events 推送聊天、待处理提示、任务和账号轮换,断线后用 Last-Event-ID 恢复。接口文档在 /docs,OpenAPI 3.1 定义在 /openapi.json;开启认证后需要发送 Authorization: Bearer <token>。
多个代理同时干活,关键在合并之后
Claudio 的 orchestration 是任务图:多个 worker 并行执行,每个使用独立的 git worktree,随后把分支合入一个集成分支。入口是 POST /api/orchestrations,界面可以逐步查看执行状态。
worktree 让代理各有工作目录,减少直接互相覆盖文件的机会。但代码能合并,不代表功能能一起运行。作者安排了后续验证阶段,在集成分支上执行构建、测试,并设置超时,之后可以提供创建 PR 的选项。
这里有两个明确限制:图引擎需要设置 worktree: true 才能运行这些检查;worker 无法跨服务重启存活。被重启打断的任务会标记为 interrupted,仍有尝试次数时,再创建新的执行续接聊天。
多账号也是围绕任务接续设计的。每个账号有独立的 CLAUDE_CONFIG_DIR,各自登录一次。Claudio 按额度窗口读取用量,把新工作分配给仍有额度的账号;某轮触及限制,则在下一个账号重放该轮,全部耗尽才等待重置。另有小工具 claudio-accounts,位于 packages/accounts。原文没有说明重放时如何避免重复副作用,这一点不能自行补全。
审查界面则把 git diff 和聊天记录放在一起,每次编辑附带 Claude 在编辑前写下的句子。这能帮助定位修改意图,但那句话仍是代理的解释,正确性要靠代码和验证结果判断。
任务看板能自动派活,部署边界得自己守住
导入目录后,项目会获得任务看板,支持 AGN-12 风格编号、五个固定列、epics 和 milestones。团队成员对应带角色的 Claude Code agent 文件。开启 flow 后,卡片进入某列即可启动对应角色,只有用户能把卡片移到 Done。
Claudio 还通过 --settings 传入只含自身 hooks 的设置文件,用 PreToolUse 限制 push、--no-verify、worktree 外的递归删除和写入秘密。作者称这些限制在 bypassPermissions 下也有效;编排 worker 和 flow 默认启用,普通聊天按项目配置,细节在 docs/guards.md。
Docker 的启动方式如下,三个具名卷分别保存配置、数据和工作目录:
docker run -d --init --name claudio --restart unless-stopped -p 127.0.0.1:8797:8797 \
-v claudio-config:/home/node/.claude -v claudio-data:/data -v claudio-workspace:/workspace \
ghcr.io/yeyo11/claudio
要留意 -p 127.0.0.1:8797:8797 的绑定范围,并保留三个卷名,否则替换容器更新时可能重新使用空卷。首次启动生成 owner token,可通过 docker logs claudio 查看,再进入设置助手登录 Claude。
源码运行要求 Node 22+、pnpm 10,以及 PATH 中已登录的 claude。克隆项目后执行 pnpm install、pnpm dev,API 位于 :8797,UI 位于 :5181。桌面版支持 Linux x86_64,提供 .deb 和 AppImage,使用本机 claude 与 ~/.claude,没有沙箱,聊天默认采用 acceptEdits。
源码版和桌面版默认关闭认证,不能直接照搬到公网。
认证关闭时,能访问端口的人就能用你的账号启动聊天、读取机器上的全部对话记录。认证模式包括 none、token 和 oidc:token 只存 SHA-256;OIDC 只验证 JWT,不负责登录。Claudio 不终止 TLS,需要前置代理,配置说明在 docs/securing.md。
我的判断
作者把 CLI 接口、任务隔离、集成验证和人工验收串起来,方向是合理的。对已经使用 Claude Code、又需要离开工位继续管理任务的人,它比单独留一个终端会话提供了更多操作入口。
但原文给的是实现说明,没有并行效率、任务成功率、恢复可靠性或安全测试的对照数据,无法据此认定它比终端加远程连接更高效。尤其是多账号重放、自动合并和权限 hooks,都需要结合实际任务验证。
Claudio 是 Agentry 的 Claude 专用分支,采用 MIT 许可证,与 Anthropic 无关联。路线图目前没有计划中的新功能,原生应用商店壳、按用户推送、离线使用和 OIDC 浏览器登录流程均暂不做。手机可访问,也不代表这些体验已经齐全。
能拿来做什么
- 如果经常让 Claude Code 修改前端或 Node 项目,可以先在本机通过聊天 API 提交一个范围明确的任务,检查目录选择、事件推送和权限回复能否完整走通。
- 尝试并行任务时,先拆成依赖较少的改动,并为集成分支配置现有构建和测试;确认
worktree: true生效,再评估是否值得扩大使用。 - 开启看板 flow 前,先把角色和验收要求写清楚,并保留人工移动到 Done 的步骤。代理结束运行,只能说明执行停止。
- 需要从手机远程访问时,先配置认证和 TLS 代理,再开放访问入口;不要把本机默认配置直接变成远程服务。