# dsh-agent-frugality — 技术规格(SPEC v1.0) > 上游:`research/85k-experiment/05-solution-design.md`(方案设计)→ 本 SPEC 为**唯一技术规格事实源**,实现与审查均以此为准。 > 状态:已实现核心(v0.1),本 SPEC 锁定产品化发布前的完整契约。 ## 1. 背景与定位 多智能体系统存在三类被实测与独立证据支持的机制性失效: - **A 重复读取/内耗**:无共享记忆的子智能体重复读取相同内容(独立证据:Claude Code issue #46968/#45660;Jack Maguire 实测子智能体占长任务大部分 token 成本)。 - **B 提示词失效**:软性规劝短期失效、上下文压缩后丢失;须以机制层(工具错误/物理门禁/沙箱)约束行为。 - **C 贵模型误区**:昂贵模型当审查员/写手并不更优;应按角色分层、用低成本审查 lane。 本插件**不禁止多智能体**,而是把三类失效变成**可度量 + 可物理阻断**的机制,度量优先、干预后置(先观测基线,净收益为正才开启阻断)。 免责声明(README 与包描述必须包含):本插件名字与文档不背书任何"8.5 万美元实验"的具体数字;那些数字(54.7%/243→311/23.9% 等)经核实无一手出处,属生成式摘要幻觉(详见 research/01-primary-source.md)。本插件针对的是**有独立证据的机制性失效**本身。 ## 2. 目标 / 非目标 **目标** 1. 全量(主会话+全部子智能体)读取记账:内容哈希级去重、按 agent 聚合、重复率可见。 2. 恒久规则不可丢:规则区免疫上下文压缩,每次组装机械注入。 3. 完成声明机械门禁:未通过 `frugality_gate` 的完成声明被 turn-stopping 拦截。 4. 低成本审查 lane:审查直接走便宜模型,主模型不参与。 5. 零外部依赖、JS 直出、注入即用(与 dsh-mode-boost 同部署路径)。 **非目标** - 不做多智能体编排器(agent-teams / workflow 已覆盖)。 - 不做共享记忆存储(dsh-memory-vault 已覆盖;本插件只做"去重记账 + 已读提示")。 - 不做模型复杂度路由升级版(dsh-model-router 已覆盖快速问答降级)。 - 不做 UI 面板(P2,另行 ticket)。 ## 3. 组件与装配 | 组件 | 挂载点 | 行为 | |---|---|---| | `read-ledger` | `tools/result`(emit) | 读类工具成功结果 → SHA-1 内容哈希 → 台账(hashIndex / perAgent / lastReads)→ `frugality-ledger.jsonl` 追加(P1) | | `dedup-replace` | `tools/post-execute`(waterfall,仅 `DSH_FRUGALITY_DEDUP=1`) | 同内容 hash 第 ≥2 次读取 → `{kind:'accept', content: 摘要提示块}` 替换模型可见内容(value 保留) | | `immutable-core` | `system-prompt/assemble` | 追加 `frugality-rules` section(order 5,每次重渲染,免疫压缩);有读取记录时追加 `frugality-read-cache`(order 100,≤LEDGER_CAP 条) | | `completion-gate` | 工具 `frugality_gate` + `agent/turn-stopping` | gate 登记凭证(verify 命令 exit 0 才 verified=true);turn-stopping 检测完成性声明且无凭证 → `agent.steer()` objection(≤GATE_MAX 次) | | `review-lane` | 工具 `frugality_review` | 便宜模型审查(4 维打分),输出 verdict+findings | | `ledger-stats` | 工具 `frugality_ledger` | 台账/门禁/审查统计输出 | ## 4. 功能需求 ### FR-1 读取台账(A 度量) - 读类工具白名单(子串匹配,覆盖 `mcp____`):`read / glob / grep / search / visualize / media_info`(配置可扩:见 `DSH_FRUGALITY_READ_PATTERNS`)。 - 记录:`{at, agentId, agentLabel, tool, target, hash, bytes, dup}`;target 从参数提取(path/pattern/url/file…)。 - 重复判定:`hashIndex` 全局(跨 agent、跨会话、进程内)已有该 hash → `dup=true`。 - 度量输出:`frugality_ledger` 的 per-agent reads/dups/bytes + 全局重复率 + 最近 10 次读取。 - 性能:单次记账同步 O(n)(文本哈希),n≤10MB 时 <5ms;哈希**必须**在 `try/catch` 内,永不阻断工具执行。 ### FR-2 已读清单注入(A 提示) - 组装时若本 agent 会话存在读取记录 → 注入 `frugality-read-cache` section:` (