这些不是功能,是约束——每个技术点都是它们的推论。
┌─ CLI · config(4模型角色) ──────────────────────────────────┐ │ ORCHESTRATOR —— BranchEvolutionLoop(一次 run,多轮 rN) │ fork ─▶ rollout ─▶ reflect ─▶ merge ─▶ curate ─▶ gate │ main 跑agent解题 蒸技能 去重 改写 无回退 │ └─新分支 train/<run_id>/rN accept→merge回main └──┬──────────┬───────────┬───────────┬──────────────────────┘ AGENT ENV TRAINER EXPERIENCE(五域 git 库) runtime 环境接入 优化器 Skills·Trajectory opencode✅ spreadsheet✅ analyst Benchmark·Memory react swebench✅ Gate(纯逻辑) Knowledge + lineage 6种 5个域 reflect 单 git 仓库
不自建 DB——用版本控制系统承载"经验演进"。分支=实验,commit=快照,tag=阶段边界。
train/<run_id>/rN 建模训练实验。merge 用真 git merge --no-ff——技能/轨迹/ledger 文件在分支上,merge 天然带过去。
轨迹与 ledger 跟随产生它的分支:train rollout 落 train,gate accept 随 merge 进 main,reject 留分支(负样本)。坑:写入时 checkout 已漂移 → 显式传 branch。
ledger 单文件 append + 原地回填 gate。resume 复用分支时 merge 冲突 → .gitattributes 配 merge=union(行级并集去重)+ gate 回填在 merge 之前。
git log/ls-tree/show 直读 git 对象,不动工作树(不干扰训练)。实测 13k commit / 48MB,骨架 ~15ms。
被训 agent 与优化器是两个对象。Analyst 纯函数式不碰 store——只 return,由 loop 落盘。4 个独立模型角色。
纯数值逻辑,零 LLM。correctness-first,效率 tiebreak。守卫:branch_score>0——失败得更快不是收益。抽成独立引擎,三种演进对象共享。
失败→教训、成功→配方;多 analyst ensemble;embedding 语义去重 + support 累加;curate sibling-awareness 防近义堆积。
训练与推理用同一轨迹源——opencode 原生 SQLite store。不从 stdout 抓(会截断),保证训推数据一致。
train/<run_id>/rN。解决重跑撞名 + 多次训练血缘共存。
换 agent = 加 runtime;换任务域 = 加 env(observe/score)。
oracle(spreadsheet 逐格对比) vs LLM-judge(knowledge)。
OPENCODE_PURE + 隔离 config/data dir,避 db-lock、防全局 AGENTS.md 泄漏;per-rollout 流式日志。
PyMuPDF + PPT 整页渲染救回元素画的架构图 → VLM 图转文(kimi 真读像素,GLM 幻觉)。
raw→compile→wiki(互链),关键词/索引检索,无 embedding(锁定)。
把飞轮全过程 —— 数据集 → rollout → judge → reflect → gate → merge —— 做成可下钻追溯的血缘图。核心命题:用 git 本身承载血缘,不自建血缘数据库。
血缘有两个正交维度:状态由 git 承载,因果由 ledger 承载。
| git | ledger | |
|---|---|---|
| 本质 | 内容的版本(状态快照) | 因果的边(关系) |
| 记什么 | 每个 commit 的五域文件全貌 | {skill, source_trajs, op, gate, round, reasoning} |
| 能回答 | 这一步五域长什么样、diff 是什么 | 这个技能为什么存在、来自哪些轨迹、门禁判了啥 |
| 不能回答 | 不知道文件从哪几条轨迹反思来 | 不存历史全文,不能 diff |
git 是"发生了什么"的快照带,ledger 是"为什么发生"的因果图。
① 分支图(git tag 阶段节点) ─▶ ② 五域文件树(某commit快照) ─▶ ③ 文件内容 ledger 提供因果边 git ls-tree 读树 git show 读全文 纵向血缘 分支图编码飞轮因果 fork→rollout→reflect→gate→merge,两 lane 横向血缘 相邻 commit 快照对比 rollout后Trajectory域满、reflect后Skills出候选 穿透血缘 文件里 source_trajs 引用可点击 — 技能↔轨迹↔门禁因果链追溯
阶段结构不在 commit message(那是每条轨迹的自动提交),在 git tag + -ck-* checkpoint 分支。血缘图读 tag,不解析 message(脆弱)。
每条轨迹一个 commit(3274个)是特性——保留单轨迹可追溯。每轮加骨架 tag 当节点,底层颗粒度不减,读取端有干净节点(折叠成 ~5节点/轮)。
reflect 的 LLM 原始输出 → Edit.reasoning → ledger。保护 optimizer≠target:analyst 只 return,loop 落盘。judge raw → reward_breakdown。
多次训练全画一张图,parent 链只在同 run 内连。accept→整轮 ledger 随 merge 进 main,reject 留分支——血缘忠实。
读 git 对象不动工作树,与训练互不干扰
保留每条轨迹可追溯,又给血缘图干净节点
状态与因果正交承载
血缘不是打日志建表记出来的,是从 git 结构里读出来的。
分支=实验、跟随分支存储、union merge、零 checkout 血缘——用版本控制承载经验演进
优化器只有提名权,真伪由独立 Gate 在真实 env 判定
训练与推理共用轨迹源,消除 train/infer 分布差
OpenEarth — 让 agent 解过的问题沉淀成可复用、可演进、可分享的技能