~/.atomcode/ 本地文件系统完整分析
基于全量扫描和文件格式反编译 2026-06-22
1. 空间占用
| 路径 | 大小 | 文件数 |
|---|---|---|
~/.atomcode/ 总和 | ~26 MB | 165 文件 |
sessions/ | ~2.5 MB | 138 文件 (新旧混合) |
datalog/ | ~2.7 MB | 62 文件 |
| 其他 | <100 KB | 5 文件 |
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 字段统计
| 字段 | 典型值 |
|---|---|
| model | deepseek-v4-flash |
| context_window | 1000000 |
| estimated_tokens | 6317-8739 |
| duration_ms | 1470-9832 |
| tool_calls | 0-2 |
| message_count | 2-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