BitFun 子模块设计:质量数据面

July 14, 2026 · View on GitHub

上游文档:design.md 模块角色:为 BitFun 加载的目标项目提供统一事件、证据、指标和审计数据模型,用于解释、恢复、回放和校准产品治理策略。

1. 模块定位

质量数据面是追加式事件和事实视图层。它负责把项目画像、任务、工具调用、文件变更、验证命令、策略决策、安全授权、审查、CI、发布和运行期反馈整理成可追踪、可裁剪、可回放的事实视图,并为摘要、审查、门禁、复盘和评测提供统一查询口径。

P0 事件集优先支撑三件事:

  1. 普通任务结束时能解释做了什么、验证了什么、没验证什么。
  2. 安全敏感动作能追溯允许、询问、拒绝、应急放行的原因和范围。
  3. 配置化策略能用真实数据校准是否过度打断、误升级或漏提示。

证据包、交付物图谱、风险分类器、变更就绪度、PR 门禁和智能体评测都消费同一事实视图层;模块通过稳定查询接口和事实视图读取事实,避免各自重新定义字段。权威事实仍由 Agent Kernel、Execution、Security Boundary、受信外部系统或人工确认产生,质量数据面不成为新的状态 owner。

2. 行业参照与设计约束

参照启发
OpenTelemetry Semantic Conventions轨迹、指标、日志和资源需要统一语义,避免观测数据孤岛
CDEventsCI/CD 事件需要可互操作的事件模型
SLSA provenance / in-toto attestations构建、验证和制品元数据应具备来源与证明
Codex approvals/security审批、安全授权和工具执行要能审计,安全授权与质量就绪度分层记录
NIST SP 800-218AAI 进入 SDLC 后,模型、数据、工具、权限和供应链都属于安全开发边界

设计约束:

  • P0 只采集快速路径、安全边界和信心摘要所需事件。
  • 每类事件必须定义保留周期、隐私分级、脱敏、载荷大小和导出策略。
  • 事件字段需要稳定语义命名,避免子模块各自定义不可对齐的事实。
  • 证据包只保存摘要和引用,不长期保存无界原始日志。
  • 内部事件模型保持规范;OpenTelemetry、CDEvents、SLSA 等作为导出适配和互操作参考。
  • 证据必须区分信任层级:确定性事实、外部系统事实、人工确认、模型推断和插件建议不能混为同一等级。
  • 新事件域必须声明生产者、消费者、保留周期、隐私分级、迁移和导出策略。

3. 范围与边界

范围:

  • 定义 LifecycleEvent 事件信封。
  • 统一任务、会话、策略、安全、工具、文件、验证、审查、门禁、成本、Harness 主动配置和外部 owner 诊断的事件域。
  • 为证据包、交付物图谱、风险分类器、变更就绪度、PR 门禁和智能体评测提供事实输入。
  • 支持本地追加式审计、投影查询和外部导出。

边界:

  • 质量数据面聚焦 BitFun 工程治理事实,不建设通用日志平台。
  • 终端输出、模型上下文和第三方载荷按摘要、引用、脱敏和保留策略处理。
  • CI、APM、SIEM 和数据仓库保留系统主权,BitFun 做事件映射和投影。
  • 模型摘要以推断或建议身份进入事件,原始事实来自确定性系统、人工确认或受信外部系统。
  • 事件数量只用于诊断和运营,产品质量需要结合结果指标、后验缺陷和用户反馈判断。

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

核心输入:

输入来源
项目画像事件项目结构、规则、负责人、验证模式、发布模型
任务事件用户意图、模式、任务完成、信心摘要
策略事件配置化策略决策、原因、模式转换
安全事件权限、执行位置、沙箱等级、网络、凭据、prompt 注入、应急放行
工具事件命令、工具调用、审批、退出码、耗时
文件事件diff、重命名、删除、生成文件、文件监听
验证事件命令、退出码、耗时、日志摘要、制品引用
审查/门禁事件严格审查、问题、就绪度、门禁投影
性能/成本事件首次有用动作耗时、后台分析耗时、token、模型、墙钟耗时、工具耗时
Harness 主动配置事件Harness 直接执行的项目脚本、自定义工具和工作流配置的 hash、权限、执行域与审核状态
阶段收益事件阶段用户收益、技术前置、延期边界、质量一致性抽样和验收结果

核心输出:

  • 快速任务信心摘要。
  • 安全边界审计引用。
  • 证据包源事件和证据引用。
  • 风险分类器校准特征。
  • 变更就绪度和 PR 门禁状态。
  • 交付物图谱边证据。
  • 智能体评测回放轨迹。
  • 阶段收益评审和质量一致性抽样。
  • 审计导出和最小指标集。

事件信封:

interface LifecycleEvent {
  id: string;
  type: string;
  version: number;
  timestamp: string;
  source: EventSource;
  actor: EventActor;
  scope: EventScope;
  correlation: EventCorrelation;
  payload: unknown;
  evidence?: EvidenceReference[];
  risk?: RiskSnapshot;
  privacy: PrivacyClass;
  retention: RetentionPolicy;
}

证据信任等级:

等级来源是否可作为强制要求/阻断依据
deterministic本地命令、测试、CI 检查、签名制品、静态配置可以
external_systemGitHub、Jira、CI、观测适配器返回的已认证事实可以,但需记录适配器和刷新时间
human_confirmed用户确认、审查人决策、风险接受可以,但必须记录操作者和原因
model_inferredLLM 摘要、候选影响面、候选风险标签不可以,只能作为候选或说明
plugin_suggested第三方插件明确产生的建议性内容不可以,必须经过 BitFun 策略或人工确认;合法 Hook 变换和插件工具结果不归入该等级,而由对应 owner 校验并产生事实

5. 事件注册表

每个事件进入实现前必须在注册表中补齐:

字段要求
producer明确由 Agent Kernel、Execution、Security Boundary、Project Profile Integration、Configurable Policy Profile、Artifact and Evidence Plane、Product Feature、adapter 或 UI 投影中的哪个 owner 产生
trigger说明何时产生,缺少输入时是否跳过、降级或使用摘要
payload schema定义稳定字段、版本和可删除字段;禁止无界 payload: unknown 直接进入长期 schema
privacy / retention标注隐私分级、保留周期、脱敏和导出策略
consumer列出当前消费方;没有当前消费方的字段必须有删除条件
fallback事件缺失、过期或不可访问时的用户可见降级
phase owner标注 P0/P1/P2+,避免 P0 背负后续治理字段

P0 硬事件集:

事件Producer用途
project.profiled.lightProject Profile Integration关联轻量项目结构、规则入口和验证候选
task.startedAgent Kernel,输入来自产品入口的稳定任务请求关联一次用户任务、入口和初始上下文
task.completedAgent Kernel,输入来自任务状态机结束记录结果摘要、任务结束状态和未验证项
policy.decidedConfigurable Policy Profile固化内部策略画像、触发原因和展示层级
security.decidedSecurity Boundary 生成决策 payload,Agent Kernel 负责事件落盘固化允许/询问/拒绝/应急放行、执行位置、范围、原因、降级和残余风险
tool.completedExecution采集工具和命令输出摘要、退出状态和耗时
verification.completedExecution;受信 CI adapter 只投影外部 CI 结果形成验证证据、不可运行原因或替代验证引用
confidence.summary.generatedArtifact and Evidence Plane固化任务结束的用户可见信心摘要

P0 可选或派生事件,不得阻塞默认路径:

事件Producer触发
active_config.discoveredProject Profile Integration轻量项目画像发现 Harness 将直接执行的项目脚本、自定义工具或工作流配置;不表示外部生态需二次激活
sandbox.capability.evaluatedSecurity Boundary用户界面需要展示真实沙箱、隔离或降级原因
user.override.recordedAgent Kernel 记录接受后的 override 事实;Security Boundary 生成安全 override payload用户选择跳过、风险接受或临时放行
file.changedAgent Kernel 根据 Execution 结果或产品入口 diff 更新任务摘要需要独立 diff 摘要;否则并入 task.completed

P1/P2 再引入:

事件触发
risk.policy_hinted上下文保障
readiness.generatedPR 或审查场景
gate.projected团队/守护/合规策略
review.completed定向/完整审查
tool.override.candidate工具复写进入 P2 信任审查
telemetry.point.recorded成本、超时、失败和降级采样
evidence_pack.generatedPR、团队、发布、事故或评测需要证据引用/完整包
stage.outcome.evaluated阶段评审采样
quality.consistency.sampled阶段质量一致性抽样
performance.budget.evaluatedP1+ 阶段性能预算评审
artifact.edge.updated复杂项目图谱

插件工具、Hook、事件和权限请求复用各归属模块已有事件,不在质量数据面预留跨能力统一的扩展效果事件。 若真实插件诊断需要独立事件,必须先明确生产者、当前消费方、状态 owner、隐私与删除条件。

6. 核心流程

项目/任务/智能体/工具/安全事件
  -> 归一化为 LifecycleEvent
  -> 脱敏并标注隐私分级
  -> 追加本地审计日志
  -> 更新投影存储
  -> 暴露摘要、证据、就绪度和评测查询
  -> 按需通过适配器导出

治理规则:

  • 本地优先:默认写入本地追加式日志,外部导出需显式配置。
  • 事件预算:每类事件设置载荷大小、采样和保留周期。
  • 隐私分级:区分公开、项目、敏感和凭据;凭据只保留脱敏引用或授权状态。
  • 证据引用:大日志、报告、截图、轨迹使用 EvidenceReference 引用,不内嵌。
  • 语义稳定:核心字段采用稳定命名和版本;用户界面文案和外部载荷通过投影层转换。
  • 信任分层:就绪度、门禁和发布就绪度必须能区分事实、候选、建议和人工接受。
  • 可重放性:关键事件版本化,结构变更提供迁移或兼容读取。
  • 导出隔离:导出到 GitHub、OpenTelemetry、CDEvents 或云端时保留脱敏和权限策略。

7. 分阶段落地

阶段目标
P0轻量项目、任务、策略、安全、验证和信心摘要事件
P1风险提示、就绪度、定向审查、成本和提示体验指标
P2团队策略、门禁投影、Harness 主动配置审核、外部 CI/PR 事件
P3交付物图谱、发布、事故、观测事件接入
P4评测回放、跨团队指标、策略回放分析

8. 风险与反证

风险反证或治理要求
遥测膨胀P0 事件集必须能解释快速路径和安全决策,采集范围按阶段扩展
原始日志泄露证据包保存摘要和引用;敏感片段必须脱敏
事件不可治理每个事件域必须定义负责人、保留周期、结构版本和导出策略
结构漂移新事件或字段必须先进入注册表,并提供兼容读取或迁移策略
模型摘要覆盖事实层模型输出作为派生证据,原始命令/CI/审查事实保持独立
跨模块耦合过重上游模块依赖查询接口和事件结构,内部存储保持封装
审计不可复现策略、安全、就绪度、门禁、审查、风险等关键结论必须能追溯到事件 id 和证据引用

9. 成功标准

  • 普通任务可以生成可解释信心摘要。
  • 安全提示、拒绝、应急放行都能追溯到事件和范围。
  • 证据包、变更就绪度和门禁复用同一事实层。
  • 严格审查 token、耗时、范围、跳过项上下文可被统一记录。
  • 事件模型能够导出到至少一种外部标准或平台。
  • Harness 直接执行的项目脚本、自定义工具和工作流配置可通过事件追溯来源、hash、权限、执行域和审核人。
  • 外部插件能力沿用其 owner 的来源、有效策略和运行诊断,不由质量数据面建立第二套信任状态。