# 模块 8:资产变更也要走工程验证
代码变更会进入 Review、测试和 CI;会影响 Agent 行为的资产变更也应接受同样严肃的验证。 Rule、任务上下文契约、Skill、自定义 Agent 和 MCP 契约不是静态文档,而是研发过程中的可执行配置。
Rule
上下文契约
Skill
Agent
MCP
--- # 为什么资产变更会改变行为?
| 改动位置 | 直接影响 | 需要防范的风险 | |---|---|---| | Rule 的必须与禁止项 | 任务允许做什么、何时停止 | 放宽关键约束或误伤正常任务 | | 任务上下文契约的输入与输出 Schema | 模型可依据什么、结果如何被消费 | 事实缺失、下游解析失效 | | Skill 的步骤与引用 | 判断顺序、加载的资产和交接结果 | 漏掉验证步骤或引用旧资产 | | Agent 的指令与工具 | 角色职责、可调用能力和权限 | 越权、职责重叠或不可控输出 | | MCP 的能力契约 | 外部读写范围与失败语义 | 把高风险调用当成只读查询 |
审查资产 diff 的重点,是行为变化,而不是措辞是否顺畅。
--- # 资产变更审查的四个问题
输入、输出、停止条件或权限改变了吗?
名称、路径、引用和元数据仍能正确解析吗?
实际行为变化与本次变更目的一致吗?
完整、缺失、冲突和越界输入都重新验证了吗?
四个问题覆盖语义、引用、变更意图与边界验证。
--- # 用测试夹具做资产回归
| 夹具类型 | 输入特征 | 预期行为 | |---|---|---| | 完整输入 | 事实、规则和验证材料齐全 | 输出结构完整,结论能关联证据 | | 缺失输入 | 缺少关键代码、日志或规则 | 明确列出缺口并停止结论 | | 冲突输入 | 需求、规则和实现信息不一致 | 标识冲突,不擅自选择一方 | | 越界输入 | 请求超出定义的项目或权限范围 | 拒绝越界操作,解释允许范围 |
资产回归验证边界是否正确,不要求模型每次生成完全相同的文字。
--- # 修改前后都要检查引用完整性
| 检查对象 | 典型问题 | 验证方式 | |---|---|---| | Skill 元数据 | 名称、触发描述、入口路径失效 | 读取目录与发现配置 | | Rule 与任务上下文契约引用 | 指向旧路径、旧字段或旧版本 | 搜索引用并运行代表性任务 | | Agent 调用 Skill | 角色名或交接 Schema 改变 | 检查调用参数与结构化输出 | | MCP 工具契约 | 工具名、读写标记、错误语义不一致 | 契约校对与权限夹具 | | 下游交付模板 | 新输出字段未被消费或旧字段仍被依赖 | 对照输入输出 Schema |
--- # 三类不能直接合入的资产变更
| 信号 | 风险 | 需要补齐的内容 | |---|---|---| | 新增工具权限,却没有用途和停止边界 | Agent 可能越权调用外部能力 | 权限说明、允许场景和失败降级 | | 修改必填输入或输出结构,却没有代表性夹具 | 行为变化无法被回归判断 | 覆盖正常、缺失与冲突材料的验证记录 | | 更新规则或任务上下文契约,却没有代表性夹具 | 无法判断是修复还是引入新误用 | 完整、缺失、冲突和越界输入验证 |
没有行为说明、引用检查和验证证据的资产 diff,不具备合入条件。
--- # 资产变更的最小交付说明
```md ## 变更目的 解决的重复问题、误用风险或项目事实变化。 ## 行为变化 输入、输出、约束、工具权限、停止条件中发生了什么变化。 ## 变更范围与引用结果 受影响的文件、调用方、模板或配置,以及名称、路径和 Schema 的检查结果。 ## 验证证据 已运行的夹具、引用检查和可复核结果;未覆盖项如实列出。 ```
--- # 资产也纳入工程质量闭环
识别行为变化
->
检查引用与解析结果
->
验证夹具与权限边界
->
留下可追溯结论
代码和 AI 工程资产都需要以事实、边界和验证作为进入共享使用的依据。