Skip to content

~/.atomcode/ 本地文件系统完整分析

基于全量扫描和文件格式反编译 2026-06-22


1. 空间占用

路径大小文件数
~/.atomcode/ 总和~26 MB165 文件
sessions/~2.5 MB138 文件 (新旧混合)
datalog/~2.7 MB62 文件
其他<100 KB5 文件

2. 文件清单

~/.atomcode/
├── auth.toml                 (389B)  — OAuth 凭证
├── config.toml               (3.7KB) — 核心配置
├── codingplan_sync.json      (39B)   — CodingPlan 同步时间戳
├── history                   (0B)    — 历史记录(当前为空)
├── recent_dirs.txt           (64B)   — 最近工作目录
├── stderr.log                (50B)   — 运行日志

├── datalog/<project-hash>/
│   └── llm/
│       ├── <timestamp>.json  (40-67KB each, 61 files)
│       └── calls.log         (6.1KB) — 调用汇总

├── sessions/<project-hash>/
│   ├── *.json                (旧格式, <1KB-92KB)
│   ├── *.jsonl + *.meta + *.snapshot  (新格式 v4.25.3+)
│   │
│   └── staged/               (空目录, 用于更新暂存)

3. 新旧会话格式对比

3.1 旧格式 (*.json) — v4.25.1 及之前

单文件 JSON,包含完整对话历史:
{
  "id": "uuid",
  "name": "消息标题",
  "messages": [
    {"role": "User", "content": {"Text": "..."}},
    {"role": "Assistant", "content": {"AssistantWithToolCalls": {...}}}
  ],
  "turn_stats": [...]
}
特性
文件大小737B - 92KB
文件数36
最后更新06-22 v4.25.3 也写入了部分 .json 文件

3.2 新格式 (*.jsonl + .meta + .snapshot) — v4.25.3+

三文件组设计,每轮对话写入一条 JSONL:

.jsonl (每行一条 turn 记录)

json
{
  "v": 1,
  "ts": 1782115996402,
  "iso": "2026-06-22T08:13:16.402+00:00",
  "session_id": "uuid",
  "turn_id": 1,
  "undone": false,
  "user": "User: 用户消息",
  "assistant": "助手回复文本",
  "reasoning": "推理过程(完整,含 markdown)",
  "tools": [
    {"name": "write_file", "args": "{...}", "result": null},
    {"name": "bash", "args": "{...}", "result": "输出"}
  ],
  "tool_count": 2,
  "retries": 0,
  "duration_ms": 15247,
  "tokens": 11172,
  "input_tokens": 8238,
  "output_tokens": 2934,
  "cached_tokens": 0,
  "model": "deepseek-v4-flash",
  "start_iso": "2026-06-22T08:13:01.155+00:00",
  "error": false
}

.meta (会话元数据)

json
{
  "id": "uuid",
  "created_at": 1782115981,
  "working_dir": "/path/to/project",
  "name": "会话标题"
}

.snapshot (完整对话快照)

用户: 消息1
助手: 回复1 (工具调用: write_file)
用户: 消息2
...

新格式优势:

  • 增量写入(每轮追加,无需重写整个 JSON)
  • 分离元数据(.meta 可快速加载)
  • 快照用于快速上下文重建
  • 每轮记录 token 用量、耗时、工具调用
特性旧格式新格式
读写方式全量读写增量追加
文件数/会话1 文件3 文件
token 追踪每轮记录
工具调用嵌入消息独立字段
推理过程可选必录

4. datalog 文件分析

4.1 调用日志形态(新)

与旧格式相同的 JSON 文件,每次 LLM 调用记录一次。

4.2 字段统计

字段典型值
modeldeepseek-v4-flash
context_window1000000
estimated_tokens6317-8739
duration_ms1470-9832
tool_calls0-2
message_count2-8

4.3 时序分布

06-12: 9 次 (初始设置和测试)
06-13-15: 0 次
06-15: 30+ 次 (基准测试)
06-16: 13 次 (性能测试)
06-17: 2 次
06-18-21: 0 次 (授权中断期)
06-22: 多轮 (当前分析)

5. 配置文件分析

config.toml 完整配置域

说明
[providers.*]LLM 提供商配置
[lsp]LSP 语言服务器配置
[subagent]子代理配置 (max_turns, max_concurrent)
[ui]界面主题
[plugin]插件市场自动更新
[web_search]网络搜索提供商
[datalog]LLM 调用日志
[notifications]通知配置
[*] 根级别default_provider, auto_update, auto_commit

6. 异常行为观察

现象说明
history 始终为空历史记录功能未启用或已重置
旧格式 .json 与新格式 .jsonl 并存表明 v4.25.1→v4.25.3 升级过程中格式不兼容,旧会话保持原样
部分 session 只有 .meta + .snapshot 而无 .jsonl可能写入失败或正在进行的会话
staged/ 为空暂存区已在新版本下载后被清空

7. 文件权限检查

文件权限说明
auth.toml-rw-------仅所有者可读(合理)
config.toml-rw-rw-r--默认权限
所有 session 文件-rw-rw-r--默认权限
stderr.log-rw-rw-r--默认权限

逆向命令索引

bash
# 提取本地文件相关字符串
strings atomcode.bin.bak | grep -iE "filesystem|local.*file|config\.toml|auth\.toml" | sort -u | head -10

# 查看运行时文件权限
ls -la ~/.atomcode/auth.toml ~/.atomcode/config.toml 2>/dev/null

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