内容
# 元认知计算调度
**停止在无关紧要的步骤上浪费您的最佳模型 — 停止让您的廉价模型在决定整个任务的步骤中犯错。**
这将 *"该步骤值得多少计算资源(系统 1 廉价生成 / 系统 2 深思熟虑)"* 从代理中分离出来,成为一个**独立的在线学习 MCP 服务**。它通过经济拍卖模型决定每一步,并根据实际结果在线校准,取代了手动编写的 `if` 阈值规则。标准的 MCP 协议,零依赖,无需构建或安装,即可与任何代理循环配合使用。
```jsonc
// 添加到您的 MCP 客户端(Claude Desktop / Cursor / VS Code),然后在每一步调用 decide_step
{ "mcpServers": { "scheduler": { "command": "node", "args": ["/abs/path/to/server.mjs"] } } }
```
- 🪶 **零依赖。** 一个 `server.mjs` 文件,Node ≥ 18,无需构建、安装或 API 密钥。可与任何 MCP 客户端或您自己的循环配合使用。
- 🎯 **减少 57% 的关键错误**,与最强的单一阈值路由器相比,在相当的成本下 — 比静态规则 **更便宜、更安全**(20 次种子基准测试,p < 1e-16,§7.1)。
- 🔁 **在任务中途规则变更时仍能存活。** 当任务发生变化时,固定的阈值会继续误判;这个调度器会注意到变化并在线重新适应(§7.3)。
- 🔍 **完全可审计。** 每个决策都会返回驱动决策的确切数字(`p_crit`、`e_cost_s1`、`e_cost_s2`、`mu`)— 没有黑箱。
> 🌏 **中文版见 [`README.zh.md`](README.zh.md)** · 完整中文算法描述:[`ALGORITHM_zh.md`](ALGORITHM_zh.md)

> **主要结果 — 两层证据,诚实表述:**
>
> 1. **真实代理 + 官方评判(试点,N = 10,[§7b](#7b-real-agent-on-swe-bench-pro-under-the-official-docker-judge-pilot-n--10)).** 在 10 个 SWE-benchmark Pro 实例上,由 **官方 pytest 评判** 的真实 Docker 代理,在共享令牌预算下:EMMS 调度器解决了 **3/10**,而固定技能解决了 **2/10**,始终最大计算解决了 **1/10**,同时每解决一个任务的令牌数量减少了 **约 3 倍**。这是 *在共享预算下解决更多问题,同时减少计算资源* — 而不是绝对意义上的“快速准确”(3/10 是一个较低的绝对比率;这些任务很困难)。N = 10 是试点阶段:方向性,但尚未具有统计显著性。
> 2. **机制证据(半合成,24 次种子 × 60 次会话,[§7](#7-evidence-semi-synthetic-on-real-swe-bench-pro-structure); *不是代理 `Resolve@k`**。使用真实 SWE-benchmark Pro 金牌补丁 *结构*,中尺度层减少了关键子任务遗漏 vs 每步路由(**Δ = −1.33,p = 0.0017**),同时额外支出保持在预设范围内(**+0.9% 令牌 / +1.1% System2 调用**,两者都显著但在 +10% 预算内)— 它找到了 *正确的* 步骤进行深入思考,而不是 *更多* 步骤。
---
## 1. 它解决的问题
每个长任务的代理在每一步都会回答这个问题,无论它是否承认:
> *"我可以在这里使用廉价/单次尝试吗 — 或者我必须停下来深入思考(强模型 / 最佳 N 次 / 深度推理)?"*
如果方向错误,您就会损失:
- **始终使用全力** → 您在不需要全力步骤上支付强模型费用,*并且* 您用深思熟虑的步骤污染了上下文窗口,使后续步骤效果更差。
- **手动触发** (`if 文件数 > 12 then think_hard`) → 它会错过您未预见的情况,**并且在任务中途发生变化时锁定**。
解决方案是将 *"计算资源"* 提取到一个**独立的可学习服务**中,与 *"执行什么"* 正交。保留您的规划器和技能原样 — 只需在每一步多问一个问题。
**所有三个层都集成到一个在线 MCP 拍卖中**(§4.4):
| 层 | 学习内容 | 回答的问题 | 集成 |
| --- | --- | --- | --- |
| **元认知** (`selfModel`) | 何时值得深思熟虑 | 该步骤值得多少计算资源? | ✅ 在线 MCP 拍卖 |
| **技能记忆** (`skillMemory`) | 领域经验,基于 **受信任执行器验证结果** | 我是否已在 **该仓库** 中修复了确切的错误 — 测试退出代码是否为 0? | ✅ 在线 MCP 拍卖 |
| **中尺度集群** (`clusterIndex`) | 从真实文件/符号重叠中自动发现的子目标集群 | 是否应将整个子目标锁定为深思熟虑,而不是被噪声提示误导? | ✅ 在线 MCP 拍卖(耦合溢价 + `dump_clusters` 工具) |
元认知分配计算资源,技能记忆提供经过验证的内容,中尺度层拯救耦合但单独普通的子目标 — 所有三个都在同一个拍卖中竞标(`decide_step` / `report_outcome`)。您可以只使用第一层,而忽略其他层。
---
## 2. 工作原理
```
open_session(namespace) ← 重用元认知原型 + 技能记忆在该命名空间下
for each task:
new_task(sessionId) ← 重置上下文污染;保留原型、μ 和技能
for each step:
d = decide_step(criticality_hint, difficulty_hint, progress, context_pollution,
action_type, repo, lang, file_type, error_signature, stack_features)
# 技能层检索已验证的先前修复(相同仓库)→ d.reusable_fix,并降低/提高计算资源
if d.mode == "system2": result = 强模型 / 最佳 N 次 (昂贵,稳健)
else: result = 廉价模型 / 单次尝试 (节俭)
# 变异操作(design_patch/apply_patch/...)按操作类型强制验证(§4.4)
report_outcome(observed_criticality, used_system2,
verifier_result, outcome, patch_summary) ← 所有三个层自我学习
task_feedback(success) ← 更新 μ + 持久化原型和技能
```
调用者为元认知层计算四个任务无关的标量(都在 `[0,1]` 内),并 — 为了激活技能层和操作层 — 传递 **操作语义** 的步骤(所有可选;省略它们,调度器会退化为仅元认知) :
| 信号 | 含义 | 典型来源 |
| --- | --- | --- |
| `criticality_hint` | 该步骤看起来有多关键 | 规划器启发式 |
| `difficulty_hint` | 该步骤看起来有多难 | 输入大小 / 复杂度 |
| `progress` | 任务中的位置 | 步骤索引 / 总数 |
| `context_pollution` | 上下文有多脏 | 已使用的令牌 / 窗口 |
| `action_type` | 步骤类型 (`design_patch` / `apply_patch` / `write_code` / `read_issue` / `run_test` …) | 代理自己的操作 |
| `repo` / `lang` / `file_type` | 仓库边界 + 语言/文件上下文 | 工作文件 |
| `error_signature` / `stack_features` | 真实的错误文本 / 堆栈符号(在修复前可见 — 无泄漏) | 失败测试 / 追踪栈 |
---
## 3. 设计哲学:如何实现快速和准确
通常假设存在 **速度-准确性权衡**:快速(廉价)就会失去准确性;保持准确性就会付出代价(慢/昂贵)。这个调度器的重点是 **对于长期任务,权衡并不成立** — 你可以同时更快、更准确,因为浪费和错误来自 **相同的原因**:在每一步上花费相同的计算资源。
### 3.1 为什么“所有步骤都一样”在两个轴上都失败
| 失败模式 | 成本 | 谁会受到影响 |
| --- | --- | --- |
| **过度思考** 简单步骤 | 浪费令牌/时间 → **慢且昂贵** | 始终全力 |
| **思考不足** 关键步骤 | 错误答案 → 必须重做 → **慢且错误** | 始终廉价 |
| **冻结阈值** | 一开始正确,然后任务发生变化,继续误判 | 手动编写技能 / 静态路由器 |
| **在脏上下文中深入思考** | 模型变得 **更迷失,而不是更少** → **慢且错误** | 所有忽略上下文污染的人 |
结论:过度思考伤害 **速度**,思考不足伤害 **准确性**,它们是 **同一个方向上错误的相同决定**。修复决策,速度和准确性会一起改善。
### 3.2 实现“快速和准确”的三个设计步骤
1. **在需要的地方花费计算资源(准确性而非浪费)。** 廉价步骤使用系统 1,关键步骤使用系统 2。你停止在简单步骤上浪费深思熟虑(→ 更快),并停止让实际决定成功的步骤挨饿(→ 更准确)。这是 EMMS **竞争中的妥协**(§4):经济性和稳健性在每一步竞标,而不是一个全局设置。
2. **保持上下文清洁(速度累积成准确性)。** 每次深度调用都会污染上下文窗口;脏上下文使后续步骤 **更慢、更容易出错**(*"思考越多,越迷失"*)。通过将污染成本计入成本(`ecoCost = c + λρ`),调度器在正确的时间思考更少但更深入,从而保持上下文清洁,任务后期的准确性得到保障。这里的节俭不仅更便宜,还直接 **保护长期任务的准确性**。
3. **注意任务变化(随时间保持准确)。** 冻结规则仅在任务变化前准确,然后 **保持误判**。调度器观察 **惊讶**;当活动原型在任务中途停止匹配(`sim < 0.7`)时,它会点燃、重新检查并切换原型 — 在线恢复准确性而不是锁定。
### 3.3 一句话总结
> 快速来自 **不过度思考简单步骤并保持上下文清洁**;准确来自 **为决定成功的步骤保留深思熟虑并在任务变化时重新检查** — 因为两者是相同的每步决策,优化它会使速度和准确性朝着 **相同**的方向发展。§7 中的证据恰好显示了这一点:降低成本 **和** 减少处理不当的关键步骤。
---
## 4. 什么是 EMMS,它在何处使用
**这是人们容易混淆的部分,所以请先阅读本节。**
### 4.1 EMMS 简介
EMMS(能量最小化多尺度,Li Jinghai)研究 **两个对立的“主导机制”竞争且永远不会完全获胜** 的系统 — 例如,在气固流中,流体趋向于 **最小化阻力**(机制 A),而颗粒趋向于 **最小化势能**(机制 B)。系统不会 **趋向于两者的平均值**;相反,它达到 **竞争中的妥协**:两个极端倾向共存,由 **稳定性条件** 调节。在数学上,该稳定性条件表现为 **具有影子价格的约束优化**(拉格朗日/ KKT 对偶变量)。
### 4.2 到调度器的确切映射
我们将 EMMS 的两个竞争机制映射到 **系统 1 / 系统 2 边界**。在每一步,两种机制竞标:
| EMMS 概念 | 气固类比 | **在此调度器中** |
| --- | --- | --- |
| 机制 A — 经济性 | 流体最小化阻力 | **系统 1**:使用廉价模型,单次尝试,不要污染上下文 |
| 机制 B — 稳健性 | 颗粒最小化势能 | **系统 2**:点燃深度推理 / 最佳 N 次,支付令牌,但更安全 |
| 冲突 | A 想要流动,B 想要秩序 | 思考更多 **更安全但污染上下文** — 您不能最大化两者 |
| 影子价格 **μ** | 价格 A↔B 妥协 | **谨慎表**:高 μ → 点燃更多(谨慎);低 μ → 节省更多(节俭) |
| 稳定性条件 | 固定操作点 | μ 从任务结果自我更新:**失败 → μ↑,成功 → μ↓** |
| 竞争中的妥协 | 异质共存(不是平均值) | 每步,**一些步骤廉价,一些步骤深入** — 不是固定的全局阈值 |
关键的 EMMS 见解在这里重用:**单个全局平均/阈值是错误的**。就像气固流拒绝均匀化一样,一个好的调度器拒绝将每一步放在相同的计算级别 — 它让经济性和稳健性在 **每步** 进行竞争,由 μ 协调。
### 4.3 代码中的位置
| EMMS 数量 | 符号 | 代码位置 |
| --- | --- | --- |
| 关键概率 | `pCrit` | `selfModel.mjs` → `decideAbstract()` |
| 系统 1 的预期成本 | `eCostS1` = `μ·pCrit·missPenalty` | `selfModel.mjs` → `decideAbstract()` |
| 系统 2 的预期成本 | `eCostS2` = `consultCost·overThinkCost + (1−pCrit)·overThinkCost + λ·ρ·overThinkCost` | `selfModel.mjs` → `decideAbstract()` |
| 竞争决策 | `ignite = eCostS1 > eCostS2` | `selfModel.mjs` → `decideAbstract()` |
| 影子价格更新(稳定性条件) | `μ` | `selfModel.mjs` → `feedback()` |
这些确切的数量由 `decide_step` 作为 `p_crit`、`e_cost_s1`、`e_cost_s2`、`mu`、`regime_shift` 返回 — 因此 **您审核的决策基础是实际驱动选择**(`ignite ⟺ eCostS1 > eCostS2`)。遗留的 `rob_gain`/`eco_cost` 仍然返回用于旧的竞标图,但 **不再是模式决策规则**。**图(e)** 绘制每个步骤的预期成本比较;对角线是协调边界 `eCostS1 = eCostS2`。
### 4.4 元认知 + 操作 + 技能都在 **同一个** 拍卖中竞标
从调度器成熟为框架的成熟是:**操作层**、**技能层** 和 **中尺度集群层** 不会用 `if/else` 覆盖拍卖 — 它们以 **障碍和影子价格** 的方式进入稳健的竞标,约束和激励的确切标准方式。一个竞标,多个证据来源,都在同一个在线 MCP 路径中(中尺度耦合溢价馈送 `decide_step` 并通过 `dump_clusters` 暴露结构,§6):
$$\mathrm{robBid} = \underbrace{\mu\,\hat p\,\mathrm{missPenalty}}_{\text{元认知}} + \underbrace{\text{actionPremium}}_{\text{操作层}} + \underbrace{\text{skillNovelty} + \text{crossRepo} - \text{skillReuse}}_{\text{技能层}} + \underbrace{\text{clusterCoupling}}_{\text{中尺度}} + \underbrace{\text{barriers (irreversible/critical/budget)}}_{\text{安全}}$$
| 术语 | 层 | 对竞标的影响 | 基于 |
| --- | --- | --- | --- |
| `actionPremium` | 操作 | 变异操作 (`design_patch`/`apply_patch`/…) 提高竞标 **无论风险提示如何** | 操作类型,与上游提示正交 |
| `skillReuseDiscount` | 技能 | **同一仓库、受信任验证** 的先前修复存在 → **降低** 竞标(重用已知解决方案,减少思考) | 仅记录受信任执行器标记退出代码 0 |
| `skillNoveltyPremium` | 技能 | 语义上看不见的错误/堆栈 → **提高** 竞标(谨慎探索) — 按风险比例缩放 | 决策时间错误/堆栈的本地嵌入相似性 |
| `crossRepoPremium` | 技能 | 类似的先前剧集但来自 **不同的仓库** → **提高** 竞标;仅显示人类审查的 `reference_case`,永远不是 `reusable_fix` | 仓库匹配 vs 最佳相似性 |
**解决原始 `design_patch` 误判的两个设计规则:**
1. **变异操作永远不能在低风险提示下被无声降级。** 即使 `criticality_hint` 明显较低,且 μ 已衰减,`actionPremium` 保持 `design_patch` 不被视为微不足道的步骤 — 并且 **强制验证**,无论 `mode` 如何。
2. **验证策略按操作类型调度**,而非一刀切:`design_patch → review`,`apply_patch / write_code / edit_file / refactor → test`,`delete / migrate_schema → dry_run`,`run_test → none`。
重用 **不**意味着“跳过系统 2 在关键变异步骤上”(这会牺牲安全性) — 关键变异步骤仍然会达到 `∞` 障碍,并且始终进行深思熟虑。重用使深思熟虑 **更便宜**(验证已知修复)而不是 **从头开始搜索**。省略 `ctx.skill`/`action_type`,所有这些术语都会消失 → 竞标会完全退化到仅元认知拍卖(`skillGateTest.mjs` 断言)。
5. 公式中的原理:一次“点燃”= 一次拍卖
每个步骤都是一次 EMMS 拍卖(参见第 4 节),用公式表示。
**步骤 1 — 注意力聚焦**(在自身成长的库中找到最相似的原型):
$$\mathrm{sim} = \max_{p}\exp\!\Big(-\frac{\lVert x - \mathrm{protoFeat}_p\rVert^2}{2\tau}\Big),\qquad \mathrm{surprise} = 1-\mathrm{sim}$$
**步骤 2 — 对两个结果进行估价,视为预期成本:**
首先,将读数转换为**可能关键概率**,在情况时(`predErr` 高,`sim` 低)进行膨胀:
$$\hat p = \mathrm{clip}_{[0,1]}\big(\hat c + \tfrac12\,u\,(1-\hat c),\qquad u = \mathrm{predErr}\-\mathrm{sim})$$
- 保留 **System 有误处理真正关键步骤的风险;其预期 μ 定价:
$$\mathrm{eCostS1} = \mu\,\hat p\,\,\mathrm{missPenalty}$$
- 点燃 **System 2** 始终会支付深度调用成本,如果步骤不是关键的,则会浪费精力,并且在上下文已经很脏时,惩罚更重:
$$\mathrm{eCostS2} = \mathrm{consultCost}\cdot\mathrm{overThinkCost} + (1 p)\,\mathrm{overThinkCost} + \lambda\,\rho\,\mathrm{overThinkCost}$$
3 — 协调与决策(选择更便宜的预期结果):**
$$\boxed{\ \mathrm{ignite}text{library empty}) \ \lor\ (\mathrm{eCostS1} > \mathrm{eCostS2})lor\ \mathrm{regimeShift}\ 空库 → 必须点燃(没有模式);
- `regimeShift`:如果活动原型不再与任务中途匹配(`sim < 0.7`)→重新检查 → 切换原型。**这是循环级元认知闪耀的地方。**
> **常数来自哪里(诚实笔记)。**Penalty`、`overThinkCost`、`consultCost` 编码 *“误处理关键步骤与过度思考容易步骤相比有多糟糕”*。在此原型中,它们是**手动调整的启发式**,选择与玩具成本模型(cheap = 1,deep = 5,mishandle = 1 + 5)相匹配。对于实际部署,它们必须**从测量的 token 成本、延迟和重试/升级策略中重新导出** - 它们不被声称是通用的。规则的方向(当预期的廉价成本超过预期思考成本时点燃)是贡献;确切的数字是一个校准旋钮。
协调变量 **μ 是一个影子价格**(KKT变量)。它通过稳定性条件自行调整:**失败 → μ↑(更谨慎),成功 → μ↓(更节俭)。**
<img src="figures/figidding.png">
原型 = `{protoFeat: 情况仿射读数 ĉ(x),自我校准 predErr,计数}` — **压缩的元认知判断**(“类似情况往往是关键的”)。它 *不是* 领域技能 - 实际 *内容* “错误是什么,如何修复,是否通过”存在于 **技能内存层**(第 6 节),而不在这些原型中。
---
## 6. 技能记忆层:学习领域经验
元认知决定 *思考多少*;它 **不** 学习 *pytest 中 ScopeMismatch 的样子或如何修复*。该领域内容是专用 **技能内存层**(`skillMemory.mjs`)的工作。两者是互补的:调度器分配精力,技能内存提供已验证的内容,使精力更便宜。
技能记录 = **一个实际验证的解决经验**:
```javascript
{
repo, lang, fileType, actionType, // 仓库边界 + 操作类型(结构化)
errorSignature, // 实际错误文本 / 异常类型
stackFeatures: [token…], // 实际堆栈 / 符号特征(已编辑,≤ 64)
changeFootprint: {files,hunks,loc}, // 实际编辑大小
patchSummary, // 可重复使用的修复(“技能”内容;已编辑,大小上限)
verification: { // ★ 通过 TRUSTED 执行器进行加密证明 - 不是自我报告
source, exitCode, testCmd, // 实际结果字段;例如 {source:"executor", exitCode:0, testCmd:"pytest -q"}
Hash, patchHash, // 来源
nonce, ts, attestation:{sig} }, // ★ HMAC 签名 + 一次性随机数 + 新鲜时间戳 - 客户端无服务器密钥无法伪造
injectionFlag, // 存储的错误/补丁文本上的提示注入标记
queryEmbed } // 仅决策时间字段的本地嵌入(无补丁文本)
}
```
**接地气规则(这才是重点)。** 重用置信度仅按 **受信任执行器** 用退出代码 0 标记的记录加权 - 代理自我报告 `outcome = 1` **不** 算数。失败尝试 **不** 使调度器更自信 - 它直接证伪了“它只是越来越游提示”这种。检索向量仅编码 **决策时间可见** 字段(仓库/语言/堆栈);事丁摘要被排除,以免稀释错误匹配。当同一错误在 **同一仓库** 中再次出现,并且信任验证的修复时,技能层会显示它(`reusable_fix`)并降低出价;来自 **不同** 仓库的类似事件返回 **仅供人工审核的参考案例**(`reusable_fix` 始终为 `null`)并提高出价(仓库边界)。存储的文本被编辑(键/令牌/电子邮件),大小上限,并标记为提示注入。
| | 手写技能 | 元认知原型 | **技能内存记录** |
|---|---|---|---|
| 学习 | 无(人类编写) | *何时* 审议 | ***什么* 是错误 → 修复 → 是否通过** |
源 | 人类编写触发器 → 步骤 | 从经验中成长 | 从 **受信任执行器验证** 的解决过程中成长 |
| 仲裁 | 硬触发器,容易误判 | 相似性 + 置信度 | 相同仓库 + 受信任验证 → 重用;**跨仓库 → 仅供人工审核的参考案例,绝不重用修复** |
| 失败模式修复 | - | 过度/不足思考 | 重新搜索已验证的修复 |
> **诚实边界。** 本地嵌入是 **64 维 FNV-1a 令** - 这是错误/堆栈文本(查询向量故意后补丁文本)的词汇相似性检索,是一个零依赖的起点。它 ** 训练的语义代码嵌入,我们不“理解”义。技能可性由 **加密证明** 的受信任执行器(HMAC 签名退出代码 + 随机数 + 时间戳,见 `attest.mjs`)担保,而不是由代理自我报告或可伪造的纯文本声明。交换真正的嵌入模型是一种即插即用的升级。
### 6a. 两种运行模式(端点隔离)
签名端点 `issue_attestation` 铸造牌,因此绝不受信任的客户端,服务器以两种模式之一运行:
| 启动命令 | `issue_attestation` |
|---|---|---|
| **调度器**(默认) | `npm start` | 对 `tools/list` 隐藏 **且** 被拒绝 - 这就是不受信任的 MCP 客户端连接 |
| **执行(受信任) | `EMMS_EXECUTOR_ENDPOINT=1 npm start`(或 `npm runexecutor`) | 暴露;**仅** 在受信任的隔离后面本地/Unix接字),绝不能面向不受信任的客户端MAC 密钥 *在没有服务器造令牌*;模式分割可以防止 *完全访问签名者*。两者都是必要的。在 `endpointIsolationTest.mjs验证(运行 `npm:isolation`)。
---
## 6b. 中尺度集群层(子目标集群)
第三层解决了不同的故障:当每一步的 `criticality_hint` 噪声较大时,一个真正关键的步骤可能看起来无害,孤立地看可能级。`clusterIndex.mjs` **在线自动发现** 子,通过 **决策时间可见信号** 的联合查找(文件 Jaccard,accard,传播,计划父节点),从实际验证的结果集群关键性,并 EMMS **耦合溢`clusterPremiumWeight · coupling ·akes · missPenalty`)- 因此,一个误导性的低提示不能击沉一个关键的子目标。它被连接到实时 MCP 服务器(`decide_step` 接受文件/符号/测试失败/计划节点;`dump_clusters` 了发现的结构在 **半合成 SWE-bench Pro 证据`beta-mes2/eval_clusters.mjs与图中的 `s.mjs`基准 - 补丁 *结构* + 建模提示噪声 成功/干扰步骤;不是代理轨迹)上,它同时满足两个硬性指标:**(M1)** 比每步路由更少的关键子任务缺失(Δ ≈ −1.33,p ≈ 0.0017;在噪声 0.42:Δ ≈ −4.21,96% 的种子);和 **(M2)** 额外的 System2 调用 **在预设的 +10% 预算范围内**(显著,不是零 - 这劣性,而不是“无额外)。参见第 7 节。
> **诚实边界。** 集群边界 **不** 提供给任何臂 - 集群臂必须从实际文件/符号重叠中自动发现它们。评估 **惩集群**(将拉入集群 System2 → M2 爆炸超过并自动失败)。集群必须 **正确 才能获胜 - 这就是为什么 M1 ∧ M2 一起循环论证部分:来自金补丁的共同更改文件/符号/仓库/测试模部分(标记,可替换):每步提示噪声,System2,干扰步骤。
---
## 7. 基于 SWE-b 结构的半合成> **范围,一开始就说明白。** 这 **不是** 代理 `Resolve@k` 和 **不是** 实际代理轨迹。这是一个 **半合成** 评估:结构是真实的(哪些文件/符号共同更改在 731 个真实 SWE-bench Pro 金补丁中),但金补丁是 **未来信息** 用于实时决策,因此我们仅使用其结构来定义 *哪些子目标是真正关键的*;每步提示噪声,System2=0.9 成功率和干扰步骤是 **建模的**证明了 **机制**(自动集群是否在真实耦合下拯救弱提示关键步骤),而不是端到端解决速率。参见第 8 节,了解这 **尚未** 显示的内容。
所有图形 Times New300 dpi。结构来自 **真实 SWE-bench Pro**(`sweap_eval_full_v2.jsonl`,731 个真实 PR 实例,随 `data/` 交付):每个实例的 **共同更改** 和 **符号** 从官方金补丁中解析;仓库/是真实的模(标记,可替换):每步提示噪声,System2 成功率,干扰步骤(来自其他同一仓库实例的真实文件)。端到端重现:
```bash
node figures/gen_fig_data.mjs # 从真实数据收集 -> figures/fig_data.json
python figures/make_figures.py # fig_data.json -> 以下 7 张图片
node eval_swebpro_clusters.mjs --seeds 24 --sessions 60 --noise 0.3 # 相同的数字,作为可伪造的 PASS/FAIL 判决
```
用于 ** 10 个真实实例**(`.json`):element-web(6 个文件),qutebrowser(5 个),NodeBB(5 个),openlibrary(4 个),v4 个),tutanota(5 个),flipt(3 个),webclients(3 个),ansible(2 个),teleport(2 个)。具有 ≥5 个多文件 PR 的仓库:ansible(84),pt(84),openlibrary(73),webclients(62),tele58),qrowser(56),navidrome(52uls(52),element-web(47),NodeBB(41),tutanota(17)。
### 7.1 三臂成本曲线 - `fig1_arm_cost.png`
显示的内容:**调度策略在相同的 种子 × 60 会话上。一次会话 = 来仓库的 2~3 个真实 PR + 干扰步骤,交织和打乱。估计令牌): = 12 = 误处理关键步骤 = 该子任务未对非关键步骤进行深度思考 = 浪费的过度思考。
臂 | 估计令牌 ↓ | 关键缺失 ↓ |思考 ↓ | System2 调用 |
|---|---|| `always(蛮力 在所有情况下运行 System2) | | 83 | 399. 1229.75 |
| `step每步路由) | 7765.13 | 17 | 123.79 | 933.63 |
| **`中尺度,我们的)** | 7837.17 | **99. | 132 | 943.**如何阅读:** `always-S2缺失最会多消耗约 27% 的令 4 倍的过度思考 - 这是“在所有情况下都狠狠思考” 的 strawman。我们的 `cluster` 臂恰好与廉价的 `step` 基线成本相邻(+0.9% 令牌,+1.1% System2),但弥补了基线的缺失。重点是 **下一张图**:这种小而可控的额外支出正是购买安全收益的原因。
<img src="figures/fig1_arm_cost.png">
7.2 核心结果 - 中尺度增益满足 M1 ∧ M2 同时 - `fig2_m1m2.png`
集群边界** 提供给任何臂;集群臂查找 **决策的实际文件/叠** 自动发现它们。两个条件必须 **同时** 成147 个关键子任务,配对 种子):
| 指标 | 含义 | 值 | 判决 |
|---|---|---| **M1**子任务缺失 Δ(集群 - 步)| **-1.33**(101.17 → 99.83对 *t* = -14,**p = 0.0017**,集群获胜 58% 的种子 | ✅ 显著减少 |
| **M2** | 系统 2 Δ(集群 - 步)| 它是否通过升级更多来作弊? | **+10.29 次调用**(933.63 → 943.92)-* 增加(p ≈ 0),但 **在预设的 + 非劣效性界限内≤ 1027)| ✅范围内(不是“没有增加”) |
**如何阅读:** 一种方法可以简单地通过将所有内容升级到 来赢得 M1 - 但失败 M2。两者都通过意味着集群层找到了 **正确** 的步骤议,而不仅仅是 **更多** 步骤。负 M1 且 p <01 是头条新闻:较少的关键子任务在噪音走,基本上与基线成本 src="figures/fig2m2.png">
> 评估罚过度集群**:将干扰步骤拉入集群会浪费 System2 → M2 超过其上限并自动失败。因此,集群必须 **正确发现** 才能获胜 - 这就是为什么 M1 ∧ M2 一起不是一个循环论证的原因。
### 7.3 自我校准 + 影子价格 - `fig3_learning.png`, `fig4_mu_trace.png`
**`fig3_learning`(左)-会话的关键任务缺失率(集群臂,120 个会话,共 10 12 个会话):**
| 批次 | 1 | 2 | 3 | 4 | 56 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 缺失率 | 6.5% | 5.7% | 6.9% | 2.3% | 9.3% | 8.2% | 7.8% |1% | 7. | 8.5% |
**如何阅读:** 从第一批缺失率就 **保持低位且有界(约 2-9%,平均约 7%) 它 *不* 需要长时间的。诚实的阅读是:胜利是一个 *稳定低* 的缺失率在噪声提示下,**不是** 一个戏剧性的下降学习曲线(该系列是噪声的,而不是单调递减的)。
**`fig4_mu_trace`(右)- 120 个会话的 EMMS 协调变量 μ(风险的影子价格):** 从 **μ = 0.9** 开始并稳定在 **μ = 0.3**,一个内部固定点。μ 是耦合 rob-bid 和 eco-ask 的“汇率”;其收敛是拍卖稳定的原因,而不是在廉价和深度之间振荡。
<imgfigures/fig3_learning.pngimg src="figures/fig4.png">
### 7.标几何 + 噪声鲁棒 `fig5_bidding.png`, `fig6_noise.png`
**`_bidding`(左)- 每个步骤都以(rob-bid,eco-ask)绘制,并带有边界。** 超过对点点燃 System2;低于线的点则保留 System1关键的步骤被推送到近大 rob-bid(硬障),以便始终审议;集群耦合溢价将类似但看起来普通的步骤推过界线。
fig6_noise`(右 **可伪造的鲁棒性** 随着每步更加嘈杂,M1益如何变化。M2噪声级别下保持在预算范围内。
| 提示噪声 σ | M失 Δ(集群 - 步 p | 集群胜率 | System2 vs 基线 | M1 | M2 |
|---|---|---|---|---|---|---|
| 0.1 | -0 | 0.0098 | 29% | 1.2余量 | ✅ | ✅ 0.2 | -1.21 | 0.000358% | 1.3× | ✅ | ✅ |
| 0.3 | -1.71 | 0.0002 | 75% | 1.3× | ✅ | ✅ |
| 0.423.00 | 02 | 88% | 2× | ✅ | ✅ 0.5 | - 1e-4 | 96% | 1.1× | ✅ | ✅ |
**如何阅读:** 提示噪声越大优势越大(-0.38 → -3.33)且获胜次数越多(29% → 96% 的种子)。这是该机制的特征:单个全局阈值会被“看起来普通但实际上关键”的同一 PR 步骤所欺骗,而集群使用真实耦合来一起挽救它们。当提示清晰时(σ=1),几乎没有什么救的,因此增益很小 - 正如预期的那样。
<img src="figures/fig5_bidding.png"> <img src="figures/fig6_noise.png">
### 7.5 概述 - `overview.png`
以上图形的 2×3 复合图(臂成本,M1/M2,学习,μ,招标,噪声),用于单览。
<img src="figures">
7b. 真在 SWE-bench Pro 下的官方 Docker 评判(试点,N = 10)
> **这是真实轨迹证据,§7 中的数据并非如此。** 一个真实代理(真实 Docker 容器,检出到 ``,bash 工具,最多 250 步)为 10 个困难的 SWE-bench Pro 实例生成了真实的 `git diff` 补丁;每个补丁都由 **官方 `swe_bench_pro_eval.py` 评判器运行 pytest**(FAIL_TO_PASS 必须变为绿色)。三个分支共享一个 token 预算,因此在简单步骤计算资源,以便为困难步骤留出计算资源。**N = 10 是一个试点 —— 方向性信息,不具有统计显著性。**
| 分支 | 已解决(官方 pytest) | token / 已解决 | 每 100k token 已解决 |
| --- | --- | --- | --- |
| `always-full`(每步最大计算) | **1 / 10** |,140,955 | 0.024 |
| `static-skill`(固定 hard=full 规则) | **2 / 10** | 1,846,046 | 0.054 |
| `conscious`(EMMS 调度器) | **3 / 10** | **1,300,850** | **0.077** |
**这说明了什么,不说明什么 —— 请诚实阅读:**
- **它不是绝对意义上的“快速和准确”。** 3/10 的解决率很低;这些任务确实很难,每个分支都失败了大部分任务。诚实的说法是 **相对的,在共享预算下**:调度器解决了更多任务(3 vs 2 vs 1),同时在每个已解决任务上花费的计算资源更少(比 always-full 便宜约 3 倍)。它是“在花费更少计算资源的情况下解决更多任务”,而不是“快速解决所有任务”。
- **`always-full` 实际上有害:** 10 次尝试中有 2 次产生空/过长的补丁(上下文在无条件最大计算下爆炸)。证据表明,“在所有地方进行最大计算”并不是免费的。
- **技能进化发生在真实结果上。** 重放 10 个真实的 PASS/FAIL 结果,通过一个全新的核心,原型从 `0 → 1 → 2 → 3` 增长,影 `μ` 自适应地从 `1.0 → 1.41` 变化,System2 点火累计从 `0 → 5` —— 即它学习了 **哪些步骤值得深虑**。
-警告仍然存在: = 10,单个基准模型,一次随机种子。统计上有意义的声明需要 ≥ 5 次随机种子 × 更多实例。这是 **黄金标准方法在试点规模上的应用**,如报告所示。
原始制品(每个实例的补丁,评判器 `eval_results.json`,token/步记录)存活在评估服务器上;框架是 `agent-eval/runBench.mjs`(真实 Docker 协调器)+ `harness/swe_bench_pro_eval.py`(官方评判器)。
---
## 8. 新颖实的定位)
真正经得起审查的是:
1. **一个与“做什么”正交的元认知计算层。** FrugalGPT 使用静态路由,Reflexion 是事后才有的,Voyager 仍然是技能,RouteLLM 没有偏移检测和成本污染。没有人将 **“多少计算资源”** 作为一个独立的、可学习的、暴露给 MCP 的服务,由任务无关的信号驱动。
2. **三层在一个在线拍卖中。** 元认知(何时思考),技能记忆(受信任的领域经验)和中尺度集群(耦合溢价超过自动发现的子目标)都进入 **相同的** EMMS 投标,作为障碍/影子价格(§4.4)—— 不是堆叠的 `if/else` 重载。动作类型、已验证的先前修复和实际子目标耦合改变了计算决策,锚定在 **受信任的执行器结果**,而不是上游提示。
3. **在线制度偏移检测 + 原型切换。** `sim < 0.7` 强制重新检查;系统在任务中途适应,而冻结阈值锁定(§7.3,+5–10 分,所有 p < 0.001)。
4. **上下文污染进入决策成本。** *"你想得越多,事情就越混乱 → 你不应该想得更多。"* 大多数框架都忽略了这一点;在这里,它是一个一等价项 `ecoCost = c + λρ`。
诚实的边界:
- 这是一个 **研究原型**,不是生产组件;超参数在小规模下校准。
- **“有意识”** 是一个 **功能性** 隐喻(GWT 点火 + AST 自我模型 + 元认知)。**没有现象意识的主张。**
- **上下文污染是一个综合模型规则,而不是测量的 LLM 证据。** 在基准测试中,System 2 **程序化地** 在 `context_pollution` 上升时失败更多(`ecoCost = c + λρ`)。这验证了机制在 **模型内部** 按照设计运行,但它 **不是** 实际 LLM 中真实的长上下文退化证据。确认现实世界的影响需要在一个带有测量准确性的实时模型上运行端到端。
- 常数(`missPenalty = 6`,`overThinkCost = 4`,`consultCost = 0.1`,阈值 ` = 0.8`)是 **手动设置为化的成本模型**,而不是拟合一个真实的 token/延迟/错误预算。不同的成本会移动帕累托点。
- **`p` 是一个风险评分准的概率。** 它是读出在不下谨慎的临界值(`clip(ĉ½·u·(1−ĉ))` **不是** 从统计意义上校准的(8 的分数并不意味着 80% 的经验关键率)。
- **合成环境与预言标签。** 所有 20/30 次随机种子结果都使用带有真实关键任务生成器。他们在受控偏移下显示 ** 工作;他们不是真实代理轨迹证据。
- **最强的基线仍在等待。** 这里公平的是一个单一的成本敏感型路由器。更强的基线我们 **尚未** 运行:一个真实模型路由器,一个上下文强盗,一个 **显式变点路由器**,一个标准的 RAG/技能基线集群开启/关闭 **在真实代理支架下** 的消融。那些比较是未来的工作。
- **所有三个层都集成。** 元认知(`selfModel`),技能记忆(``),和中尺度集群(`clusterIndex`)都在 **相同** 的在线 MCP 拍卖中竞标。中尺度层将耦合溢价馈入 `decide_step` 并通过 `dump_clusters` 暴露发现的结构;集群是自动从决策时可见的文件/符号重叠中发现的,而不是手动馈入的。
- **技能重用信任由加密证明决定,而不是自我报告的声明。** 信任 **不是** 从一个明文 `{executor", exit_code}`(远程 MCP 客户端可以伪造)持有 **服务器唯一 H密钥** 的受器签署验证有效载调度器仅在签名 + 未重放随机数 + 刷新**(`attest`)时授予信任密钥的客户端无法伪造或重放。**铸造端点也在传输层上隔离:**_attestation` **默认**(调度仅在显为受信任执行器EMMS_EXECUTOR1`)时,**不受信任的客户端甚至无法访问**(在 `olationTest.mjs`)。本地开发备用者)仍然重复实验,但 **为`insecure,不得在生产威胁模型:这不受信任客户端的伪造/重放验证;它 **不** 防御的调度器进程泄漏 —— 真正/TEE 执行器未来的工作。在 `skillGateTest.mjs` 中声明1–F伪造无密钥牌,重放改,过时,不安全备用)。
-证据”是半合成代理轨迹。7 的 `eval_s_clusters` 使用 **真实 SWE-bench Pro 金色结构**(/符号共同改变)来定义哪些子目标真正分层 **建 每步提示噪声2=0.率 + 分心步骤色补丁是 **未来信息**,用于决策;我们只 **结构**。因此了 **机制**真实耦合下聚类是否能弱提示关键步骤不是** 项目 `Resolve@k`。 **在(N = §7b)存在一个在官方 Docker评判器下的真实代理轨迹** —— 它显示调度器在每个 token 上解决的任务比两个基线都多,但 N = 10 尚未具有统计显著性;多种子,大规模运行仍是未来工作。
- **M2 是一个非劣性界限,而不是“没有”。** 中尺度确实** 花费了更多的 SystemΔ ≈ +10 次调用,p ≈ 0)和 token(p0);声明只是这个增量停留在 ** +10% 预算界限** 内,而不是它不增加。在整个过程中实地陈述 **μ / KKT / EMMS 是一个工程解释,而不是一个定理。** 投标/影子价格原则的启发式;没有 **约束在线学习保证**,没有遗憾/违规界限,也没有可验证的最优性证明。推导这些是。
- 在一个强大的基准模型(例如 Opus)上,上游点火很少需要 —— 升级梯度已经涵盖了它。优势在 **长视野/任务中偏移/弱模型或昂贵token区域中最为明显。
---
## 9. 科学锚点
| 概念 | 来源 | 这里的作用 |
| --- | --- | --- |
| 双过程(System 1 / System 2) | Kahneman | system1 = 廉价直觉;system2 = 深思熟虑(污染上下文) |
| 全局工作空间 + 点火 | Baars / Dehaene(GWT) | 超过阈值的惊喜 → 全局广播 → 调用 System 2 |
| 注意力模式 | Graziano(AST) | 维护一个自我状态 `z`(活动原型 / 最近惊喜 / 谨慎) |
| 竞争中的妥协(EMMS) | 李景海 | 经济性 vs壮性,两个冲突的极端由影子价格 μ 协调 |
---
## 10. 安装和运行
需要 Node.js ≥ 18。无需构建。
### 10.1 在 MCP 客户端注册
```jsonc
"mcpServers": {
"conscious": {
" "node",
"args": ["/absolute/path.mjs"]
}
}
```
###.2 工具
| 工具 | 何时使用 | 关键参数 |
| --- | --- | --- |
| `open_session` | 开始时 | `sessionId`,`namespace` |
| `new_task` | 每个任务开始 | `sessionId`(重置污染,保持原型,μ,技能) |
| `dec` | **前** | `_hint / difficulty_hint / context_pollution`(0–1)+ 可选语义 ` / repo / lang / file_type / error_signature_features` |
| `report_outcome` |步骤后 |_criticality`used_system2`; + 验证 `verifier_passed / miss_happened`; +(变异步骤patch_summary / change_footprint / verifier_result` 编写技能记录 |
| `task_feedback` | 任务结束 | `success`(调整 μ + 持久化原型 **和** 技能) |
| `get_stats` / `get_calibration` /_prototypes` | 审计 | —(`get_stats` 包括 `nSkills`; `dumpypes` 包括技能记录) |
| `close_session` | 结束 | 持久化原型 + |
`decide_step` 返回:`mode: "system1" | "system2"`,**实际决策依据** `p_crit / e_cost_s1 / e_cost_s2 / decision_rule`(实际设置 `mode` 的规则:`ignite ⟺ robBid > ecoAsk`),**验证动作** `verify: none | lint | test | dry_run | review` + `risk_class`,**动作层** `is_mutating / action_prior / action_premium / forced_verify`,和 **技能层** `skill_reuse_discount / skill_novelty_premium / cross_repo_premium / reusable_fix / skill_signal`(新颖性,存储库匹配,验证支持)。另外,`criticality_estimate / threshold / familiarity / surprise / confidence / mu / regime_shift / suggest_compact`。旧的 `rob_gain / eco_cost` 仍然返回,但 **不是** 模式规则。
### 10.3 自检
```powershell
node server.mjs # 启动服务( 上的 JSON-RPC)
node smoke.mjs # 完整握手 + 多轮任务 + 持久性检查
node complexTask.mjs # 长视野 3 分支比较
node answerTests.mjs # “它变得更智能/泛化/管理污染”测试
```
### 10.4 复制图表
```powershell
node figures/gen_fig_data.mjs # 从真实 SWE-bench Pro 收集 -> fig_data.json
python figures/make_figures.py # -> *.png(Times New Roman,300 dpi)
# 相同基准,可证伪的裁决:node eval_swebpro_clusters.mjs --seeds 24 --sessions 80 --noise 0.42
```
---
## 11. 仓库布局
```
server.mjs 零依赖标准输入输出 JSON-RPC 2.0 MCP 服务器(10 种工具)
consciousCore.mjs 会话管理 + 持久化 + 校准;运行一个 SkillfulAgent(所有 3 个层)
selfModel.mjs 元认知层 — 投标核心(decideAbstract / learnAbstract / feedback)
skillMemory.mjs 技能层 — 验证的领域记录,本地嵌入,检索)
skillfulAgent.mjs 组合 + 技能记忆 + 集群索引;to fromJSON / restore
clusterIndex.mjs 中尺度层 —自动发现子目标 耦合溢smoke.mjs 完整的 MCP 握手 + 3 到端(动作/技能/存储库+ 持久性GateTest.mjs 技能层的 33断言(接地库边界,重零回归)
exp_skill 技能(成本 921.67 -> 603;可证伪伪分支)
exp_action 动作层实验(设计补 4.870)
s.mjs 共享真实 SWE-bench-Pro(数据加载器 +逻辑;)
eval_s_clusters.mjs 轨迹上对 M1/M2 进行可证伪的裁决(共享 swebpReal.mjs)
select10.mjs 选择 10 个真实实例 -> selected10.json
complexTask.mjs 长视野 3 分支比较(驱动真实 MCP 传输)
answerTests.mjs “更智能//污染测试
README.zh 中文 READMEGORITHM_zh.md 完整的中文算法解释
真实ench Pro (sweap_eval_full_v2.jsonl 个实例)
持久化原型库 + 技能记忆(每个命名空间)
gen_figjs 收集所有图表数据 -> fig
make_figures.py 发表图表(Times New Roman,300 dpi)
png 生成的图表
```
---
##. 许可证
MIT。 *"Conscious" 仅作为功能性隐;不主张意识。*
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器