AtomCode 二进制字符串分析报告
基于
strings提取的 v4.25.3 ELF 二进制文件分析 2026-06-21
1. CodingPlan 完整子系统
1.1 相关源文件(Rust crate 路径)
| 源文件 | 功能 |
|---|---|
crates/atomcode-daemon/src/api_codingplan.rs | Daemon 侧的 CodingPlan API 实现 |
crates/atomcode-core/src/coding_plan/setup.rs | Setup 流程实现 |
crates/atomcode-codingplan-crypto/src/versions/v1.rs | 加密层实现 (v1) |
1.2 CodingPlan API 端点
GET https://api.gitcode.com/api/v5/models-v2?plan_type=<type>
→ 查询指定套餐可用模型相关结构体:
struct CodingPlanSetupRequest with 1 element1.3 额度/错误消息
| 消息 | 含义 |
|---|---|
CodingPlan setup failed: | 设置流程失败 |
CodingPlan already claimed | 套餐已领取 |
CodingPlan claimed | 成功领取 |
CodingPlan tier setup failed | 套餐设置失败 |
(CodingPlan) | 通用标签 |
CodingPlan: (status fetch failed) | 状态查询失败 |
Failed to write codingplan sync marker: | 同步标记写入失败 |
1.4 同步文件
| 文件 | 字段 |
|---|---|
codingplan_sync.json | last_sync_unix_secs |
2. 限流与额度系统完整消息
2.1 窗口限流
| 消息 | 说明 |
|---|---|
Current window quota exhausted | 当前时间窗口额度耗尽 |
window_quota_exhausted | 状态字段 |
window_quota_hint | 提示信息 |
rate_limit_windows | 限流窗口列表 |
rate_limited | 被限流标记 |
stream_interrupted | 流被中断 |
stream_timeout | 流超时 |
chunks within the configured window. Try resending or check provider status. | 窗口超限提示 |
2.2 月度额度
| 消息 | 说明 |
|---|---|
Usage: monthly quota exhausted, available again in N days | 月度配额耗尽 |
Monthly quota exhausted, available again in N | 同上 |
2.3 结构体字段
rate_limit_windows[].window_size_seconds
rate_limit_windows[].window_hours
rate_limit_windows[].call_limit
rate_limit_windows[].calls_used
rate_limit_windows[].usage_percent
rate_limit_windows[].quota_exhausted
rate_limit_windows[].reset_at
rate_limit_windows[].reset_at_displaycurrent_usage:
window_token_limit
window_tokens_used
usage_percent
window_hours
reset_at
seconds_until_reset
reset_label
usage_status_desc
audit_status3. 环境变量完整清单
3.1 已记录/已知
| 变量 | 说明 |
|---|---|
ATOMCODE_TELEMETRY | 设为 0 或 DO_NOT_TRACK 禁用遥测 |
ATOMCODE_HOME | 覆盖 home 目录 |
ATOMCODE_CODINGPLAN_LLM_BASE_URL | 覆盖 LLM API 基础地址 |
ATOMCODE_CODINGPLAN_API_BASE | 覆盖 CodingPlan API 基础地址 |
ATOMCODE_GITHUB_MCP_CLIENT_ID | GitHub MCP OAuth client ID |
ATOMCODE_GIT_PATH | Git 可执行文件路径 |
3.2 新发现的重要变量
| 变量 | 说明 |
|---|---|
ATOMCODE_DAEMON_ENABLE_DANGEROUS_TOOLS | 启用危险工具(生产环境慎用) |
ATOMCODE_DISABLE_TOOLS | 禁用指定工具(逗号分隔) |
ATOMCODE_ENABLE_CD | 启用 cd 命令 |
ATOMCODE_FIRST_TOKEN_TIMEOUT_SECS | 首 token 超时(秒) |
ATOMCODE_STREAM_TIMEOUT_SECS | 流超时(秒) |
ATOMCODE_WEBUI_DEV | Web UI 开发模式 |
ATOMCODE_TELEMETRY_ENDPOINT | 覆盖遥测上报地址 |
ATOMCODE_PLATFORM_SERVER | 平台服务器地址(默认 https://acs.atomgit.com) |
ATOMCODE_UPGRADED_FROM | 升级来源标记(内部使用) |
ATOMCODE_USAGE_DEBUG_PERCENT | 使用率调试百分比 |
ATOMCODE_USAGE_DEBUG_THRESHOLD | 使用率调试阈值 |
ATOMCODE_SHOW_RAW_API_ERROR | 显示原始 API 错误(设为 TRUE/NO) |
ATOMCODE_PLAIN | 纯文本模式 |
ATOMCODE_RETAIN | 保留模式 |
ATOMCODE_CODINGPLAN_REPORT | CodingPlan 使用报告标记(内部使用) |
ATOMCODE_INTERNAL_PREPARE_UPGRADE | 内部升级准备 |
ATOMCODE_QR_DENSE | QR 码密度控制 |
ATOMCODE_QR_BRAILLE | QR 码盲文模式 |
ATOMCODE_TUIX_LOG | TUI 调试日志 |
ATOMCODE_CJK_WIDTH | CJK 字符宽度设置 |
ATOMCODE_UNICODE | Unicode 控制 |
ATOMCODE_WIRE_DUMP | 网络流量转储 |
ATOMCODE_RENDER_DUMP | 渲染转储 |
ATOMCODE_GRAPH_TOOLS | 图形工具设置 |
ATOMCODE_HOOK_EVENT | 钩子事件名(运行时) |
ATOMCODE_HOOK_CONTEXT | 钩子上下文(运行时) |
4. 遥测系统
4.1 上报 URL
POST https://acs.atomgit.com/api/v1/events4.2 相关源文件
| 路径 | 说明 |
|---|---|
crates/atomcode-telemetry/src/queue/mod.rs | 遥测队列 |
crates/atomcode-telemetry/src/runtime.rs | 运行时 |
crates/atomcode-telemetry/src/sender/http.rs | HTTP 发送 |
crates/atomcode-telemetry/src/sender/mod.rs | 发送器 |
crates/atomcode-cli/src/telemetry_cmd.rs | CLI 命令 |
crates/atomcode-daemon/src/telemetry_scope.rs | 作用域管理 |
4.3 数据文件
~/.atomcode/telemetry/queue/ # 事件队列
~/.atomcode/telemetry/health.json # 健康状态4.4 命令行控制
atomcode telemetry enable → 启用遥测
atomcode telemetry disable → 禁用遥测
atomcode telemetry status → 显示队列统计
atomcode telemetry pretty → 打印挂起事件
atomcode telemetry clear → 清除队列4.5 上报事件结构
SessionMode:
- tui
- ide
- vscode
- atomcode_air
事件字段:
device_id
launch_id
account_id
session_id
turn_id
schema_version
app_version
locale
provider_host
repo_origin (gitcode | atomgit | github | gitlab)
has_git
事件类型:
login_success
install_completed
tool_call
use_command
mcp_connect
rate_limited
stream_interrupted
stream_timeout
timeout
denied_by_user
blocked_by_hook
loop_detected
skill_not_found
skill_disabled
skill_empty_template
token 统计:
input_tokens
output_tokens
cached_tokens
had_error
context_window
system_tokens
tool_def_tokens
tool_result_tokens
message_tokens5. Invite 邀请码系统
5.1 文件
~/.atomcode/pending_invite5.2 字段
json
{
"invite_code": "...",
"install_uuid": "...",
"attempted_at": "...",
"pending_invite_success": false
}5.3 错误类型
auth_error — 认证错误
auth_expired — 认证过期
network_error — 网络错误
server_error — 服务器错误
invalid_args — 参数无效
not_found — 未找到6. 自动更新系统
6.1 源文件引用
crates/atomcode-core/src/self_update.rs6.2 命令
/upgrade → 升级到最新版本
/upgrade rollback → 回滚到上一版本
/upgrade --force → 强制升级
sudo atomcode upgrade → 需要权限
brew upgrade atomcode → Homebrew 方式6.3 版本来源
https://atomgit.com/atomgit_atomcode/atomcode/releases/download/<version>/<binary>
https://atomgit.com/atomgit_atomcode/atomcode/releases/latest → 获取最新版本号6.4 升级策略
自动升级: config.toml 中 auto_update = true
禁用升级: --dev 命令行参数
升级存储: staged/ 目录
升级回滚: /upgrade rollback7. LLM 提供商完整配置
7.1 内置提供商端点
| 提供商 | URL |
|---|---|
| DeepSeek | https://api.deepseek.com/v1 |
| OpenAI | https://api.openai.com/v1 |
| Anthropic | https://api.anthropic.com |
| Ollama | (本地) |
| 示例 | https://api.example.com/v1 |
7.2 Provider 配置结构
struct CreateProviderRequest with 16 elements:
- name, type (openai/claude/ollama), model, base_url, api_key
- context_window, is_default, max_tokens
- thinking_enabled, thinking_budget, thinking_type, thinking_keep
- reasoning_history, reasoning_effort
- skip_tls_verify, ephemeral
struct PatchProviderRequest with 19 elements
struct PatchThinkingRequest with 6 elements8. 会话数据模型
8.1 数据结构
struct ChatChunk:
- type (text/reasoning/tool_start/tool_output/tool_result/tokens/done/error/stopped)
- content/arguments/id/name/output/success/duration_ms/prompt/completion/total
tool_calls:
- tool_call_id, image_uri
Live 消息:
struct LiveMessageReq with 4 elements
struct LiveProviderReq with 1 element
struct LivePermissionReq with 2 elements
struct LiveReasoningEffortReq with 6 elements9. GitHub OAuth MCP 集成
9.1 OAuth 端点
| URL | 用途 |
|---|---|
https://github.com/login/oauth/authorize | GitHub OAuth 授权 |
https://github.com/login/oauth/access_token | 换取 access token |
9.2 MCP OAuth 配置
~/.mcp.json 中的 OAuth 配置:
oauth.client_id
oauth.client_secret_env
oauth.scopes
/.well-known/oauth-authorization-server
/.well-known/oauth-protected-resource10. MCP 系统
10.1 配置路径
~/.mcp.json → 项目 MCP 配置
~/.atomcode/mcp.json → 全局 MCP 配置 (写入方式)
~/global.mcp.json → 另一全局路径
.mcp.json → 项目本地配置10.2 Provider 类型
MCP 服务器支持:
- stdio (本地命令)
- HTTP (远程)
- OAuth 认证的 HTTP11. 版本信息
| 属性 | 值 |
|---|---|
| 最新版本标识 | v4.25 系列 |
| 二进制大小 | 28,447,568 字节 |
| 自述 | "Claude Code 的开源平替" |
| 受众 | "在你的终端中运行的 AI 编程助手" |
| 文档 | https://atomcode.atomgit.com/docs/zh/ |
| 问题报告 | https://atomgit.com/atomgit_atomcode/atomcode/issues |
| 技能仓库 | https://atomgit.com/atomgit_atomcode/atomcode-skills.git |
| 插件仓库 | https://atomgit.com/atomgit_atomcode/atomcode-plugins-official.git |
| 遥测文档 | https://atomgit.com/atomgit_atomcode/atomcode/blob/main/docs/telemetry.md |
逆向命令索引
bash
# 二进制基本信息
file atomcode.bin.bak
# 输出: ELF 64-bit LSB shared object, x86-64, stripped
# 查看 ELF 段
readelf -S atomcode.bin.bak | grep -E "\.text|\.rodata|\.data|\.bss"
# 统计所有结构体
strings atomcode.bin.bak | grep -oP 'struct \w+ with \d+ element' | wc -l
# 输出: 118
# 动态符号数量
nm -D atomcode.bin.bak | wc -l
# 输出: 2000+
# 提取 Rust 编译器版本
strings atomcode.bin.bak | grep "^/rustc/" | head -1
# 输出: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/...