Skip to content

AtomCode 深度二进制分析 — 隐藏的 API、环境变量与内部架构

持续分析迭代 #2 — 从二进制 strings 中提取的全部隐藏信息 2026-06-22


1. 完整 API 端点清单(24 个端点)

从二进制中提取的 Daemon API 完整端点列表(粗体 = 先前未记录):

方法路径用途状态
GET/health健康检查✅ 已知
GET/config获取脱敏配置🆕 新增
GET/project获取当前工作目录🆕 新增
GET/projects列出历史项目🆕 新增
GET/sessions列出所有会话(跨项目)🆕 新增
GET/sessions/search?q=<keyword>按名称搜索会话🆕 新增
GET/models列出可用模型✅ 已知
GET/providers列出 Provider✅ 已知
GET/skills列出用户可调用的 skills🆕 新增
GET/tunnel/statusTunnel 状态查询🆕 新增
GET/auth/status认证状态✅ 已知
POST/auth/login/start开始 OAuth 登录✅ 已知
POST/auth/login/:login_id/poll轮询登录✅ 已知
DELETE/auth/login/:login_id取消登录✅ 已知
POST/auth/logout登出✅ 已知
POST/chat流式聊天(SSE)✅ 已知
POST/cd更改工作目录(类似 /cd 命令)🆕 新增
POST/codingplan/setupCodingPlan 设置✅ 已知
POST/config/reload重新加载配置✅ 已知
POST/providers创建/替换 Provider🆕 新增
POST/providers/:name/default设置默认 Provider🆕 新增
PATCH/providers/:name部分更新 Provider🆕 新增
PATCH/providers/:name/thinking更新 Thinking 设置✅ 已知
DELETE/providers/:name删除 Provider🆕 新增
GET/projects/:hash/sessions列出项目的会话✅ 已知
POST/projects/:hash/sessions创建会话✅ 已知
GET/projects/:hash/sessions/:id获取会话详情✅ 已知
PATCH/projects/:hash/sessions/:id/rename重命名会话✅ 已知
DELETE/projects/:hash/sessions/:id删除会话✅ 已知

前端 SPA 使用的额外端点(从 JS 中提取)

API 调用功能
/chat/permission工具权限决策
/sessions列出/创建会话
/projects/:hash/sessions/:id获取/删除会话
/projects/:hash/sessions/:id/rename重命名
/config获取脱敏配置
/projects列出历史项目
/project获取工作目录
/skills列出 skills
/tunnel/statusTunnel 状态
/providersProvider CRUD
/providers/:name/default设置默认
/fs/list?path=文件系统浏览
/fs/mkdir创建目录
/cd更改目录
/liveLive session SSE 连接
/auth/status认证状态
/auth/login/start登录开始
/auth/login/:login_id/poll登录轮询
/auth/logout登出

2. 环境变量大全

从二进制中提取的全部 ATOMCODE_* 环境变量:

变量默认值用途
ATOMCODE_HOME~/.atomcodeAtomCode 家目录
ATOMCODE_ENGINEv2引擎选择(v1=legacy/old, v2=new kernel)
ATOMCODE_DAEMON_IDLE_TIMEOUT1800守护进程空闲超时(秒),0=禁用
ATOMCODE_IDLE_TIMEOUT_SECS相同功能,别名
ATOMCODE_TELEMETRY1(来自配置)遥测开关(0=禁用)
ATOMCODE_TELEMETRY_ENDPOINThttps://acs.atomgit.com/api/v1/events遥测上报端点
ATOMCODE_PLATFORM_SERVERhttps://acs.atomgit.com平台服务器地址
ATOMCODE_CODINGPLAN_LLM_BASE_URLCodingPlan LLM 基础 URL
ATOMCODE_CODINGPLAN_API_BASEhttps://api.gitcode.com/api/v5CodingPlan API 基础 URL
ATOMCODE_DAEMON_ENABLE_DANGEROUS_TOOLS启用危险工具
ATOMCODE_ENABLE_CD启用 cd 命令
ATOMCODE_WEBUI_DEV开发模式 WebUI
ATOMCODE_DISABLE_TOOLS逗号分隔要禁用的工具列表
ATOMCODE_FIRST_TOKEN_TIMEOUT_SECS首个 token 超时
ATOMCODE_STREAM_TIMEOUT_SECS120流超时(二进制显示 "120 seconds")
ATOMCODE_INTERNAL_PREPARE_UPGRADE内部升级标记
ATOMCODE_UPGRADED_FROM记录从哪个版本升级而来
ATOMCODE_CODINGPLAN_REPORTCodingPlan 报告控制
ATOMCODE_GITHUB_MCP_CLIENT_IDGitHub MCP OAuth 客户端 ID
ATOMCODE_GIT_PATHGit 可执行文件路径
ATOMCODE_WEB_SEARCH_PROVIDER网页搜索提供商
ATOMCODE_TUIX_LOGTUI 日志控制
ATOMCODE_CJK_WIDTH1CJK 字符宽度
ATOMCODE_EMOJI_WIDTHnarrowEmoji 宽度
ATOMCODE_UNICODEUnicode 支持
ATOMCODE_QR_DENSEQR 码密度模式
ATOMCODE_QR_BRAILLEQR 码盲文字符
ATOMCODE_ASCIIASCII 模式
ATOMCODE_JEDITERMJediTerm 终端适配
ATOMCODE_PLAIN纯文本模式
ATOMCODE_RETAIN保留模式
ATOMCODE_WIRE_DUMP网络导出到 .atomcode/wire-dump
ATOMCODE_RENDER_DUMP2渲染导出级别
ATOMCODE_GRAPH_TOOLS图工具(代码图分析)
ATOMCODE_USAGE_DEBUG_PERCENT使用量调试百分比
ATOMCODE_USAGE_DEBUG_THRESHOLD使用量调试阈值
ATOMCODE_SHOW_RAW_API_ERRORFALSE显示原始 API 错误
ATOMCODE_KBD_NOT_ENHANCED键盘增强禁用
ATOMCODE_FIRST_TOKEN_TIMEOUT_SECS首个 token 超时秒数
ATOMCODE_STREAM_TIMEOUT_SECS流超时秒数
ATOMCODE_HOOK_EVENT钩子事件(运行时设置)
ATOMCODE_HOOK_CONTEXT钩子上下文(运行时设置)
ATOMCODE_TOOL_NAME工具名称(运行时设置)
ATOMCODE_PLUGIN_ROOT插件根目录
CLAUDE_PLUGIN_ROOTClaude 兼容插件根目录

3. 内部数据结构

从二进制 RUST 序列化标签提取的结构体定义:

Provider 系统结构体

结构体字段数说明
PatchProviderRequest19Provider 部分更新请求(之前文档为15字段,实为19字段)
CreateProviderRequest16创建 Provider 请求
PatchThinkingRequest6Thinking 设置更新请求

会话/消息结构体

结构体字段数说明
SessionMeta10会话元数据(比之前文档更多)
TurnRecord11对话回合记录
ToolRecord4工具调用记录
UsageRecord3使用量记录
CountersSnapshot7计数器快照
AppendSessionMessageRequest2追加消息请求
AppendSessionMessagesRequest2批量追加消息请求
CreateSessionRequest创建会话请求
PermissionDecisionRequest3权限决策请求

Live/Stream 结构体

结构体字段数说明
LiveMessageReq4Live 消息请求
LiveProviderReq1Live Provider 请求
LivePermissionReq2Live 权限请求
LiveReasoningEffortReq推理努力级别请求
DeltaSSE delta 增量
Choice流式选择
ChunkResponse流式块响应

其他结构体

结构体字段数说明
ApprovalRequest3审批请求
Args9/5参数结构(两种变体)
CodeGraph5代码图结构(代码分析工具)
HookEntry5钩子条目
RepoLabel仓库标签
UsageInfo使用量信息
ToolBatchCall批量工具调用
F / P1未知辅助结构体

API 响应结构体

响应类型字段
AuthStatusResponselogged_in, auth_path
LoginStartResponseurl, login_id, expires_in_seconds
LoginPollResponse
TokenInfoaccess_token, token_type, expires_in, has_refresh_token
HealthResponsebinary_hash, service
ConfigResponsedefault_workdir(脱敏)
ChangeDirResponsecurrent_dir
SessionDetail
CodingPlanSetupResponsereport_text, steps, ok, skipped
McpStatusResponseservers
McpServerStatustool_count
TunnelStatusbind_host, reachable, remote_url, qr_svg
ModelInfoprovider_type, is_default, effort_applicable
ProviderInfohas_api_key, ephemeral
SkillInfo
MessageInfo
ArtifactInfo
ProjectInfosession_count, last_updated
ProjectStateprevious_dir, recent_dirs
ToolCallInfodisplay
ToolResultInfoline_count
ImageDatamedia_type

4. SSE 事件格式(完整)

从二进制中提取的 SSE 事件类型:

事件载荷说明
textstring文本块
reasoningstring推理内容
tool_startToolCallInfo工具调用开始
tool_outputstring工具输出
tool_resultstring工具结果
tool_batcharray批量工具调用
artifact_startArtifactInfo产物开始
artifact_typestring产物类型
artifact_end产物结束
permission_request权限请求
tokensTokenCountsToken 计数
errorstring错误
done完成
stopped停止
call_idstring调用 ID
completion完成(OpenAI 兼容)

Stream 选项

json
{
  "stream_options": {
    "include_usage": true
  }
}

5. Engine v2 架构

二进制中发现 engine v2 的关键引用:

[engine v2] daemon live turns on the new stack
engine-v2 agent terminated
engine v2 handle built above
属性
默认引擎v2(自 v4.25.x 起)
旧引擎值v1 / legacy / old
新内核二进制atomcode-bridge(独立进程)
v2 功能daemon live turns + 新内核栈
v2 优势原版提示:「v2 runs the same drivers (headless + TUI, incl. in-TUI /session and /resume) over the new engine」

6. 未记录的 Slash 命令

从二进制提取的内部 slash 命令列表:

命令功能
/undo [N]回退 N 个回合
/retry重试
/rename重命名会话
/commit提交更改
/review [base]代码审查
/plan切换到计划模式(只读探索)
/build切换到构建模式(完全执行)
/goal <text>设置完成目标(自主循环直到满足)
/remember保存事实到记忆
/forget移除匹配的记忆
/memories显示所有保存的记忆
/bg后台会话(/bg list, /bg drop <N>
/view <filepath>在覆盖模态中查看文件
/guide向 atomcode-guide 提问如何使用
/sync附加到 Live WebUI 会话
/session会话管理(engine v2 新增)
/resume恢复之前的会话
/status显示会话状态
/model切换 Provider/模型
/provider管理 Provider
/thinking扩展思考控制
/reasoning推理努力级别控制
/lang切换显示语言
/compact压缩对话历史
/cost显示 Token 成本
/context显示上下文预算
/code-review代码审查
/recall召回
/help快捷键帮助
/exit退出
/upgrade升级
/clear清屏
/new新会话
/login登录
/logout登出
/daemon守护进程控制
/webuiWebUI 控制
/setup设置
/init生成项目指令
/plugin插件市场管理
/mcpMCP 状态
/mcp reload重新加载 MCP
/diffGit diff
/first-run首次运行:安装推荐 skill + 运行

7. Webhook 系统

二进制中发现了完整的 webhook 机制:

属性
请求头X-AtomCode-Version
X-AtomCode-Webhook
X-AtomCode-Batch-Size
事件类型BatchRequest / events
字段timestamp_ms, batch_size, flush_interval_ms, timeout_secs, retries
异步发送Queued for async sending

8. HD 钩子系统完整架构

从二进制重建的钩子系统架构:

钩子事件

事件时机
session_start会话开始
session_end会话结束
turn_start回合开始
turn_complete回合结束
model_response模型响应
tool_call_start工具调用开始
pre_tool_execution / pre_tool工具执行前
post_tool_execution / post_tool工具执行后
after_turn回合后
on_tool_call_start工具调用开始时
on_model_response模型响应时
user_prompt_submit用户提示提交时
before_tool工具前(安全验证)

钩子结果

internally tagged enum PreHookResult:
  - Allow
  - Deny(附原因)
  - Modify(修改请求)

钩子上下文

rust
struct HookContext {
    tool_args: ...,
    turn_number: u32,
    notification: ...,
    tool_success: bool,
    error_context: Option<ErrorContext>,
    session_context: ...,
    model_name: String,
    provider_name: String,
    result_type: ...,
    tokens_used: u64,
    truncated: bool,
    edited_files: Vec<String>,
    timestamp: u64,
}

9. GitHub OAuth MCP 协议

完整 OAuth MCP 授权流程已集成:

Authorization Server: https://github.com/login/oauth/authorize
Scope: repo read:org notifications
Grant: authorization_code
PKCE: code_challenge + code_verifier(S256)
Token: Bearer
预注册客户端ID: $ATOMCODE_GITHUB_MCP_CLIENT_ID
动态注册: 支持 RFC 7591,也可使用预注册 client_id

10. 插件市场协议

Marketplace 注册: git clone 远程仓库到 plugins/ 目录
插件检测:
  - .atomcode-plugin/plugin.json
  - .claude-plugin/plugin.json
  - plugin.json
Marketplace 元数据:
  - .atomcode-plugin/marketplace.json
  - .claude-plugin/marketplace.json
安装路径:
  - ~/.atomcode/plugins/<plugin>/local/
  - ~/.atomcode/plugins/<plugin>/installed_plugins.json
源类型: internally tagged enum ExternalSource { tag: git_commit, ... }

11. 安全性发现

发现详情
ATOMCODE_DAEMON_ENABLE_DANGEROUS_TOOLS环境变量控制危险工具启用
工具黑名单--disable-toolsATOMCODE_DISABLE_TOOLS
工具白名单钩子 pre_tool_execution → Deny + reason
脱敏配置/config 端点返回脱敏后的配置(不暴露 API key)
Provider 密钥标记has_api_key + ephemeral 字段
认证头部Authorization: Bearer <token>
Live 会话认证x-atomcode-session-id 头部
版本头部X-AtomCode-Version
流超时120 秒无数据 = 断开
错误抑制ATOMCODE_SHOW_RAW_API_ERROR=FALSE

12. 新发现的工具:CodeGraph

二进制中发现了 CodeGraph 工具:

struct CodeGraph with 5 elements
Max depth to recurse (default 2)
Symbol name to trace callers for

这表明 AtomCode 有内置的代码图分析能力,可以:

  • 递归分析代码结构(默认深度 2)
  • 跟踪符号的调用者

13. Tunnel 子系统

GET /tunnel/status

Response:
{
  "bind_host": "...",
  "reachable": bool,
  "remote_url": "...",
  "qr_svg": "..."  // QR 码 SVG,用于远程访问
}

Tunnel 允许通过 QR 码从远程设备访问 WebUI。


总结:新增发现的盲区覆盖

#之前盲区状态发现
1CLI 完整参数14 个子命令 + 15 个全局选项完整映射
2完整 API 端点24 个端点全发现(新增 ~10 个未记录端点)
3环境变量30+ 个 ATOMCODE_* 变量全发现
4内部数据结构40+ 个 Rust 结构体定义提取
5SSE 事件格式15+ 事件类型完整列表
6Engine v2atomcode-bridge 作为新内核栈
7Webhook 系统批量事件、重试、异步发送
8钩子系统预/后工具 + 回合生命周期
9插件协议git clone + 插件发现格式
10OAuth MCP完整的 PKCE OAuth 流程
11TunnelQR 码远程访问
12CodeGraph代码图分析工具
13Slash 命令40+ 内置命令
14未记录 API/config, /project, /cd, /fs/, /live, /tunnel/, /skills, /sessions/search
15Fixissue 工作流从 AtomGit Issue URL 自动修复
16WebUI 端口13457(与 daemon 13456 区分)
17Uninstall 模式normal/purge/keep-data/dry-run

剩余盲区

#盲区优先级
147 个内置 Skills 完整列表与触发方式
2CodingPlan 加密层逆向
3Telemetry 事件格式(队列中的事件内容)
4内置 seed 文件内容分析(atomcode setup
5完成分析循环之间的差异对比
6代码审查工具 code_review 详细参数

本报告由持续分析循环生成 — Iteration #2

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