Skip to content

AtomCode Daemon API 端点完整清单

基于 SPA JS 反编译、路径模糊测试、端点行为验证的综合分析 2026-06-21


1. 认证管理

GET /auth/status

检查登录状态。

响应:

json
{
  "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 流。

请求参数:

参数类型必填说明
messagestring用户消息
streambool流式模式(默认 true)
providerstring指定提供商名
systemstring系统提示词
session_idstring已有会话 ID(多轮对话)
temperaturenumber温度 0-2
max_tokensnumber最大输出 token

SSE 事件类型(10种):

类型说明
reasoning模型推理过程
text输出文本片段
tokenstoken 用量统计
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_effort

5. 会话管理

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 个)

端点方法认证方式
/healthGET
/auth/statusGET
/auth/login/startPOST
/auth/login/:id/pollPOST
/auth/login/:idDELETE
/auth/logoutPOST
/chatPOSTBearer token
/chat/permissionPOSTBearer token
/live/messagePOSTBearer token
/live/providerPOSTBearer token
/live/reasoning_effortPOSTBearer token
/live/permissionPOSTBearer token
/modelsGETBearer token
/providersGETBearer token
/providersPOSTBearer token
/providers/:namePATCHBearer token
/providers/:nameDELETEBearer token
/providers/:name/defaultPOSTBearer token
/providers/:name/thinkingPATCHBearer token
/sessionsGETBearer token
/sessionsPOSTBearer token
/sessions/searchGETBearer token
/projectsGETBearer token
/projectGETBearer token
/projects/:hash/sessions/:idGET/DELETEBearer token
/projects/:hash/sessions/:id/renamePATCHBearer token
/configGETBearer token
/config/reloadPOSTBearer token
/skillsGETBearer token
/fs/listGETBearer token
/fs/mkdirPOSTBearer token
/cdPOSTBearer token
/tunnel/statusGETBearer token
/shutdownPOSTBearer token
/codingplan/setupPOSTBearer token

逆向命令索引

bash
# 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 -u

13. 关于前端 SPA 路由

以下路径不是 API,而是返回同一个 Web UI HTML(SPA 单页应用):

/  /v1/*  /healthz  /readyz  /metrics  /debug
/version  /info  /status  /api*  /login  /setup

所有未匹配的路由都 fallback 到 SPA HTML。

基于 VitePress 构建 · AtomCode v4.25.3 逆向工程分析文档