【免费下载链接】Chorus
The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle)
Chorus Daemon 是 Chorus 自带的本地守护进程,它把本地机器变成一个 7x24 在线的AI 智能体运行时:订阅 Chorus 服务端的任务通知,一旦有任务派给这个 agent,就自动在本地唤醒 Claude Code / Codex / Kiro 等无头(headless)编码智能体接活、干活、交活——支持一键远程唤醒,全程不需要人守在终端前。
上面这张演示图:在网页上把一条 Idea 派给远端某台机器的某个目录,本地的 Claude Code 被 Daemon 唤醒后自动接手,打开对话窗口即可实时看它干活。
为什么需要 Chorus Daemon
平时用 Claude Code 这类编码智能体,流程是这样的:打开终端 → 启动 CLI → 手动粘贴任务上下文 → 盯着它跑。任务一旦跨设备、跨时间就断了:你派给 agent 的任务,得等你哪天打开终端手动领下来才会动一下。
Chorus Daemon 补的就是这个缺口,核心机制四件事:
| 环节 | Daemon 做了什么 |
|---|---|
| 订阅 | 连接 Chorus 服务端,订阅 agent 通知流(SSE) |
| 唤醒 | 收到task_assigned事件,spawn 一个 headless 子进程(如claude -p) |
| 上下文 | 唤醒时带上 Chorus MCP 工具,agent 自己查任务、需求结论、验收标准 |
| 会话锚定 | 同一条 Idea 的多次唤醒 resume 同一个 session,上下文不丢 |
效果一句话:把任务派过去,远端 agent 自己就接着干。相关设计思路可参考 docs/blogs/v2ex-daemon-remote-wake.zh.md。
一键安装步骤:从安装到首次唤醒
第 1 步:安装 Chorus CLI
需要 Node.js 环境,一条命令全局安装(无需数据库、无需 Docker):
npm install -g @chorus-aidlc/chorus本地先起一个 Chorus 服务端(内置 PGlite,开箱即用):
chorus # 默认打开 http://localhost:8637第 2 步:创建 API Key 并保存凭据
在 Web 界面Settings → Agents → Create API Key创建密钥(以cho_开头,只显示一次),然后登录保存凭据:
chorus loginchorus login会把url/apiKey写入~/.chorus/daemon.json(权限 0600)。注意它是字段级合并写入——之后重跑 login 轮换密钥,不会丢掉你已配置的cwds、yoloAckAt等其他字段。
也可以一步到位用chorus agents add:它会探测本机已装的编码 agent、安装对应 Chorus 插件并写入凭据:
chorus agents add --agents claude第 3 步:启动 Daemon,观察唤醒
chorus daemon # 前台运行 chorus daemon -d # 后台运行(pidfile + logfile)启动时会打印一个信息横幅:服务端 URL、agent 身份、权限模式(YOLO 会高亮提示)、凭据来源、claude可执行文件检测状态等。第一次在终端以 YOLO 模式启动会有一次性y/N确认,答案记为yoloAckAt,之后不再询问。
此时去网页端把一条 Idea/Task 派给这个 agent 对应的目录——Daemon 收到事件即唤醒本地 agent。每次唤醒的日志长这样:
[Chorus] ▶ wake: task_assigned → task:<uuid> [Chorus] spawning new session <idea-uuid> — take over with: claude --resume <idea-uuid> [Chorus] ✓ wake done: task:<uuid> (exit=0, 1234ms)中间那行claude --resume <idea-uuid>是个彩蛋:你在 daemon 工作目录里执行它,就能直接插进 agent 刚才那场对话,随时人工接管。
最快配置方法:三种启动模式与生命周期管理
| 需求 | 命令 |
|---|---|
| 前台启动 | chorus daemon |
| 后台启动(detached) | chorus daemon -d |
| 查看是否运行(含 pid) | chorus daemon status |
查看日志~/.chorus/daemon.log | chorus daemon logs |
| 重启 | chorus daemon restart |
| 停止 / 强制清理 | chorus daemon stop/stop --force |
| 详细日志 | --verbose或CHORUS_VERBOSE=1 |
后台状态存在~/.chorus/daemon.pid和~/.chorus/daemon.log;pidfile 里记录了启动时间 + 命令行作为身份标识,重启系统后被操作系统复用的旧 pid 会被自动识别为 stale 并清理,不会卡住stop/start。
被唤醒的 agent 在干活时,看板卡片状态(To Do → In Progress → To Verify)和 presence 指示器实时更新。
开机自启配置:把本机变成常驻 AI 智能体节点
想让机器 7x24 挂着接活,推荐用install一键装成 Linux systemd 用户服务:
chorus daemon install --cwd ~/proj # 生成 systemd --user unit 并启用 chorus daemon install --cwd ~/a --cwd ~/b # 同时守护多个目录 chorus daemon uninstall # 卸载服务这条命令替你生成正确的systemd --userunit、执行daemon-reload并enable --now,不用手写 unit 文件。它还会:
- 交互询问 agent 后端(Claude Code / Codex / Kiro),或传
--agent指定;选中的后端写入~/.chorus/daemon.json,unit 本身不带--agent; - 检查所选 CLI 是否在
PATH上,缺失会告警; - 装好后
status/stop/restart/logs自动委托给systemctl/journalctl。
两个踩坑提醒(systemd 环境极简,不加载你的 shell 配置):
- 凭据务必用
chorus login落盘到~/.chorus/daemon.json,而不是只写在~/.zshrc的CHORUS_API_KEY里——否则 unit 看不到凭据,服务会无限 crash-loop; - unit 的
PATH通常不含~/.local/bin,如果claude装在那里,每次唤醒都会 spawn 失败;启动时看到⚠ claude CLI NOT FOUND就该检查这里,也可以用CHORUS_CLAUDE_PATH直接指定绝对路径。
macOS 用户可以按 docs/DAEMON.md 里给出的 launchd plist 模板手动安装,并执行launchctl load加载。
权限模式与多智能体配置
权限模式:YOLO 是默认值
被唤醒的 agent 默认处于YOLO 模式(--dangerously-skip-permissions):有完整 shell、可写文件,因为 daemon 存在的意义就是让它真正完成写代码工作。所以只在可信 / 沙箱环境里跑 daemon。想收紧权限,用 chorus-only 模式,agent 只能调用 Chorus MCP 工具(评论 / 领取 / 汇报 / 状态),不能碰 Bash 和文件:
chorus daemon --chorus-only # 或 CHORUS_CHORUS_ONLY=1一个 Daemon 服务多个独立 agent
~/.chorus/daemon.json的agents[]数组可以让同一个 daemon 进程同时服务多个完全独立的 agent——不同身份、不同权限、不同后端,各用各的连接、唤醒队列和 spawner,一个 agent 挂了不影响其他:
{ "url": "https://chorus.example.com", "agents": [ { "apiKey": "cho_alpha", "agentType": "claude-code", "cwds": ["/home/me/projA"] }, { "apiKey": "cho_beta", "agentType": "kiro", "cwds": ["/home/me/projB"], "permissionMode": "chorus" } ] }每个 agent 还可以在条目上单独配args/env(模型、provider 环境变量等),详见 docs/DAEMON.md 的 "Per-agent CLI arguments and environment" 一节。新增 agent 推荐用chorus login --add(校验密钥后追加,不会覆盖已有 agent)。
选择 agent 后端
Daemon 默认唤醒 Claude Code,也可以指定 Codex、Kiro 等其他后端:
chorus daemon --agent claude-code # 默认 chorus daemon --agent codex chorus daemon --agent kiro解析优先级:--agent参数 →CHORUS_AGENT环境变量 →daemon.json的agent字段 → 默认claude-code。
常见问题排查
| 现象 | 排查方向 |
|---|---|
| 启动即报凭据缺失 | 非 TTY(systemd/nohup)下不会弹交互提示,先chorus login落盘凭据,或传--url/--api-key |
唤醒失败claude找不到 | unit PATH 缺少~/.local/bin,设置Environment=PATH=...或CHORUS_CLAUDE_PATH |
401 Unauthorized | API Key 失效,到 Settings → Agents 重新创建 |
改完daemon.json不生效 | daemon 启动时快照配置,必须chorus daemon restart |
| 想插话 / 接管 | 日志里的claude --resume <idea-uuid>;网页端还能插话、打断、恢复 |
凭据解析顺序(先命中先赢):--url/--api-key参数 →CHORUS_URL/CHORUS_API_KEY环境变量 →~/.chorus/daemon.json→ Claude Code 插件配置。TTY 下全都缺省时,chorus daemon会直接交互式提示输入并保存,无需单独跑chorus login。
小结
- 一条
chorus daemon命令,本地机器即变为 7x24 AI 智能体运行时,网页派单即一键远程唤醒; - 唤醒不是靠超长 prompt,而是把 agent 放进一个能自查上下文的环境:MCP 工具让它自己查任务、需求和验收标准;
- 会话锚定在 Idea 上,跨任务不失忆,人随时可以
--resume插回来; - 后台运行可看(SSE 实时 transcript)、可拦(打断/恢复)、可插话,丢后台也放心;
chorus daemon install一条命令装成开机自启服务,多台机器各挂一个,组成你的 agent 集群。
核心实现都在 CLI 里:daemon 主循环 cli/daemon.mjs、唤醒队列 cli/wake-queue.mjs、Claude 唤醒器 cli/claude-spawner.mjs,配合 docs/DAEMON.md 的完整命令参考,可以深入阅读。
【免费下载链接】Chorus
The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle)
相关推荐
一键唤醒神器:用WOL工具远程开机全攻略
一键唤醒神器:用WOL工具远程开机全攻略 还在为每次都要亲自走到电脑前按电源键而烦恼吗?Wake On LAN技术让你只需一个命令或点击,就能远程唤醒局域网内的
一键唤醒:WOL远程开机工具的完整使用指南
一键唤醒:WOL远程开机工具的完整使用指南 还在为远程开启办公室电脑而烦恼吗?Wake On LAN(WOL)远程唤醒工具让您只需一个命令或点击,就能轻松开启局
如何用URLCheck净化URL?清除跟踪参数与重定向的简单方法
如何用URLCheck净化URL?清除跟踪参数与重定向的简单方法 URLCheck是一款由TrianguloY开发的Android应用,专为净化URL而设计,能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考