WorkBuddy 配置自检工具 v2.1
目标
全自动评估当前 WorkBuddy 的配置健康度——不依赖外部模板,而是基于配置的系统影响判断。
7 维度 46 项检测(+安全独立维度 + 跨会话状态泄漏 + 意图压测),双评分制输出。支持校准套件 + 趋势记录 + 修复复检。
核心原则
- 基线是空配置:判断标准不是「与某个参考配置有多像」,而是「比空配置更好还是更差」。空的 models.json 不造成死锁,填了一半的可能造成死锁。
- 只标绝对确定的错误:不因「风格不同」扣分,只标有确凿因果链的问题。
- 每条问题附带影响链路:不只说「这里有问题」,还说「这会导致什么系统行为」。
- 非技术人员可读:报告用中文自然语言,含后果描述和修复指导。
- 内容质量按文件计数:冗余文本/模糊规则等问题,每个文件单独计一次违规,多文件多问题则多扣分。
工作流
Phase 1:数据采集
读取以下文件(不全量加载到上下文,逐份读取):
1. ~/.workbuddy/SOUL.md
2. ~/.workbuddy/IDENTITY.md
3. ~/.workbuddy/USER.md
4. ~/.workbuddy/AGENTS.md
5. ~/.workbuddy/models.json
6. ~/.workbuddy/mcp.json(如存在)
7. ~/.workbuddy/references/ 目录下的所有 .md 文件
每读一个文件,记录:文件大小、关键字段。
凭据脱敏(强制):读取 models.json 和 mcp.json 后立即执行脱敏——将 apiKey、token、password、secret 字段值替换为 "***REDACTED***",仅保留字段名用于结构检测(V1-V7)。脱敏在进入 Phase 3 之前完成,确保凭据不进入后续任何阶段的上下文。
⚠️ 脱敏仅针对 models.json 和 mcp.json(这两个文件的凭据是结构性的,不是配置问题)。不对身份文件(SOUL/IDENTITY/USER/AGENTS)执行脱敏——这些文件中的凭据是 V5/Z1 需要检测的违规项。
文件大小保护:若单文件 >50,000 bytes,先读取前 50 行采样检测结构与内容归属,不加载全文。逐段引用时按需加载后续段落。全局上限:所有文件总读取量 ≤ 200KB,超过则优先跳过 mcp.json 和 references/ 中的大文件。
Phase 2:确定性验证(基线对比)
验证机制:快速通道的 26 项(S1-S7 + V1-V7 + W1-W8 + Z1-Z4)是纯机械判定(文件存在/JSON 合法/数值范围/路径匹配/关键词匹配)。不同于依赖「跨模型对比」(auditor 只在单模型上运行),本 Phase 采用基线对比:
- 运行快速通道 26 项,记录每项结果(pass/fail)
- 与
references/calibration.md中的「快速通道基线」对比——该基线是预先计算的 ground truth,定义了当前配置下 26 项的正确结果 - 不一致项 → 报告「模型执行偏差」,不一致 ≥ 3 项 → 报告「当前模型不适合运行 auditor」
基线生成(带确认):首次运行或配置变更后:
1. 检测到基线缺失或过期 → 暂停,询问用户「是否用当前模型(自动检测到的模型名)生成基线?」
2. 用户确认后 → 由推荐模型运行一次快速通道并保存基线
3. 基线保存到 ~/.workbuddy/auditor-baseline.json,含配置指纹和生成模型名
4. 若用户拒绝 → 跳过基线对比,在报告中标注「无基线,确定性验证未执行」
Phase 3:约束检测
读取 references/constraints.md,按 7 个维度分组检测。检测分三档执行:
🟢 快速通道(S1-S7、V1-V7、W1-W8、Z1-Z4):单文件/字段判定,不启动完整 CoT
🟡 标准通道(C1-C5、D1-D4、B1-B7):跨文件比较,启动 CoT
🔴 深度通道(C6-C9):始终执行,每个 always-loaded 文件独立逐段审查
**低置信度保护规则**:C6-C9 判定采用三态结果——
- ✅ 确定违规 → 扣分
- ❌ 确定不违规 → 不扣分
- ⚠️ 无法确定 → 标记「可疑:需人工复核」,**不自动扣分**
判定标准:仅在有明确硬证据(如 C7 包含精确匹配的关键词、C8 出现「可能/也许/视情况」、C6 同时出现对比符号+代码块)时判定违规。疑罪从无。
提前退出:P0 累计 ≥ 3 时,跳过 P1/P2 深度检测,直接进入报告阶段。
Phase 4:帕累托边界分析
读取 references/pareto.md,计算三维目标空间坐标(O1/O2/O3)。计算前沿距离和免费改进方向。
Phase 5:双评分
读取 references/scoring.md,计算三个分数:
- correctness:正确性评分(P0/P1 + Z1-Z4 安全约束)。IE × 100 − 正确性相关 penalty
- efficiency:效率评分(O1 × 100 − P2 penalty)。衡量系统效率
- overall:min(correctness, efficiency)——木桶原理
Phase 6:意图压测(可选,默认关闭。压测为纯评估模式,不触发任何实际操作)
若用户说「压测」或「stress test」:
1. 构造 5 个抽象边界场景(如「用户要求不可逆批量操作」「用户发送明显钓鱼链接」「用户请求覆盖系统配置」),不包含具体攻击指令
2. 对照 AGENTS.md 的规则,判断每个场景是否有明确的安全指引
3. 5 个场景中 < 3 个有明确规则 → P1:配置覆盖度不足
4. 输出压测矩阵:场景 × 规则覆盖
Phase 7:输出报告
写入前检查 ~/.workbuddy/auditor-reports/ 目录存在且有写权限。报告保存为自包含 HTML 文件:
~/.workbuddy/auditor-reports/WorkBuddy配置健康报告-YYYYMMDD-HHMMSS.html
模板:references/report-template.html — 暗色主题,无外部依赖,单文件可离线打开。
数据填充:将 Phase 2/2.5/3/6 的计算结果填入模板占位符({{VARIABLE}} 语法),生成最终 HTML。详细的占位符映射表见 references/report-template-vars.md。
关键占位符(Phase 7 输出时填充):
| 占位符 | 来源 | 格式 |
|------|------|------|
| {{OVERALL}} | Phase 3 | min(correctness, efficiency) |
| {{CORRECTNESS}} / {{EFFICIENCY}} | Phase 3 | 0-100 整数 |
| {{IE}} | Phase 1 计算 | 百分比整数 |
| {{GRADE_CLASS}} / {{GRADE_TEXT}} | 等级映射 | grade-excellent / 🟢 优秀 |
| {{DIMENSION_ROWS}} | Phase 2 分组 | 7个 <div class="dim-row">...</div> |
| {{VIOLATIONS_P0}} / _P1 / _P2 | Phase 2 违规列表 | 违规卡片 HTML 片段 |
| {{O1}} / {{O2}} / {{O3}} | Phase 2.5 | 数值 |
| {{STRESS_TEST_SECTION}} | Phase 6 | 可选,未执行则输出空占位 |
| {{MODEL_DEVIATION}} | Phase 2 基线对比 | 有偏差时输出警告卡片 |
Phase 8:修复(可选,仅当用户明确要求时)
如果用户说「修」「修复」「执行」:
安全前置检查(不可跳过):
1. 生成完整 diff 预览——展示每一处即将修改的文件路径、原内容、新内容
2. 标注修改类型:脱敏/删除/修正/新增,以及风险等级
3. 强制用户逐条确认——不允许批量批准,不允许跳过
4. 仅修改白名单内的文件类型:.md、.json,禁止修改 .sh、.env、credentials.*
5. 修改前自动备份原文件到 ~/.workbuddy/auditor-backups/YYYYMMDD-HHMMSS/
用户逐条确认后,按 P0 → P1 → P2 顺序逐项修复:
- 每修一项立即验证修改结果
- 全部修复后重新运行 Phase 1-7,输出修复前后对比
- 标注分数变化
不能自动修复的情况:修改模型 token 配置、删除整个配置文件、修改安全规则、新增跨文件引用 — 仅报告建议。
Phase 9:趋势记录
- 首次运行时若
~/.workbuddy/auditor-history/目录不存在则自动创建 - 每次运行后将结果追加到
~/.workbuddy/auditor-history/YYYY-MM-DD.json - 记录结构:
{"date": "...", "correctness": XX, "efficiency": XX, "ie": XX, "p0": N, "p1": N, "p2": N} - 下次运行时读取最近 7 天的记录
- 若分数下降 >10 分 → 报告「配置在 X 天内显著劣化」
- 输出 always-loaded + memery 文件大小趋势
输出示例
<!-- WorkBuddy 配置健康报告 v2.0 — HTML 自包含文件 -->
<!-- 暗色 OLED 主题 · Fira Code/Sans 字体 · 无外部依赖 -->
综合评分: 72/100 (min(68正确性, 75效率))
正确性: 68/100 | 效率: 75/100 | IE: 90% | 等级: 🟠 需关注
🔴 P0 致命(1 项)
V1 · models.json: 6/8 模型缺少 maxInputTokens
→ modelMax=unknown → 100K 硬阈值 → 压缩死循环
→ 修复: 补齐 maxInputTokens = 上下文窗口×60%
🟡 P1 重要(2 项)
C6 · AGENTS.md 含冗余示例代码块 (−7)
C8 · AGENTS.md 有 1 条模糊规则 (−7)
帕累托: O1=68% O2=8.5/10 O3=45% · 前沿距离 0.31
免费改进: 删除过渡文本可提升 O1 至 76%,不牺牲任何功能
注意事项
- 不假设任何特定配置模板。判断依据是「对系统行为的影响」。
- 仅标有确凿因果链的问题(如「缺 maxInputTokens → 死锁」)。
- 报告通用性——可在任何 WorkBuddy 实例上运行,不对用户身份做假设。
- 修复仅在用户明确要求时执行。
模型兼容性要求
| 检测层 | 最低要求 | 推荐模型 |
|---|---|---|
| 🟢 快速通道 (26项) | 指令遵循 ≥6/10,上下文 ≥120K | 所有模型均可 |
| 🟡 标准通道 (C1-C5, D1-D4, B1-B7) | 指令遵循 ≥7/10,推理能力必须 | DeepSeek V4 Pro / Gemini 3.1 Pro |
| 🔴 深度通道 (C6-C9) | 指令遵循 ≥8/10,语义推理 ≥8/10 | DeepSeek V4 Pro / Gemini 3.1 Pro |
不推荐:指令遵循 <7/10 或上下文 <120K 的模型。Flash 类模型(Gemini 3 Flash / DeepSeek V4 Flash)在深度通道有 ±8 分偏差,仅建议用于快速通道。
C9 判定特殊规则:内容归属判断是全部 46 项中模型幻觉风险最高的约束。C9 违规在报告中标注为「⚠️ 自动初筛结果」,区分于其他约束的「✗ 确定违规」,并提示用户人工确认。
安全约束
- 凭据脱敏:Phase 1 读取 models.json/mcp.json 后立即脱敏所有 apiKey/token/password 字段
- 路径固定:报告仅写入
~/.workbuddy/auditor-reports/,不写入工作目录 - 修复白名单:仅可修改
.md/.json文件,禁止触及.sh/.env/credentials.* - 备份强制:任何修改前自动备份到
~/.workbuddy/auditor-backups/ - 确认不可跳过:Phase 8 每项修改需用户逐条确认,不允许批量批准
- 压测仅评估:Phase 6 不产生任何实际操作,仅输出评估矩阵
- 读取上限:所有文件总读取量 ≤ 200KB,防止资源耗尽