ljchang/mecha 是一个用 Rust 编写的独立代理框架。它把与提供商无关的循环、MCP 工具、路径监狱与提示注入拦截、沙箱 shell、定时触发器,以及对执行记录(trace)进行评分的评估工具集中在一处。2026 年 11 月 7 日的 GitHub 提交 d2adb37 在合并 PR #848 的同时新增了会话类型 `driven`。`driven` 指的是其他代理在所有者实际工作之上运行的会话,并以 `MECHA_SESSION_KIND=driven` 标记。此次变更涉及 18 个文件,新增 460 行、删除 53 行。
这个标记所区分的依据不是「保存在哪里」,而是「由谁运行」。driven 会话仍留在所有者自己的仓库中,但与 test 或 experiment 会话一样,所有读取方默认都会隐藏它们,同时把被隐藏的数量记录下来。那个数值就是 `Corpus::hidden_driven` 以及 list、health、appraise 所附带的 `driven_hidden` 计数器,必须显式指定 `--kind driven` 才会一并读出。学习路径则完全关闭。reflect 的 transcript 通道、distill、对比池、persona 编写器都通过 `Scan::admits` 拒绝 driven 会话,reflect 的 outbox 通道则跳过 staging 会话 admission 被拒绝的 draft。设计文档把这一依据称为 fitness(实际使用量),理由是:把框架用到失败的东西并不是所有者本人的使用。
剩下的局限也很明确。本次提交处理的是设计文档中的 D1 规则,而 D2——为 driven 运行提供专用的学习存储、把它只作为标记而非评估范围——并未出现在本次提交的变更文件中,而是留在 DRIVER-DESIGN.md 里。判断显现的地方是 diagnose 命令。当它一个会话都读不出来时,过去只会指出 test 会话,而只剩 driven 会话的仓库会落进「过滤器什么也没找到」这种情况。现在它会把被排除的标记 test、experiment、driven 一一指名报出,并新增了确认该行为的回归测试。ARCHITECTURE 文档和 CLI 参考文档也一并更新了。不过,其他代理的运行进入所有者仓库的这一结构本身依然存在,因此这个提交只是选择了用默认排除来阻挡。至于仓库说明中提到的评估工具会受到该标记怎样的影响,给出的资料中没有说明。