route → rules → guard → claim proof
Tenetora
面向 AI Agent 软件工程的治理运行时。
Tenetora 把规则、决策、证据和动作边界收进一份项目记录,服务所有已支持的 AI 编程工具,让关键动作可约束、可验证、可审计。
$ tenetora route --message "<任务描述>"
context: build
rules: build-and-deps, testing
loaded: 2 rule files
route: ok
…
$ tenetora guard --action claim --verification-command "<命令>" --verification-status passed
verification-claim: pass
claim proof: ah-claim-<示例哈希>
PASSclaim proof: ah-claim-0123456789abcdef0123456789abcdef(合成示例)
安装
安装或升级 Tenetora。公开来源核验完成前不提供安装命令。
无法识别你的操作系统,请手动选择以显示安装命令。
- Python 要求
- >=3.9
- 首次安装默认范围
- global
- 无范围升级
- existing-only
- 非交互默认语言
- en
信任与重启:插件更新后重启原生插件宿主;首次安装或 Hook 变化后审核 /hooks。
它解决的具体失败
设想一次跨多个模块的 API 改动,同时由两个编码 Agent 处理:
- 第一个 Agent 读取了 AGENTS.md 和本地规则。
- 上下文压缩后,第二个 Agent 读取了另一套指令。
- 复制进来的 issue 描述夹带了不安全命令。
- 改动影响共享 schema,却没有记录消费者范围。
- 一个局部单测通过了,但集成链路已经损坏。
- 最终报告写着“已完成”,却没人能复现验证过程。
问题不是 Agent 不会写代码,而是这项工作没有持久、可检查的控制面。
一条受治理的工作路径
一份项目记录贯穿五个阶段——这也是工具链实际执行的同一管道,跳过任何一段都会改变结论的含义:
- 01 Record规则、事实、决策与证据集中在 .tenetora/,当前指导与历史记录分离。
- 02 Route每个任务只加载与上下文相关的规则切片,并留下消费证据。
- 03 Guard外部输入、规则变更、commit 与完成声明在执行前经过确定性检查。
- 04 Observeruntime 观测、审查与 change-impact 证据如实记录——文件存在不等于已生效。
- 05 Prove完成 claim 绑定完整验收命令、当前目标与工作树状态。
它与什么不同
Tenetora 与其他工程系统协作,而不是取代它们。差异在于治理的是哪一层:
- Spec / SDD 工具描述「要构建什么」治理 Agent 消费哪份项目上下文、哪些高风险边界必须检查、哪些证据支撑最终声明
- Rules 文件与提示词模板提醒 Agent 遵守规则、运行测试把规则集中在项目记录中,区分局部检查与完整验收命令,并拒绝过期证据
- 普通 hooks在单一工具内触发固定动作提供跨工具共享的 CLI 语义与证据模型,并如实报告每个平台的 runtime 上限
- CI在 commit 创建之后拒绝错误提交还覆盖更早的模型工作流和创建 commit 的本地动作
- Issue tracker记录团队工作与产品决策记录执行层的决策原因、动作边界与验证证据
运行时证据
运行时证据:Route / Doctor / Guard / Claim(示例输出,已脱敏)
$ tenetora doctor
scope: project
runtime: host-supported
hooks: none registered
evidence: recorded
真实工程场景
治理改变结果的十一种具体情境。每种情境的可观察结果都来自产品的实际机制:
- 多个工具协作同一仓库每个宿主报告实际生效的 skill/plugin/runtime 来源;另一个对话不能静默完成前一段对话的 alignment。
- 多个对话并行对齐与完成证据绑定 owner;后来的对话不能继承上一段对话的 active 目标或 claim。
- 同一对话切换多个模型每次模型运行记录为独立 execution attempt;alignment session、目标与 owner 保持不变。
- 模型限流后由另一个模型接续rate-limited 不关闭 alignment;新模型追加 attempt,不创建第二个目标。
- 长任务中断后继续有界 loop state 记录目标、退出条件与下一提示;重复阻塞停止循环,其他 session 不能接管。
- 外部报告夹带提示词注入prompt guard 在遵循前分类内容;报告不能给自己授予本地执行或改写规则的权限。
- 全局安装遇到普通临时工作区没有 .tenetora/ 或 .harness/ 的目录保持静默:不注入上下文、不触发门禁——治理由项目显式启用。
- 项目依赖本地环境文件登记路径而不保存内容;doctor/status 发现缺失,commit guard 阻止暂存,宿主支持时 PreToolUse 拒绝高置信度破坏操作。
- 修改共享 API、Hook 或 plugin 契约change-impact preflight 编辑前登记契约与消费者,编辑后复扫;commit 检查区分登记与未登记的改动。
- 局部测试被当成任务完成completion claim 绑定完整验收命令与工作树指纹;更晚失败或工作树变化使旧证据失效。
- 一台机器升级多个独立项目existing-only 升级只刷新已登记安装面,发现范围可预览;归属不明的旧目录保持不动。
逐项机制、证据与边界见 概念
平台能力
各平台对已核验产品版本的最大可配置能力——不代表你的机器已经安装、激活或产生近期运行证据。
平台安装范围分发最大运行能力后续动作
Claudeglobal, project, both原生插件, hooks, skills激活插件更新后重启原生插件宿主。
Codexglobal, project, both原生插件, hooks, skills激活首次安装或 Hook 变化后在宿主中审核并信任 hooks。
Cursorglobal, project, bothskills, 合并 hooks激活重新加载客户端并运行 doctor。
OpenCodeglobal, project, bothskills, JavaScript 插件部分激活依赖完整运行时行为前先核对平台限制。
Piglobal, project, bothskills, TypeScript 扩展部分激活项目级 extension 仅在宿主项目信任决定后加载;信任项目、重启宿主,然后运行 doctor。
ZCodeglobal, project, both已注册插件, 进程 hooks激活原生插件更新后重新加载客户端。
通用 Agentglobal, project, bothskills, CLI仅 skills配置宿主 skill 目录;无可移植运行时 Hook 标准。
安全边界
- 外部输入在遵循前先检查。
- 归属不明的配置与运行时状态 fail closed。
- 完成声明必须绑定真实验证证据。
- 没有 .tenetora/ 的工作区保持静默——治理由项目显式启用。
完整边界见 安全 。