数据与文件布局
This content is not available in your language yet.
主 worktree = git rev-parse --git-common-dir 的父目录。所有 worktree 共享 <主 worktree>/.arboria/,它写进了 .git/info/exclude,不属于任何分支。
myproj/ 主 worktree├── arboria.toml 项目配置(提交它)├── CLAUDE.md 其中一个区块由 arb 管理└── .arboria/ ├── ledger.db SQLite 账本(WAL),schema 版本在 PRAGMA user_version ├── backup/ledger.sql 备份提交时导出的数据库 ├── notebooks/<idea>.py 每个 idea 的 notebook ├── commands/<名字>.py 项目的 notebook 命令(Claude 写) ├── cache/commands/<名字>/ 命令的缓存 ├── runs/<run>/out/ 拉回来的 ARBORIA_OUT ├── sessions/ hook 记下的 Claude Code 会话 socket(0600) ├── notifications.log watch / poll 的通知 └── hook.log hook 的错误myproj-<idea>/ 每个 idea 的 worktree(分支 idea/<idea>)└── notebook.py → ../myproj/.arboria/notebooks/<idea>.py- 旧版本的账本原地迁移。
- 快照存成隐藏的 git ref
refs/arboria/runs/<run>;放弃的 idea 的最终快照在refs/arboria/ideas/<name>/final,打标签arboria/archive/<name>。这些 ref 默认不会被 push。 - 拉回的
config.yaml存进runs.config_json:装了 PyYAML 就解析成 JSON,否则原文存在_raw_yaml下,最多 200 KB。
.arboria/ 本身是一个只做备份的小 git 仓库。下面这些事件之后,arb 把数据库导出到 backup/ledger.sql,连同 notebooks/*.py 和 commands/*.py 一起提交:
- idea 新建、关闭;笔记;新 run;决定;
- 经验的提出、接受、拒绝、退役;待办的新建、完成、放弃;置信度和指标修改;
- run 的提交、批准、进入队列、拒绝、取消、结束和存入 config。
轮询这类心跳更新只写数据库,不提交。marimo 的 __marimo__/ 缓存不跟踪。
| 位置 | 内容 |
|---|---|
~/.config/arboria/clusters.toml |
机器配置(ARBORIA_CONFIG_DIR) |
~/.config/arboria/commands/ |
全局 notebook 命令 |
~/arboria/(ARBORIA_HOME) |
种子园:seeds/<名字>.py 是种子 notebook;.arboria/ 和项目的一样,另有 .arboria/seeds/(每次备份提交前把种子 notebook 复制进来) |
种子园不是 git 仓库;账本的 schema 和项目的相同(seeds、plantings 两张表,待办属于一个 idea 或一个种子)。
| 路径 | 内容 |
|---|---|
<runs>/<project>/<run>/code |
快照内容,命令在这里运行 |
<runs>/<project>/<run>/logs/s<k>.<jobid>.out |
每段的日志 |
<ckpt>/<project>/<run> |
ARBORIA_CKPT_DIR |
<out>/<project>/<run> |
ARBORIA_OUT,结束后拉回 |