Headless 与 Daemon
AtomCode 除了交互式 TUI,还提供两种无头运行方式:CLI 的 -p headless 模式适合脚本与 CI;atomcode-daemon 则是一个基于 HTTP + SSE 的 API 服务,可以被任意客户端调用。
Headless CLI 模式
在 atomcode 后加上 -p / --prompt,即可单次执行一条任务并直接把回复写到 stdout(类似 Claude Code 的 -p 模式):
atomcode -p "简要介绍这个仓库"
默认只输出 AI 最终的回复文本,方便 pipe 到其他命令。工具调用、token 用量等信息不会污染 stdout。
常用 headless 参数
| 参数 | 说明 |
|---|---|
-p, --prompt TEXT | 要执行的任务描述 |
--prompt-file PATH | 从文件读取 prompt(适合长文本,与 -p 互斥) |
-v, --verbose | 把工具调用日志、token 用量、turn 摘要打到 stderr,不影响 stdout |
--max-turns N | 强制上限 N 轮 LLM 调用,避免 agent 在长任务里无限跑 |
--disable-tools LIST | 禁用特定工具,比如 bash,web_fetch |
-C PATH | 工作目录 |
--provider / --model | 临时覆盖 provider 或模型 |
示例
# 把当前项目总结写进 README
atomcode -p "总结项目结构并写成 README 草稿" > README.draft.md
# 在 CI 里跑一轮自动修复
atomcode -p "跑 pnpm lint 并修复所有报错,不修改测试文件" \
--max-turns 30 --disable-tools web_search,web_fetch
# 从文件读取 prompt
atomcode --prompt-file task.md -v 2> run.log
# 指定本地 Ollama,完全离线
atomcode -p "解释这段代码" --provider local --model qwen2.5:14b
退出码
0—— 正常结束- 非 0 —— 出现错误。错误信息写到 stderr,具体含义参见
-v日志
注意
Headless 模式下没有交互式的权限确认对话框。破坏性命令默认会被拒绝,而不是弹出对话框。如果你需要让它在 CI 里跑某些 "危险但必要" 的操作,最好通过 .atomcode.md 明确授权,或者通过 --disable-tools bash 彻底关闭相关工具。
atomcode-daemon
atomcode-daemon 是独立的二进制,直接复用 atomcode-core。它对外暴露 HTTP + Server-Sent Events 接口,可以被任意 Web 前端、IDE 插件、编辑器扩展消费。
启动
# 从源码构建
cargo run -p atomcode-daemon
# 或通过编译好的二进制
atomcode-daemon
默认监听一个本地端口(详见启动日志输出),并读取与 CLI 相同的 ~/.atomcode/config.toml。
主要端点
| Method + Path | 说明 |
|---|---|
GET /health | 健康检查 |
GET /sessions | 列出所有会话 |
POST /sessions | 创建一个新会话 |
GET /sessions/search | 按关键词搜索历史会话 |
GET /projects | 列出所有有过会话的项目 |
GET /projects/:hash/sessions | 列出某个项目下的会话 |
GET /projects/:hash/sessions/:id | 查看单个会话的详细消息 |
DELETE /projects/:hash/sessions/:id | 删除单个会话 |
PATCH /projects/:hash/sessions/:id/rename | 重命名会话 |
GET /project | 获取当前工作目录相关的项目状态 |
POST /cd | 切换工作目录 |
GET /models | 列出当前配置中的所有可用 provider / model |
POST /chat | 发送一条 prompt,返回 SSE 流式响应 |
POST /chat/stop | 停止某个正在进行的 /chat 请求 |
SSE 流式聊天
POST /chat 返回的 SSE 流使用的事件包含:AI 增量文本、工具调用开始 / 结束、token 统计、错误等。具体事件 schema 见 atomcode-core 的 TurnEvent 定义。
前端可以用原生 EventSource 消费,也可以借助任何 SSE 客户端库。daemon 已经配置了 CORS,本地调试前端可以直接连。
典型应用
- 编辑器插件/IDE 扩展(把 atomcode 嵌入 VSCode / JetBrains)
- 自建 Web UI(把终端 agent 搬到浏览器)
- 内网协作 / 团队共享会话历史