harness ☉ · 解剖
part by part
环绕模型的系统
· 八个部件

harness 的解剖

可靠性是一块块工程出来的

这些都不住在模型里。它们是环绕模型的系统,而它们之和,是一个你能放心托付真活儿的 agent。

八个系统

把 harness 拆开,逐件来看

I
编排 Orchestration
conductor · dispatch · executor

角色与模型解耦。conductor 规划 DAG,确定性 dispatch 驱动它,executor 并行跑叶子。详见下文。

II
DAG 执行器
atomic leaves · CAS · bounded concurrency

工作被编译成原子叶子的有向图。CAS 状态切换在并行下守住正确性;并发按模型调校,不让任何东西打滑。

III
记忆与做梦
temporal KG · consolidation · restraint gates

原始事件经一道“做梦”过程被提炼成分层记忆。每一次事实写入都先过克制闸门与校验器,才被允许落库。

IV
技能底座
skills · genes · facts on SQLite

一张底座统一能力、行为基因与习得事实:可检索、可迁移、能彼此喂养。详见下文。

V
MCP 路由
one route · menu resident · schema hidden

所有 Model-Context-Protocol 工具收敛到单一路由。schema 按需加载,不再撑爆每次 prompt,省下大量且持续的 token。

VI
规划模式
read-only deliberation cockpit

一个预飞模式:能读、能推理,但不能写。源码落地的规划、工具调用闸门,以及每轮重审的台账,落任何改动之前先想清。

VII
Web 栈
search pool · clean extraction

一池轮换的搜索源,加上把网页剥到只剩信号的抽取。研究与检索,无需手动喂 URL。

VIII
契约与护栏
types · validation · state machine · acceptance

不变量被钉成可证伪的契约。与契约冲突的实现让路;被代码证伪的契约也让路,并留痕在案。

意图
conductor → DAG
dispatch 驱动
executor → 叶子
记忆

痛点 → 解法

agent 崩坏的六种方式,被逐一工程封死

朴素 agent 循环的每一处弱点,在 harness 里都有一个结构性的答案——不是礼貌地请模型守规矩,而是一套让越界根本不可能发生的机制。

01 agent 流程缠成一团意大利面

DAG 把意图切成原子叶子,每片都带 CAS 保证,且必须在计数前断言自己的后置条件。

一片叶子,一道故障边界。
02 凭空虚构不存在的变量与符号

任何点名的字段、表或符号,落笔前都先对实时 LSP 与代码图谱核验。证据路由——结构层测绘、事实层坐实,标识符绝不靠猜。

不许幻觉标识符。
03 张口就来,从不查证

grounding 闸盯住需要权威的论断,把它们绑到来源;领域词表让法定数字与领域事实无从编造。

论断都带出处。
04 弱模型引入“行位偏移”错误

hashline 编辑在行级校验每个补丁;LSP 实时喂入符号与类型。放错位置的编辑会被当场抓住并修正,绝不提交。

外科式补丁,而非推倒重建。
05 原地打转,走不出去

driftDetector 盯住重复、给走神分类,并在 token 烧在死循环上之前,把运行拉回上一个良好锚点。

被抓住、被分类、被回正。
06 agent 宣称一个它从未挣得的"成功"

每片叶子计数前必须断言自己的后置条件;高风险接缝交给专职反驳结果的对抗式 verifier。检查不过 → 回流,绝不静默放行。

绿,不等于对。

四种力量,一桩任务

角色与模型解耦

诸Wright各司其职。没有谁被绑死在某一个模型上;那种绑定是运行时的选择,每桩任务都重新决定。

000° 090° 180° 270° one task 一桩任务 conductor r·110 · 规划 dispatch r·150 · 驱动 executor r·200 · 执行 verifier r·240 · 校验
Conductor
规划与分解

把意图拆成原子叶子的 DAG,并决定什么跑、按什么顺序跑、每片叶子要证明什么。重推理——这是设计大脑。谁规划得最好就换谁:Opus、Codex、GLM。

Opus · Codex · GLM
Dispatch
派发与把关

从 DAG 取出就绪的叶子,按拓扑分层,在有界并发下铺开——一路用 compare-and-swap 守住状态诚实。确定性 harness 代码,回路里没有模型。是那个绝不放偏移过去的运行时。

确定性 · 无模型
Executor
干活

在分配到的模型上跑单片叶子——工作的原子:一段码、一次改动或一组工具调用,自带故障边界。廉价、且大规模并行:DeepSeek 铺到 256 路、MiMo 8 路跑多模态,并发按模型调校,谁也不打滑。

MiMo · DeepSeek
Verifier
校验与反驳

一个跨模型的怀疑者——指向哪个 provider 都行、绝不绑死一个——它的职责是攻击结果、而非盖章放行。它在"绿还不够"处激发:高风险接缝、契约边界、phase 末尾。发现真问题,conductor 静默升级到更强模型并重规划;没有,则这片叶子计数。默认关闭、单轮、有上限——是一面镜子,不是仪式。

模型无关 · 跨模型

一个 executor,三种叶子

conductor 给每个节点打上 kind;dispatch 把一层并排铺开,每片叶子各按各的方式跑——最可靠的那次模型调用,是你根本不必发的那次。

inproc 默认

单次模型调用——纯文本生成,不带工具。

现场 in-process,经 parallel 原语,不落数据库。

改文件 · 不 leafModel · DeepSeek 256 路 · MiMo
agent 带工具 · 能改文件

带工具的子 agent——可多轮、可调工具。

由配置的 agent runner 驱动一整个子循环。

改文件 · 能 agent 子循环 · MiMo · DeepSeek
command 零 LLM

确定性 CLI——完全不用模型。

command runner 跑节点的 command;exit 0 即 done。

改文件 · 能 无 · 纯 shell

设计即安全:agent 叶子缺 runner → 降级 inproc(无工具、不改文件)并告警;command 叶子无可跑之物 → 直接 failed,绝不静默。

检查不过 → 回流给 conductor,绝不静默放行

钩子与缝

建在 pi 事件之上——可注入、可配置

可被你扩展的可靠性。三个钩子骑在 pi 的事件流上;另有五道缝,编织在 harness 各处——每一处都是你自己的代码、配置或 domain pack 可以接入的地方。

pi 事件级钩子

toolGate

工具执行闸:危险命令防护 + 工具白名单。没有你未授权的东西能跑起来。

driftDetector

元认知安全网。检出原地打转 → onSpinning;逃出卡死循环 → onRecovered。threshold 与重复注入可调。

dangerousCmd

在 push --force、rm -rf 这类不可逆操作触达 shell 之前就拦下。

wright 可注入缝

memory 写闸

validateFactWrite + namespaces,reject-by-default。domain pack 覆写"什么允许落库"。

grounding 闸

观测消息输出;lexicon + action 可注入。domain 注入法定词表,让答案带来源。

信号生产者

onFailure / onMiss / onCorrection / onSpinning / onRecovered / onGrounded——把 runtime 信号接进你自己的 sink。

role-model 缝

resolveRoleModel + .wright/config.json:conductor、executor、leaf、dream 各绑一个你可替换的模型。

MCP 路由

/mcp add 运行时注册 server;mcp_search 路由到它。加新工具无需碰网关。

此处讲概念 · 文件级细节在 docs。