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

退出码

注意

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-coreTurnEvent 定义。

前端可以用原生 EventSource 消费,也可以借助任何 SSE 客户端库。daemon 已经配置了 CORS,本地调试前端可以直接连。

典型应用

下一步