每个仓库各自维护 harness
将 .claude/ 从一个项目复制到另一个项目,手动同步既费力又容易出错。
智能体、技能、钩子、权限和记忆统一保存在一个配置中,用一条命令即可重建。渲染到 Claude Code、Codex、Cursor、Copilot 和 AGENTS.md,同时保留你的自定义内容。
npx navori init 没有 harness,模型只能独自决定如何处理你的请求。navori 在这条路径上设置八个站点:从一句话到提交,再将决策存回记忆。
模型读取提示词之前,启动钩子已经运行。这让助手开启会话时就了解当前状态,无需每天从零开始。
如果你同时维护多个项目并使用 AI 智能体,就会熟悉这些问题。
将 .claude/ 从一个项目复制到另一个项目,手动同步既费力又容易出错。
Claude 使用 .claude/,Cursor 使用 .cursor/,Copilot 使用 .github/copilot-instructions.md。同样的意图分散在三个文件。
如果无法版本管理和持续更新,技能、钩子与规格驱动开发约定就会逐渐偏离。
两个可叠加的作用域,均需主动启用。工作区在仓库配置上增加规则,同时保留仓库能力。
提交到版本库的 navori.config.json 是唯一事实来源。render 据此幂等重建 CLAUDE.md、.claude/ 和 progress/,同时保留你的内容。
navori.config.json
navori init 组织级默认值,包括质量关卡、基础分支与约定,以及 Dominio:跨仓库的持久事实,如数据模型、服务间契约和共同注意事项。
~/.navori/workspaces/<org>/
navori workspace · navori dominio 未启用就没有额外足迹:不运行对应的 init,navori 就不会在仓库外写入任何字节。
每层叠加在前一层之上,由你决定项目层面的控制程度。
navori 管理的基线:智能体、技能、钩子和规则块,始终存在。
面向 Next.js、NestJS、Astro、Expo、Medusa、monorepo 等技术栈的默认值。没有适合的?用 `navori preset init` 创建本地预设。
跨仓库共享的组织规则,以及工作区 Dominio。
navori.config.json 中属于本仓库的设置:质量关卡、关键区域、旧代码路径与启用的插件。
通过同一流水线渲染为 Claude Code、Codex、Cursor、Copilot 和 AGENTS.md 的原生格式。
{
"$schema": "https://ulisescm.github.io/navori-harness/schema/navori.config.v1.json",
"name": "your-app",
"engines": ["claude", "codex"],
"preset": "nextjs",
"branchBase": "main",
"commits": "conventional-es",
"qualityGate": {
"full": "pnpm lint && pnpm test"
},
"plugins": {
"engram": { "enabled": true },
"codegraph": { "enabled": true },
"tgrep": { "enabled": true },
"gh": { "enabled": true }
},
"project": {
"criticalAreas": ["auth", "billing"],
"legacyPaths": ["src/legacy"]
},
"audit": { "mode": "always" }
} 点击层级即可高亮它生成的内容。适配器将结果转换为各引擎的原生格式。
选择一层,查看它添加的内容。
每个插件包含技能、协议块、权限与 doctor 检查。启用需要的插件后,harness 就知道何时使用、何时无需使用。
acli 外部 使用正确账户,通过 acli 读写任务。任务接收从原始工单开始,无需手动粘贴描述。
codegraph 搜索 本地仓库 AST 图:符号在哪里、谁调用它、修改后影响什么。一次查询替代多轮文本搜索与文件阅读。
engram 上下文 决策、根因与约定在会话结束和上下文压缩之后仍然保留。下周无需重新解释上周决定的事情。
gh 外部 通过 gh 管理 issue、PR 与检查。智能体读取任务,按仓库格式创建 PR,并理解失败的 CI。
tgrep 搜索 仓库的三元组索引,查找包含指定文本的文件,保留退出码契约,无需适配机器上的搜索引擎。
navori 生成 harness,不替智能体运行 grep、测试或 linter。它规定使用什么工具及遵循什么规则,实际执行由对应角色负责。
写规则容易,确认是否执行很难。navori audit 回答两个问题:token 花在哪里,哪些指令没有得到遵守。
$ navori audit --session latest◇ navori-harness · 2026-09-12 ─────────╮│ 1 sesiones · 19 agentes ││ facturable 2.3M tok ││ arranque 346k tok ││ hallazgos 1 alto · 3 medio │╰──────────────────────────────────────╯→ report.md · report.json
区分计费、启动与各智能体用量,让 harness 成本从猜测变为可优化的数据。
按严重程度报告真实路由问题:忽略的技能、高成本搜索路径,以及没有发生的委派。
钩子事件日志记录 harness 行为;会话记录保存 token;宿主 OTel 事件记录权限批准与活跃技能。
没有提前运行 --start,就没有可审计日志,navori 也不观察任何活动。Markdown 与 JSON 报告保存在 ~/.navori/audits/;--snapshot/--compare 用于对比区间,只描述结果,不宣称改进。
按实际使用时机对 CLI 注册的所有子命令分组。每个命令都有独立参考页。
同一 harness 通过同一流水线生成各引擎原生格式。增加引擎只需声明式适配表,无需重写。
.claude/
智能体 · 技能 · 钩子 · 带权限的 settings.json
.codex/ + .agents/skills/
自定义智能体 · 技能 · 钩子 · MCP 服务器
AGENTS.md
通用规范 · Cursor、Codex、Gemini 和 Copilot 均可读取
.cursor/rules/
.mdc 规则 · 项目上下文
.github/copilot-instructions.md
工作区指令
.pi/
扩展、智能体和钩子 · 需要 Pi >= 1.1.0
用清晰语言解释升级带来的变化。
无需全局安装,使用 npx。
npx navori init
回答提示,即可获得 navori.config.json 与渲染后的 harness。
? Project › my-app ? Engine › claude ? Preset › nextjs ✓ Done — 5 created
编辑配置,运行 render --apply,再提交。整个过程幂等。
$ vim navori.config.json $ npx navori render --apply $ git add . && git commit
navori 可以共存。init 检测现有 harness,只添加带标记的受管理块,保留自定义内容。要纳管某个文件,可用 navori adopt 包装,原文保持不变。已有编排或 SDD 时,可用 blocks.exclude 排除对应规则块,避免相互竞争。
六种均已提供:Claude Code(.claude/)、原生 Codex(智能体、技能、钩子和 MCP)、通用 AGENTS.md、Cursor(.cursor/rules/)、Copilot,以及 Pi(.pi/ 扩展、智能体和钩子,需要 Pi >= 1.1.0)。它们共享渲染流水线,修复可同时覆盖所有引擎。
不需要。navori 是脚手架工具,生成 harness 后即可退出。它运行于 Node 22.12+,能够渲染六种不同引擎。
render 默认预览,不带 --apply 就不写入磁盘。真正写入前,通过 navori backup 保留可恢复快照,并使用原子写入。仓库外的操作都需明确启用:没有 global init 就没有全局层;没有 --start 就没有审计。
运行 npx navori@latest sync,只更新受管理块,保留你的代码。使用 --interactive 逐块处理手动改动;navori refresh 可先说明将发生的变化。
通常低于预期,也无需只凭感觉判断:navori audit 会显示真实会话的 token 去向。每个智能体使用适合的模型与推理强度,判断任务用强模型,机械任务用轻模型;子智能体只返回结论,不返回全部阅读内容。