Skip to content

AtomCode 补充技术细节

工具参数字段完整提取、技术栈分析、Telemetry 状态 2026-06-22


1. 工具参数字段提取

从二进制字符串中提取全部工具参数对应的字段名集合。这些字段名对应 Rust 结构体中的序列化字段,也对应 OpenAI function calling 的 parameters.properties 键名。

1.1 完整字段名集合

action          command         content         contract
depth           event           file            file_path
files           format          from            glob
hooks           instruction     limit           matcher
message         new_string      offset          old_string
path            pattern         plan_type       provider
query           reason          regex           replace
search          symbol          timeout_ms      to
url

1.2 按用途分组

文件操作参数:

file_path, file, files, path, glob, pattern

编辑操作参数:

old_string, new_string, search, replace, regex, instruction, action

搜索参数:

query, glob, regex, pattern, path, offset, limit, depth

执行参数:

command, url, timeout_ms, format

通用参数:

content, message, provider, reason, from, to, event, matcher, hooks

2. Rust 源代码结构

2.1 crate 组织

atomcode (monorepo):
├── crates/atomcode-cli/          → CLI 入口(main.rs)
├── crates/atomcode-core/         → 核心逻辑
│   └── src/tool/                 → 25 个工具实现
├── crates/atomcode-daemon/       → HTTP daemon 服务器
│   ├── src/api_codingplan.rs     → CodingPlan API
│   └── src/telemetry_scope.rs    → 遥测作用域
├── crates/atomcode-tuix/         → TUI 终端界面
├── crates/atomcode-codingplan-crypto/ → CodingPlan 加密
│   └── src/versions/v1.rs        → v1 加密实现
└── crates/atomcode-telemetry/    → 遥测上报
    ├── src/queue/mod.rs          → 队列管理
    ├── src/runtime.rs            → 运行时
    └── src/sender/http.rs        → HTTP 发送器

2.2 依赖技术

技术用途
Rust主语言
Tokio异步运行时
AxumHTTP 框架(daemon)
SerdeJSON 序列化
ClapCLI 参数解析
reqwestHTTP 客户端
rustlsTLS 加密
Preact + ViteWeb UI 前端
markedMarkdown 渲染(前端)
OpenAI API 格式LLM 通信协议
SSE (Server-Sent Events)流式响应
JSON-RPCMCP 协议

3. 对话数据统计(截至分析时)

3.1 调用量

指标
datalog 文件数61 个 JSON
时间跨度~10 天(6-12 至 6-22)
模型全部 deepseek-v4-flash
平均延迟1.5s - 3s
最长延迟~10s
工具调用率~10%(6次中有工具调用)
短期窗口用量0/500(当前窗口已重置)
长期窗口用量54/8000(0.7%)

3.2 实际性能

平均响应时间: ~2000ms
最小响应: ~1470ms
最大响应: ~9832ms
Token 估算: 每次 6317-7802 tokens
工具调用成功: 6 次(glob、list_directory、write_file、bash)

4. Telemetry 启用状态

当前环境下 Telemetry 未触发

  • ~/.atomcode/telemetry/ 目录不存在
  • daemon 启动时设置了 ATOMCODE_TELEMETRY=0
  • 配置中 auto_update = true 但 telemetry 被禁用

如果启用 Telemetry,数据将上报至:

POST https://acs.atomgit.com/api/v1/events

5. Daemon 实际运行的 Web UI

SPA 类型: Vite 打包的 Preact SPA
框架: Preact (轻量 React 替代)
入口文件: assets/index-2VWO9kfe.js (166KB)
CSS: assets/index-DQAxDfIC.css
服务端口: 13456 (与 API 同端口)
路由: SPA 处理所有未匹配路径(fallback)

SPA 元描述:

html
AtomCode -- Claude Code 的开源平替。
连接任意大模型,自主多步执行,30 秒上手。

6. 已知的二进制行为(未验证)

行为触发条件
自动更新auto_update = true + 启动/upgrade 命令
遥测上报daemon 启动时 + 定时上报
CodingPlan 同步启动时 + 定时(codingplan_sync.json 记录时间戳)
Token 刷新token 过期前自动使用 refresh_token
语言自动检测默认自动,支持 en/zh-CN/zh-TW
技能市场同步auto_update_marketplaces = true

逆向命令索引

bash
# 提取杂项字符串
strings atomcode.bin.bak | grep -iE "misc|other|default" | grep -v "https\?://\|crates/" | sort -u | head -10

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