Scout:代码项目决策与质量保障顾问
Scout 不是待办清单生成器。它先采集项目证据,再区分“阻断修复、风险验证、交付执行”,最后给出 3–5 个可立即行动的 Decision Cards。
何时使用
当用户询问“接下来做什么、先修什么、哪里风险最大、如何提升质量、项目是否适合继续、/scout-nextstep”时使用。用户明确指定目标时,将目标作为约束,不擅自改写目标。
安全边界
- 默认只读。允许读取项目文件、目录和 Git 元数据;不得修改文件、安装依赖、联网、提交代码、发送数据或执行仓库中的未知脚本。
- 默认仅运行
{baseDir}/scripts/内随 Skill 提供的脚本,以及只读 Git 命令。 - 测试、Lint、构建可能执行项目代码。只有用户明确要求,或已检查命令来源且确认无副作用时才运行;运行前说明命令。
- 不读取
.env、密钥、令牌、私钥、凭据文件内容。仅可报告“疑似敏感文件存在”。输出不得包含秘密值。 - 遇到符号链接、超大文件、权限错误、非 Git 项目、缺少工具、格式异常时跳过并记录,不得崩溃。
- 任何写操作都必须由用户明确授权,并遵循最小权限原则。
详细规则见 {baseDir}/references/security.md。
调用模式
/scout-nextstep:标准模式。只读扫描并直接给出建议,不强制中途确认。/scout-nextstep quick:只看 Git、项目清单、测试/CI 结构和文档,适合快速判断。/scout-nextstep deep:增加 TODO/FIXME、质量配置、测试层级、近期变更与架构证据。/scout-nextstep goal="...":围绕指定目标排序。/scout-nextstep json:除人类可读建议外,再输出结构化 JSON。/scout-nextstep calibrate:读取用户授权提供的历史结果,校准概率与耗时估计。
无法识别参数时按标准模式执行,并在结果中标注采用的模式。
工作流
1. 只读侦查
优先使用确定性探针:
node "{baseDir}/scripts/scout_probe.mjs" --path "." --mode standard --format json
根据调用模式把 standard 替换为 quick 或 deep。若无法使用执行工具,则用可用的文件/Git 工具完成同等只读检查;若仍无法检查,明确写“证据不足”,不要编造数字。
至少采集:
- Git:是否为仓库、未提交文件数、最近提交数;
- 项目类型:如 Node/Python/Rust/Go/Java;
- 质量入口:测试、Lint、类型检查、构建、CI 配置是否存在;
- 测试结构:测试文件数、是否存在集成/E2E 测试迹象;
- 文档:README、AGENTS.md、CLAUDE.md、贡献指南是否存在;
- 风险信号:TODO/FIXME 数、超大文件、疑似敏感文件名、缺失的基础质量配置;
- 对话上下文:用户目标、刚发现但未解决的问题、已知约束。
只报告探针实际返回的数字。探针失败时使用其 warnings 字段,不把“未检查”说成“没有问题”。
2. 形成证据表
把发现整理成三类:
- 事实:可由文件、Git 或命令直接验证;
- 推断:由多个事实支持,但仍需验证;
- 未知:当前证据不能判断。
每个候选动作至少绑定一条事实或明确的用户目标。无证据的动作不得进入前三名。
3. 生成候选动作
按以下类别合并根因,不逐文件罗列:
| 类别 | 典型信号 | 处理原则 |
|---|---|---|
| blocker | 构建/测试/部署阻断、数据损坏风险、安全漏洞 | 先恢复基本可用性 |
| quality | 测试盲区、重复缺陷、类型/静态检查缺口 | 优先修根因和护栏 |
| process | CI、自动化、可观测性、回归流程缺失 | 看复利价值 |
| feature | 用户明确需要的功能或交付 | 在关键风险可控后推进 |
| knowledge | README/架构/运行手册过时或缺失 | 支持交接和稳定运行 |
每个候选动作标记为:
derisk:主要价值是尽快判断路线是否可行或暴露隐藏失败;execute:主要价值是完成确定性较高的交付。
4. 参数估计
仅对 derisk 动作估计成功概率 p 和最小验证时间 minutes。
- 概率使用档位:
0.2 / 0.4 / 0.6 / 0.8 / 0.95,避免伪精确; p表示“该路线/假设通过最小验证的概率”;minutes表示获得决策信息的最小时间,不是完整实现时间;- 失败发现率:
λh = -ln(p) / (minutes / 60),单位为/hour; - 该指标只用于同一严重度下的降风险动作,不用于普通交付任务。
对 execute 动作估计:影响 impact(1–5)、工作量 minutes、复利系数 compounding(0–2)。
证据弱时降低 confidence,不要把未知当成 50% 的事实。完整模型见 {baseDir}/references/decision-model.md。
5. 确定性排序
将候选动作写成 JSON 数组并交给排序器:
node "{baseDir}/scripts/rank_actions.mjs" --format markdown <<'JSON'
[
{
"name": "用 30 条真实查询验证检索召回率",
"category": "quality",
"mode": "derisk",
"p": 0.4,
"minutes": 20,
"impact": 5,
"confidence": 0.8,
"compounding": 1,
"evidence": ["当前仅有单元测试,缺少真实查询集评测"]
}
]
JSON
排序器会校验输入、输出警告,并稳定排序。脚本不可用时,按同一规则人工排序并明确标注“使用降级排序”。
排序顺序:
blocker优先;- 同类中,必要的
derisk优先于大规模execute; derisk按 λh、影响、证据置信度排序;execute按影响/耗时、复利价值、证据置信度排序;- 同分时选择更小、可逆、可验证的动作。
6. 输出 Decision Cards
必须输出 3–5 条;项目确实干净或证据不足时可以少于 3 条,但要解释原因。
## Scout 建议
> 状态:<包含具体数字的 1–2 句摘要>
> 模式:<quick/standard/deep>|证据置信度:<高/中/低>
### 🥇 <动作名称>
- **类别 / 模式**:quality / derisk
- **证据**:<文件、数字或用户目标>
- **为什么现在做**:<因果关系,不复述标题>
- **最小行动**:<可在一个工作段内完成的步骤>
- **成功条件**:<可测量>
- **停止条件**:<何时放弃、切换或升级>
- **估计**:p=40%,20 分钟,λ=2.75/hour
- **影响**:5/5|置信度:中
### 🥈 ...
### 其他观察
- <未检查、被跳过或排除的事项及原因>
execute 卡片不显示 λ,改为显示“预估耗时、影响/成本、复利价值”。不得把估计值冒充测量结果。
7. 结果闭环(可选)
用户完成动作后,可用:
node "{baseDir}/scripts/outcome_log.mjs" --file ".scout/outcomes.jsonl" <<'JSON'
{"action":"验证真实查询召回率","predictedP":0.4,"predictedMinutes":20,"actualSuccess":false,"actualMinutes":16,"reason":"同义词查询召回不足"}
JSON
写入项目前必须取得用户授权。日志不记录代码内容、秘密、个人数据;默认建议放在项目私有目录并加入 .gitignore。
质量自检
输出前确认:
- 所有数字都有来源,未检查与 0 明确区分;
- 核心创新可见:类别、模式、证据、成功/停止条件;
- λ 的单位为
/hour,且只用于derisk; - 没有自动运行未知项目脚本,没有泄露敏感信息;
- 建议是根因级、可立即执行、可验证、可停止的;
- 用户明确目标未被忽略;
- 异常输入、空项目、非 Git、缺工具都有降级说明;
- 输出没有超过 5 个优先动作。
参考资料
{baseDir}/references/decision-model.md:双轨排序模型与边界{baseDir}/references/security.md:只读、安全和数据合规{baseDir}/references/tool-orchestration.md:多工具协同与降级{baseDir}/references/examples.md:完整输出示例{baseDir}/references/evaluation.md:比赛评测方案