AtomCode Daemon API 端点完整清单
基于 SPA JS 反编译、路径模糊测试、端点行为验证的综合分析 2026-06-21
1. 认证管理
GET /auth/status
检查登录状态。
响应:
{
"logged_in": true,
"auth_path": "/home/cc11001100/.atomcode/auth.toml",
"user": {"id": "...", "username": "...", "name": "...", "email": "...", "avatar_url": "..."},
"token": {"token_type": "Bearer", "expires_in": 601397, "created_at": 1781981437, "has_refresh_token": true}
}POST /auth/login/start
发起 OAuth 登录。
请求: {"open_browser": false} 响应: {"login_id": "uuid", "url": "https://acs.atomgit.com/s/xxx", "expires_in_seconds": 600}
POST /auth/login/:id/poll
轮询登录结果,建议间隔 2 秒,最长 600 秒。
| 场景 | 响应 |
|---|---|
| 成功 | {"status": "authorized", "user": {...}} |
| 等待 | {"login_pending": true, "message": "..."} |
| 过期 | {"error": "Login session not found or expired"} |
DELETE /auth/login/:id
取消登录会话。
POST /auth/logout
登出。删除 ~/.atomcode/auth.toml,不可逆。
响应: {"logged_in": false, "auth_path": "...", "user": null, "token": null}
2. 聊天
POST /chat
发送聊天消息,返回 SSE 流。
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| message | string | 是 | 用户消息 |
| stream | bool | 否 | 流式模式(默认 true) |
| provider | string | 否 | 指定提供商名 |
| system | string | 否 | 系统提示词 |
| session_id | string | 否 | 已有会话 ID(多轮对话) |
| temperature | number | 否 | 温度 0-2 |
| max_tokens | number | 否 | 最大输出 token |
SSE 事件类型(10种):
| 类型 | 说明 |
|---|---|
| reasoning | 模型推理过程 |
| text | 输出文本片段 |
| tokens | token 用量统计 |
| tool_start | 工具调用开始 |
| tool_output | 工具输出块(中间进度) |
| tool_result | 工具调用结果 |
| error | 错误信息 |
| done | 生成完成 |
| stopped | 用户手动停止 |
POST /chat/permission
工具调用权限审批。
请求: {"session_id": "uuid", "decision": "allow|deny", "tool_name": "bash"} 响应: {"error": "no pending permission for session", "success": false}
3. 实时/在线会话(Live 端点)
这些端点在 Web UI 聊天时用于实时控制。
POST /live/message
向在线会话注入消息。
请求: {"message": "...", "images": [...], "provider": "...", "session_id": "..."} 响应: {"accepted": true}
POST /live/provider
实时切换提供商。
请求: {"provider": "name"} 响应: {"ok": true}
POST /live/reasoning_effort
实时设置推理力度。
请求: {"reasoning_effort": "high|medium|low", "provider": "..."} 响应: {"ok": true}
POST /live/permission
实时审批工具调用。
请求: {"decision": "allow|deny", "tool_name": "bash"} 响应: {"accepted": true}
4. 模型与提供商
GET /models
列出可用模型。
响应:[{ "provider": "...", "model": "...", "provider_type": "openai", "is_default": bool, "effort_applicable": bool }]
GET /providers
列出提供商配置。
响应:{ "providers": [...], "default_provider": "..." }
POST /providers
创建新提供商。
请求:{"name": "...", "type": "openai|claude|ollama", "model": "...", "base_url": "...", "api_key": "...", "context_window": 128000, "is_default": false}
PATCH /providers/:name
更新提供商(含 thinking 设置)。
DELETE /providers/:name
删除提供商,HTTP 200 成功。
POST /providers/:name/default
设为默认提供商。
PATCH /providers/:name/thinking
更新思考模式配置。支持字段:
thinking_enabled, thinking_budget, thinking_type, thinking_keep, reasoning_effort5. 会话管理
GET /sessions
列出所有会话。
POST /sessions
创建新会话。
GET /sessions/search?q=keyword
搜索会话。返回列表。
GET /projects
列出所有项目。
GET /project
获取当前项目信息。
响应:{"working_dir": "...", "recent_dirs": [], "name": "..."}
GET /projects/:hash/sessions/:id
获取会话详细内容。
DELETE /projects/:hash/sessions/:id
删除会话。
PATCH /projects/:hash/sessions/:id/rename
重命名会话。
请求:{"name": "新名称"}
6. 配置
GET /config
获取当前配置。
响应:provider 列表、default_provider、path、default_workdir
POST /config/reload
从磁盘重新加载 ~/.atomcode/config.toml。
7. 技能
GET /skills
列出所有可用技能。
响应:47 个技能的定义列表(技能属于 atomcode-skills.git 仓库)。
8. 文件系统
GET /fs/list?path=URI_ENCODED_PATH
列出指定目录内容。
响应:{"dirs": [...], "files": [...], "path": "..."}
POST /fs/mkdir
创建目录。
请求:{"path": "/tmp/test"} 响应:{"path": "/tmp/test"}
9. 工作目录
POST /cd
切换 daemon 的工作目录。
请求:{"path": "/path/to/project"} 或 {"path": "-"}(返回上一级)
10. 网络隧道
GET /tunnel/status
远程访问隧道状态。
响应:{"bind_host": "127.0.0.1", "port": 13456, "reachable": false, "remote_url": null}
用于远程 IDE 连接场景。
11. 健康与运维
GET /health
健康检查。
响应:{"status": "ok", "version": "4.25.3", "service": "atomcode-daemon", "binary_hash": "..."}
POST /shutdown
关闭 daemon(HTTP 200)。
12. 综合端点索引(共 ~35 个)
| 端点 | 方法 | 认证方式 |
|---|---|---|
| /health | GET | 无 |
| /auth/status | GET | 无 |
| /auth/login/start | POST | 无 |
| /auth/login/:id/poll | POST | 无 |
| /auth/login/:id | DELETE | 无 |
| /auth/logout | POST | 无 |
| /chat | POST | Bearer token |
| /chat/permission | POST | Bearer token |
| /live/message | POST | Bearer token |
| /live/provider | POST | Bearer token |
| /live/reasoning_effort | POST | Bearer token |
| /live/permission | POST | Bearer token |
| /models | GET | Bearer token |
| /providers | GET | Bearer token |
| /providers | POST | Bearer token |
| /providers/:name | PATCH | Bearer token |
| /providers/:name | DELETE | Bearer token |
| /providers/:name/default | POST | Bearer token |
| /providers/:name/thinking | PATCH | Bearer token |
| /sessions | GET | Bearer token |
| /sessions | POST | Bearer token |
| /sessions/search | GET | Bearer token |
| /projects | GET | Bearer token |
| /project | GET | Bearer token |
| /projects/:hash/sessions/:id | GET/DELETE | Bearer token |
| /projects/:hash/sessions/:id/rename | PATCH | Bearer token |
| /config | GET | Bearer token |
| /config/reload | POST | Bearer token |
| /skills | GET | Bearer token |
| /fs/list | GET | Bearer token |
| /fs/mkdir | POST | Bearer token |
| /cd | POST | Bearer token |
| /tunnel/status | GET | Bearer token |
| /shutdown | POST | Bearer token |
| /codingplan/setup | POST | Bearer token |
逆向命令索引
# 1. 从二进制提取所有 API 端点
strings atomcode.bin.bak | grep -E "^/[a-z]" | grep -v "^/rustc\|^/tmp\|^/usr\|^/home\|^/dev\|^/proc\|^/sys\|^/etc\|" | sort -u
# 2. 从运行时 SPA 提取映射
curl -s http://localhost:13457/assets/index-*.js 2>/dev/null | \
grep -oP '"[a-z]+/[a-z_-]+"' | sort -u
# 输出: /auth/status /chat /config /live /providers /sessions /skills /tunnel/status ...
# 3. 健康检查
curl -s http://localhost:13456/health | python3 -m json.tool
# 4. 提取所有请求结构体
strings atomcode.bin.bak | grep -E "struct (Create|Patch|Stop|Rename|Change|FsMkdir|LoginStart|Live)Req" | sort -u
# 输出: 10+ 个请求结构体
# 5. 提取所有响应结构体
strings atomcode.bin.bak | grep -E "struct (Chat|Live[A-Z]|Auth|Status)Resp" | sort -u13. 关于前端 SPA 路由
以下路径不是 API,而是返回同一个 Web UI HTML(SPA 单页应用):
/ /v1/* /healthz /readyz /metrics /debug
/version /info /status /api* /login /setup所有未匹配的路由都 fallback 到 SPA HTML。