# /audit — 变更审计 回顾本次会话中你所做的所有文件变更,结合自动预扫描结果,执行审计落盘。 ## 执行步骤 ### 第 1 步:运行预扫描脚本(Python,零 token) 运行: ```bash python scripts/audit/prescan.py ``` 该脚本自动完成: - 从 git status 获取所有变更文件 - 分类高风险文件 + 生成 risk_tags - 合规检查:代码→文档映射、迁移 SQL 检测、DDL 基线检查 读取输出的 JSON。如果 `audit_required: false`,告知用户"无需审计"并结束。 **备选**:如果 git status 包含大量非本次会话的历史变更,可以用 `--files` 参数只传入本次会话的文件: ```bash python scripts/audit/prescan.py --files "file1.py,file2.sql,..." ``` 文件列表从你的对话记忆(本次会话的 Edit/Write 工具调用)中提取。 ### 第 2 步:补充语义上下文 预扫描脚本能告诉你"哪些文件变了、是否高风险、文档是否缺失",但它不知道**为什么改**。 从对话记忆中补充: - 每个变更文件的修改原因(用户的需求是什么) - 改动的技术思路和设计决策 - 与其他模块的关联影响 将预扫描 JSON + 语义上下文合并,作为第 3 步的输入。 ### 第 3 步:委托子代理写审计记录 用 Agent 工具启动子代理,传入: 1. 预扫描 JSON 结果(完整) 2. 每个变更的原因和内容概要(你补充的语义上下文) 子代理的任务指令: > 在 `docs/audit/changes/` 目录下创建审计记录文件,文件名格式 `__<英文短标识>.md`。 > > 使用以下格式: > > ```markdown > # 变更审计记录:<中文标题> > > | 字段 | 值 | > |------|-----| > | 日期 | YYYY-MM-DD HH:MM:SS | > > ## 操作摘要 > <1-3 段,说清楚做了什么、为什么做> > > ## 变更文件 > 按新增/修改/删除分组,每个文件一行,简要说明改动内容。 > > ## 改动注解 > 对每个变更文件写注解: > - 高风险文件(ETL 任务/后端路由/数据库迁移/金额相关):写详细注解(变更类型、原因、思路、结果) > - 普通文件:一行简要说明 > - 删除的文件:只记录删除原因 > > ## 数据库变更(如有) > 列出新建/修改/删除的表、字段、约束、索引。标注迁移执行状态。 > > ## 风险与回滚 > - 风险点(标注高/中/低) > - 回滚要点 > > ## 验证 > - 至少 1 条可执行的验证方式(测试命令 / SQL / 联调步骤) > > ## 合规检查 > - 列出文档同步状态(已同步 / 待补齐 / 不适用) > ``` > > 当前北京时间通过 `python -c "from datetime import datetime, timezone, timedelta; print(datetime.now(timezone(timedelta(hours=8))).strftime('%Y-%m-%d %H:%M:%S'))"` 获取。 > > 审计记录语言使用简体中文。 > > 完成后运行 `python scripts/audit/gen_audit_dashboard.py` 刷新审计一览表。 > > 最终只返回:done / files_written / next_step。 ### 第 4 步:补齐缺失的文档同步 根据预扫描 JSON 中 `code_without_docs` 列出的不合规项,逐项补齐: - 读取对应代码文件当前内容 - 更新对应文档 如果补齐工作量大(>3 个文档),委托子代理处理。 ### 第 5 步:向用户报告 简短回执: - 审计记录文件路径 - 合规检查结果(全部通过 / N 项已补齐 / N 项待用户处理) - 下一步建议(如 "commit when ready")