BitFun 子模块设计:风险与策略分类器

July 14, 2026 · View on GitHub

上游文档:design.md 模块角色:根据任务意图、操作类型、项目画像、变更内容、路径、历史信号和团队策略,生成风险提示、策略建议、验证建议和审查强度。

1. 模块定位

风险与策略分类器是配置化策略的输入层。它回答:

这个任务或变更需要多少额外信心?

它输出可解释建议:建议哪些检查、是否建议定向审查、是否需要证据引用、是否可能进入团队治理。阻塞由确定性证据、安全边界或明确项目/组织策略触发;分类器负责给出建议、原因和置信度。

安全敏感信号会被识别并传递给 安全边界,但安全允许、拒绝或应急放行不由本模块决定。

2. 行业参照与设计约束

参照启发
GitHub rulesets强约束需要可解释、可配置、可审计
CodeRabbit 路径指令路径级规则比项目级单一规则更适合复杂仓库
Kiro steering工作区、团队、条件加载能减少无关上下文和误触发
Agentless简单可解释流程是强基线,复杂自治能力应建立在可解释基线之上
NIST SP 800-218AAI 相关变更需要把模型、数据、工具和供应链纳入风险识别

设计约束:

  • 输出必须包含原因、证据、信心和覆盖路径。
  • 风险标签用于提示、检查和审查建议;人工责任边界由团队策略和风险接受记录确定。
  • 规则、模型提示、路径矩阵和团队配置都必须版本化。
  • 校准依赖合入后缺陷、审查阻塞项、CI 失败、覆盖和误升级。
  • 项目画像中 unknown/conflicting/stale 的规则进入未知或降级路径。
  • Harness 将直接执行的项目脚本、自定义工具或工作流配置发生变化时,必须进入安全敏感风险路径。OpenCode plugin/Hook、MCP 等外部能力只消费其 owner 提供的来源、有效策略、可用性和诊断事实;分类器不改写其激活状态。
  • 默认规则保持技术栈无关;BitFun 自身验证路径只作为内部样本。

3. 风险维度

维度示例下游用途
任务风险一次性脚本、PR、发布、迁移、事故修复决定默认模式
动作风险shell、网络、凭据、跨目录写、删除、发布凭据传递给安全边界
变更风险核心逻辑、API/schema、适配器、界面行为、生成 diff生成验证和审查建议
环境信任度本地项目、远程工作区、未审核的 Harness 主动配置、私有 CI决定提示和证据需求
项目策略仓库/路径/团队规则、CODEOWNERS、强制检查决定强制要求或建议投影
历史风险高频热点文件、不稳定测试、事故、审查阻塞项校准风险等级

4. 输入、输出与数据模型

输入:

输入示例
用户意图ask、edit、debug、PR、发布、快速试验
项目画像语言、框架、模块、负责人、规则来源、验证能力、发布模型
Diff 元数据文件路径、hunk、重命名/删除、生成文件、行数
项目策略智能体规则、贡献指南、模块文档、CODEOWNERS、验证模式
Harness 主动配置审核Harness 项目脚本、自定义工具和工作流配置的 discovered/trusted/changed/disabled 状态
外部能力 owner 事实OpenCode plugin/Hook、MCP 等的规范化来源、有效策略、可用性和诊断
交付物链接issue、spec、验收标准、设计决策
历史信号不稳定测试、历史事故、审查问题、高频热点文件
验证状态已运行/缺失/失败/过期的推荐/强制检查

输出:

interface RiskPolicyHint {
  level: "low" | "medium" | "high" | "unknown";
  tags: RiskTag[];
  axes: {
    task: RiskAxis;
    action: RiskAxis;
    change: RiskAxis;
    environment: RiskAxis;
    project_policy: RiskAxis;
  };
  reasons: string[];
  evidence: EvidenceReference[];
  confidence: number;
  recommended_checks: RequiredCheck[];
  required_checks: RequiredCheck[];
  review_profile: "none" | "targeted" | "full";
  evidence_display_hint: "none" | "summary" | "evidence_refs" | "full_pack";
  policy_profile_hint: "fast" | "assist" | "review" | "guarded" | "regulated";
  override_policy: OverridePolicy;
}

风险标签示例:

标签触发条件
low_assurance_or_demo质量保障要求较低的快速试验、演示、无 git 项目、用户明确快速试验
project_core关键业务逻辑、核心服务、公共库或关键运行路径
integration_adapter外部服务、provider、协议、schema、stream、cache
security_sensitiveauth、凭据、filesystem、shell、网络、权限
prompt_injection_sensitive外部文档、issue、网页、MCP 输出可能影响智能体指令
active_config_sensitiveHarness 主动配置变化,或外部能力 owner 报告来源、策略、可用性或高风险诊断变化;该标签不决定激活
deployment_sensitive发布、migration、infra、remote 工作区、运行时 boundary
ui_behavior用户可见状态、交互流程、前端适配器、审查 surface
docs_only文档或注释变更,无行为影响
generated_large_diff大量生成文件、snapshot、lockfile

5. 核心流程

用户意图和项目上下文
  -> 扫描任务、动作、变更和环境风险
  -> 检查画像新鲜度与冲突
  -> 匹配路径和模块规则
  -> 补充历史风险
  -> 生成推荐/强制检查
  -> 生成审查画像和证据展示提示
  -> P1+ 发出 risk.policy_hinted 事件
  -> 收集校准反馈

策略:

风险等级默认策略
low保持低干预策略画像,只给推荐检查,不触发严格审查
medium建议相关验证;证据弱时建议定向审查或证据引用
high列出按策略强制的检查、负责人/审查人、审查强度和覆盖条件
unknown不降级为 low;保持摘要或建议投影,必要时进入降级状态并等待确认

Harness 主动配置策略:

状态默认策略
discovered不执行;输出 active_config_sensitive,交给安全边界
trusted按声明权限和影响范围参与分类
changed至少中风险;涉及 shell、网络、凭据或文件系统时为高风险
disabled记录未关闭风险,确认不影响验证后可降级

外部能力只按 owner 事实生成风险建议:policy-limiteddeniedunavailable、来源或执行域变化可以提高风险或 使证据过期,但分类器不得把它们转换成 Harness 的 discovered/trusted 状态,也不得要求二次激活。

6. 分阶段落地

阶段目标
P0低成本确定性风险标签和推荐检查候选,结果并入任务摘要;不要求独立 risk.policy_hinted 事件
P1risk.policy_hinted 事件、路径矩阵、项目规则、定向审查触发、误升级反馈
P2团队策略、强制检查、守护/合规配置
P3交付物图谱上下文、历史风险和发布/事故信号
P4后验校准、策略 A/B、模型辅助排序和异常检测

7. 风险与反证

风险反证或治理要求
风险等级被当成事实界面和 PR 文本必须展示证据、信心和覆盖范围
低风险误判关键路径小 diff 必须触发规则,不得只按行数判断
普通任务被误升级误升级率必须进入 P0/P1 指标
可执行配置被当成纯文档变更Harness 主动配置变化或外部 owner 的执行风险事实变化必须触发 active_config_sensitive,但只由各 owner 决定准入与授权
强制检查过多每个强制检查必须有触发原因和取消条件
严格审查成本被放大只有高风险或证据薄弱的中风险才默认触发定向/完整审查
规则长期失准合入后缺陷、审查阻塞项、覆盖和跳过原因必须回流校准

8. 成功标准

  • 配置化策略能用分类结果选择合理模式。
  • 普通低风险任务保持快速路径和轻量建议。
  • 高风险变更能暴露风险原因、必跑验证和未覆盖风险。
  • 安全敏感动作能被正确转交安全边界。
  • 误升级、漏推荐、无价值检查都可通过反馈量化和修正。