From 348db6bda4d7653cadbd920c2ff59bafbf65b3b7 Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 17:09:01 +0800 Subject: [PATCH 01/10] docs: design AI usage disclosure skill --- .../2026-08-24-ai-usage-disclosure-design.md | 188 ++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-24-ai-usage-disclosure-design.md diff --git a/docs/superpowers/specs/2026-08-24-ai-usage-disclosure-design.md b/docs/superpowers/specs/2026-08-24-ai-usage-disclosure-design.md new file mode 100644 index 00000000..6578e996 --- /dev/null +++ b/docs/superpowers/specs/2026-08-24-ai-usage-disclosure-design.md @@ -0,0 +1,188 @@ +# AI 工具使用详情记录与生成 Skill 设计 + +## 1. 目标 + +为全国大学生数学建模竞赛工作流增加 `7ai-disclosure` Skill,在比赛全过程按阶段记录 AI 工具使用情况,并在论文验收后生成支撑材料: + +- `supporting_materials/AI 工具使用详情.tex` +- `supporting_materials/AI 工具使用详情.pdf` + +本设计依据用户提供的 `2026国赛AI工具使用规定.pdf`(SHA-256:`4CF6F30CDD37D6EF2CDB3439C5DBA4D9F207C12D6AAFE24419E81F3C69ACF59A`)。当前仅核对了文件内容,未另行核验其公开发布来源。 + +## 2. 合规边界 + +生成材料必须覆盖规定列出的四类信息: + +1. AI 工具名称、版本或型号; +2. 具体使用目的和环节; +3. 主要提示方式与使用过程,可附典型交互示例; +4. AI 输出的采纳、人工修改和核验情况,语言润色可按规定简化。 + +Skill 只负责记录、整理、校验和排版,不得: + +- 编造工具、模型版本、提示、人工修改或核验过程; +- 将“生成了 PDF”等同于“符合竞赛规定”; +- 代替参赛队确认核心建模与分析是否由队伍主导; +- 保存 API Key、访问令牌、完整思维链或无必要的个人敏感信息; +- 把未经队员确认的内容标记为已核验。 + +## 3. 方案选择 + +采用单一 Skill、双模式设计: + +- `record`:每个工作流阶段结束后,追加一条阶段级记录; +- `finalize`:检查记录完整性,生成 XeLaTeX 源文件和最终 PDF。 + +相较于拆成两个 Skill,该方案减少安装和调用成本;相较于赛后一次性补填,该方案能保留更可靠的过程证据。 + +## 4. 文件结构 + +```text +skills/7ai-disclosure/ +├── SKILL.md +├── templates/ +│ ├── AI_USAGE_LOG.md +│ └── AI工具使用详情模板.tex +└── scripts/ + └── validate_ai_usage_log.py +``` + +运行时项目产物: + +```text +reports/AI_USAGE_LOG.md +supporting_materials/AI 工具使用详情.tex +supporting_materials/AI 工具使用详情.pdf +``` + +## 5. 记录数据模型 + +### 5.1 基本信息 + +- 竞赛名称; +- 赛题编号或名称; +- 参赛队号; +- 记录起止时间; +- 最终材料生成时间。 + +### 5.2 工具目录 + +每个工具使用稳定编号,例如 `TOOL-01`,字段包括: + +- 工具名称; +- 提供方; +- 版本、型号或模型名称; +- 使用入口或方式,例如网页、桌面应用、API、IDE 插件; +- 信息来源及确认状态。 + +### 5.3 阶段记录 + +每条记录使用稳定编号,例如 `AI-001`,字段包括: + +- 使用阶段; +- 关联工具编号; +- 使用目的; +- 主要提示方式或代表性提示摘要; +- 使用过程摘要; +- AI 输出采纳情况; +- 人工修改内容; +- 人工核验方法与结果; +- 对应证据文件或产物; +- 负责确认的队员; +- 当前状态:`已确认` 或 `待队员确认`。 + +记录粒度按竞赛阶段汇总。只有在用途、工具、模型或核验方式发生实质变化时,才拆分为多条记录。 + +## 6. 工作流集成 + +### 6.1 初始化 + +`1start-mathmodel` 在生成 `plan.md` 和 `todo.md` 时,从模板创建 `reports/AI_USAGE_LOG.md`,并把 AI 使用记录列入工作流产物。 + +### 6.2 过程记录 + +总控工作流在以下阶段结束后调用 `7ai-disclosure record`: + +1. 赛题分析与建模设计; +2. 编程实现和图表生成; +3. 流程与架构图绘制; +4. 竞赛论文撰写; +5. 验证和验收。 + +记录模式先从本阶段报告和实际会话中整理草稿,再让队员确认无法从证据判断的字段。不得仅凭文件修改时间推断使用目的或人工核验情况。 + +### 6.3 最终生成 + +完成 `6verity` 后执行 `7ai-disclosure finalize`: + +1. 运行日志校验脚本; +2. 汇总重复工具和同类阶段记录; +3. 对未确认字段停止最终验收并请求队员补充; +4. 复制并填充 XeLaTeX 模板; +5. 使用 XeLaTeX 编译两遍; +6. 对 PDF 做页数、文本层、文件名和视觉检查; +7. 将结果写入 `reports/VERIFY_REPORT.md` 的支撑材料检查项。 + +## 7. PDF 模板结构 + +PDF 使用 A4 中文版式,正文以表格和连续说明结合: + +1. 标题与基本信息; +2. 填写说明与责任边界; +3. AI 工具清单; +4. 分阶段使用详情; +5. 典型交互示例; +6. 人工修改与核验汇总; +7. 未采纳的重要 AI 建议或结果; +8. 参赛队最终确认栏。 + +模板使用 `ctexart`、`geometry`、`longtable`、`booktabs`、`array`、`xcolor`、`fancyhdr` 和 `hyperref`。长记录必须允许跨页,表格不得依赖手工分页。 + +## 8. 缺失信息与异常处理 + +- 缺少必填字段:写为 `待队员确认`,校验失败,不生成可提交状态; +- 工具版本无法从证据确认:保留“无法确认”,不得猜测; +- 没有找到 AI 使用记录:提示队员确认是否确实未使用,不自动生成空白详情 PDF; +- XeLaTeX 不可用:保留 `.tex`,将 PDF 状态标记为未生成; +- 编译失败:保留日志并报告首个有效错误,不用删除内容规避错误; +- PDF 出现乱码、越界、重叠或异常分页:修复模板后重新编译和检查; +- 最终文件名不精确:重命名为 `AI 工具使用详情.pdf` 后重新验收。 + +## 9. 校验脚本 + +`validate_ai_usage_log.py` 使用 Python 标准库完成确定性检查: + +- 必需章节存在; +- 工具编号和记录编号唯一; +- 每条阶段记录引用的工具存在; +- 规定要求的字段均非空; +- 不存在未解决的 `待队员确认`; +- 不出现常见密钥格式; +- 至少存在一条人工修改或人工核验说明; +- 输出清晰的错误列表和非零退出码。 + +脚本只检查结构完整性,不判断叙述是否真实,也不替代队员确认。 + +## 10. 验证与验收 + +实施完成后至少执行: + +1. 合格日志样例通过校验; +2. 缺字段、未知工具编号、重复编号、待确认状态和疑似密钥样例均被拒绝; +3. XeLaTeX 连续编译两遍成功; +4. 生成 PDF 文件名完全匹配规定; +5. 使用 PDF 工具确认文件非空、页面为 A4、有中文文本层; +6. 将每页渲染为 PNG,检查中文字体、表格跨页、页码、边距、重叠和裁切; +7. 检查 Git 工作区仅包含预期文件; +8. 确认现有数学建模阶段顺序未被破坏。 + +## 11. PR 范围 + +首个 PR 只包含: + +- 新增 `7ai-disclosure` Skill、模板和校验脚本; +- 在 `1start-mathmodel` 中加入初始化、阶段记录和最终生成步骤; +- 在 `6verity` 中加入支撑材料验收项; +- 更新必要的 Skill 使用说明。 + +不在本 PR 中实现自动抓取完整聊天记录、云端上传、用户账号体系或比赛规则在线更新。 From 9baf7f136162808aad0054d868f0df4c9a2b374e Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 17:54:02 +0800 Subject: [PATCH 02/10] feat: add AI usage disclosure skill --- README.md | 1 + skills/1start-mathmodel/SKILL.md | 18 +- skills/6verity/SKILL.md | 20 +- skills/7ai-disclosure/SKILL.md | 55 ++++ .../scripts/validate_ai_usage_log.py | 239 ++++++++++++++++++ ...7\347\224\250\350\257\246\346\203\205.pdf" | Bin 0 -> 122312 bytes .../7ai-disclosure/templates/AI_USAGE_LOG.md | 56 ++++ ...6\346\203\205\346\250\241\346\235\277.tex" | 144 +++++++++++ 8 files changed, 529 insertions(+), 4 deletions(-) create mode 100644 skills/7ai-disclosure/SKILL.md create mode 100644 skills/7ai-disclosure/scripts/validate_ai_usage_log.py create mode 100644 "skills/7ai-disclosure/templates/AI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205.pdf" create mode 100644 skills/7ai-disclosure/templates/AI_USAGE_LOG.md create mode 100644 "skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" diff --git a/README.md b/README.md index 8a9eef88..22770915 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,7 @@ codex: $start-mathmodel 完成这个数学建模任务 ``` /doctor: 检查环境配置 /typst-author: typst 知识 +/7ai-disclosure: 持续记录 AI 使用并生成“AI 工具使用详情.pdf” ``` diff --git a/skills/1start-mathmodel/SKILL.md b/skills/1start-mathmodel/SKILL.md index ce215597..2e8b1bc6 100644 --- a/skills/1start-mathmodel/SKILL.md +++ b/skills/1start-mathmodel/SKILL.md @@ -1,6 +1,6 @@ --- name: 1start-mathmodel -description: "数学建模竞赛工作流入口。用于启动完整建模流程:询问用户偏好,生成 plan.md 和 todo.md,并按阶段调用赛题分析、建模、代码与图表、流程图、论文撰写、验证验收等 skills。" +description: "数学建模竞赛工作流入口。用于启动完整建模流程:询问用户偏好,生成 plan.md 和 todo.md,并按阶段调用赛题分析、建模、代码与图表、流程图、论文撰写、验证验收及 AI 使用披露等 skills。" allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetch --- @@ -18,6 +18,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc - `plan.md`:整体流程方案、建模方向、阶段顺序、预期产物和风险控制。 - `todo.md`:具体待办事项列表,记录每个阶段的任务和状态。 +- `reports/AI_USAGE_LOG.md`:赛中持续维护的 AI 工具使用过程记录;未知内容明确标记为“待队员确认”。 ## 工作流 @@ -57,6 +58,7 @@ workflow: 3. 流程与架构图绘制 - `4drawio` 4. 竞赛论文撰写 - `5writing` 5. 验证和验收 - `6verity` +6. AI 使用详情终检与生成 - `7ai-disclosure` ``` ## 项目目录结构 @@ -72,6 +74,7 @@ workflow: │ ├── RESULTS_REPORT.md # 2: 结果报告(3coding-visual) │ ├── DRAWIO_REPORT.md # 3: 非数据图说明(4drawio) │ ├── VERIFY_REPORT.md # 5: 验收报告(6verity) +│ └── AI_USAGE_LOG.md # 全程: AI 使用记录(7ai-disclosure) ├── code/ # 2: 代码(3coding-visual) │ ├── problem1.py │ ├── problem2.py @@ -85,6 +88,9 @@ workflow: ├── paper/ # 4: 论文(5writing) │ ├── main.typ / main.tex # 论文主文件(按用户选择的引擎) │ └── sections/ # 各节文件(.typ 或 .tex) +└── supporting_materials/ # 6: AI 使用支撑材料(确有使用 AI 时) + ├── AI 工具使用详情.tex + └── AI 工具使用详情.pdf ``` 方案必须明确每个阶段由哪个下游 skill 负责,以及该阶段应产出什么文件。 @@ -101,6 +107,7 @@ workflow: - [ ] 3. 流程与架构图绘制 - `4drawio` - [ ] 4. 竞赛论文撰写 - `5writing` - [ ] 5. 验证和验收 - `6verity` +- [ ] 6. AI 使用详情终检与生成 - `7ai-disclosure` ``` 每完成一个阶段,都要更新 `todo.md` 中对应任务的状态。 @@ -116,6 +123,15 @@ workflow: | 流程与架构图绘制 | `4drawio` | 在论文确实需要时,绘制方法流程图、架构图和非数据型概念图。 | `figures/*.drawio`, `figures/*.pdf`, `DRAWIO_REPORT.md` | | 竞赛论文撰写 | `5writing` | 基于分析、建模、代码结果和图表撰写最终竞赛论文,并按章节直接插入图表。 | `paper/` | | 验证和验收 | `6verity` | 检查可复现性、一致性、产物完整性、格式规范和提交就绪状态。 | `VERIFY_REPORT.md` | +| AI 使用详情终检与生成 | `7ai-disclosure` | 校验全过程记录,生成并验收赛事要求的 AI 使用支撑材料。 | `AI_USAGE_LOG.md`, `AI 工具使用详情.pdf` | + +## AI 使用记录衔接 + +- 工作流启动时,从 `7ai-disclosure/templates/AI_USAGE_LOG.md` 初始化 `reports/AI_USAGE_LOG.md`。 +- 每完成一个阶段,立即调用 `7ai-disclosure` 的 `record` 模式,根据真实对话和产物追加阶段级记录;不得等到赛后凭记忆补造。 +- `6verity` 完成论文验收后,调用 `7ai-disclosure` 的 `finalize` 模式。存在“待队员确认”时必须暂停生成并请队员补齐。 +- 若记录表明使用过 AI,但名称完全一致的 `supporting_materials/AI 工具使用详情.pdf` 尚未生成并通过检查,则整个提交包不得标记为最终 `PASS`。 +- 若队伍确认全程未使用 AI,不生成空白详情 PDF,并在验收报告中记录确认依据。 ## 阶段边界 diff --git a/skills/6verity/SKILL.md b/skills/6verity/SKILL.md index 1d0f6bf8..4ec8d0a6 100644 --- a/skills/6verity/SKILL.md +++ b/skills/6verity/SKILL.md @@ -1,12 +1,12 @@ --- name: 6verity -description: "数学建模竞赛最终验证和验收阶段,支持 Typst 和 LaTeX 双引擎。用于论文写完后检查章节数量、标题顺序、图表引用、数值一致性、占位符、内部文件泄露、参考文献、代码可复现性、编译和提交就绪状态。" +description: "数学建模竞赛论文验证和验收阶段,支持 Typst 和 LaTeX 双引擎。用于论文写完后检查章节数量、标题顺序、图表引用、数值一致性、占位符、内部文件泄露、参考文献、代码可复现性、编译、AI 支撑材料状态和提交就绪状态。" allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetch --- # 验证和验收(Typst / LaTeX) -本 skill 是完整工作流的最后一关。它不重新建模、不生成新结果、不代替写作阶段重写论文;它负责发现硬错误、修复可直接修复的问题,并输出 `reports/VERIFY_REPORT.md`。 +本 skill 是论文与项目产物的验收门禁。它不重新建模、不生成新结果、不代替写作阶段重写论文;它负责发现硬错误、修复可直接修复的问题,并输出 `reports/VERIFY_REPORT.md`。若项目使用过 AI,随后还必须由 `7ai-disclosure` 完成支撑材料终检与生成。 ## 数学建模规范参考 @@ -16,6 +16,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc - 本阶段负责:结构验收、文本质量门禁、图表引用检查、结果一致性检查、Typst/LaTeX 编译检查、PDF 视觉检查、提交清单。 - 本阶段不负责:重新设计模型、重新跑大规模实验、重新组织整篇论文。 +- 本阶段只核对 AI 使用日志和支撑材料状态,不补写、猜测或代替队员确认 AI 使用记录。 - 发现硬错误时,优先做小范围修复;如果需要回到前序阶段,写入 `reports/VERIFY_REPORT.md` 并标记为未通过。 ## 输入 @@ -29,6 +30,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc 5. 图表目录 6. 可复现代码目录。 7. 编译后的 PDF,或可由入口文件编译得到的输出 PDF。 +8. 若存在:`reports/AI_USAGE_LOG.md`、`supporting_materials/AI 工具使用详情.tex` 和 `supporting_materials/AI 工具使用详情.pdf`。 不要假设论文目录一定叫 `paper/`,也不要假设结果文件一定在项目根。若项目使用不同命名,按实际结构传参并在 `reports/VERIFY_REPORT.md` 中说明。 @@ -185,7 +187,15 @@ fi 如果模型没有视觉能力,必须在 `reports/VERIFY_REPORT.md` 中明确写出“未执行视觉检查”的原因,并至少完成 PDF 非空、页数、页面尺寸等可程序化检查。 -### Step 9: 写验收报告 +### Step 9: 检查 AI 使用支撑材料状态 + +- 若存在 `reports/AI_USAGE_LOG.md`,运行 `7ai-disclosure/scripts/validate_ai_usage_log.py`。赛中可用 `record` 模式;声称提交就绪时必须用 `finalize` 模式。 +- 日志表明使用过 AI 时,检查 `supporting_materials/AI 工具使用详情.pdf` 是否存在且文件名完全一致。 +- 检查该 PDF 非空、可提取文本、页面为 A4,并逐页查看是否越界、重叠、裁切或乱码。 +- 若日志仍有“待队员确认”或 PDF 尚未最终生成,本阶段可以完成论文验收,但整体提交状态不得写 `PASS`。 +- 若队伍确认未使用 AI,在报告中写明确认依据;不要生成空白详情 PDF。 + +### Step 10: 写验收报告 创建 `reports/VERIFY_REPORT.md`: @@ -211,6 +221,8 @@ PASS / FAIL ## PDF 视觉检查 +## AI 工具使用支撑材料 + ## 仍需处理的问题 ``` @@ -232,6 +244,8 @@ PASS / FAIL - 编译器可用但论文编译失败。 - 编译后的 PDF 为空、缺页、页数异常或页面尺寸异常且无法解释。 - 视觉检查发现正文、表格、图片、公式、页眉页脚、页码等关键元素重叠、裁切、越界或乱码。 +- 日志表明使用过 AI,但最终提交缺少名称完全一致的 `AI 工具使用详情.pdf`。 +- AI 使用日志仍有“待队员确认”、未完成逐项人工审查或存在疑似密钥,却将整体提交状态标记为 `PASS`。 ## 警告标准 diff --git a/skills/7ai-disclosure/SKILL.md b/skills/7ai-disclosure/SKILL.md new file mode 100644 index 00000000..1cf741b6 --- /dev/null +++ b/skills/7ai-disclosure/SKILL.md @@ -0,0 +1,55 @@ +--- +name: 7ai-disclosure +description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。用于在各建模阶段记录工具、用途、提示过程、采纳修改和人工核验,并在赛后生成及验收“AI 工具使用详情.pdf”。" +allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob +--- + +# AI 工具使用记录与详情生成 + +本 skill 有 `record` 和 `finalize` 两种模式。它只整理真实发生的 AI 使用,不替参赛队补造记录,也不自动宣称合规。 + +## 合规边界 + +记录至少覆盖:工具名称及版本/模型、用途及阶段、主要提示方式和过程、采纳情况及人工修改与核验。核心建模与分析必须由参赛队主导,AI 贡献必须由队员审查和验证。 + +禁止写入 API 密钥、访问令牌、账号密码、完整聊天记录、模型私有思维链或与申报无关的个人信息。典型交互只保留代表性提示与结果摘要。 + +## record:分阶段记录 + +1. 若 `reports/AI_USAGE_LOG.md` 不存在,从 `templates/AI_USAGE_LOG.md` 复制创建。 +2. 查看本阶段真实对话、报告、代码、结果和验证产物,复用已有 `TOOL-xx`;新工具使用下一个连续编号。 +3. 在“分阶段使用记录”下追加一个 `AI-xxx` 记录,写清用途、提示方法、使用过程、采纳、人工修改、人工核验和证据文件。 +4. 在需要时补充一条代表性典型交互或未采纳的重要建议。不要逐轮复制聊天。 +5. 无法从证据确认的内容必须写 `待队员确认`;不得推断队员已经完成审核。 +6. 运行结构校验: + +```bash +python "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode record +``` + +校验错误必须修复;允许保留明确标记的 `待队员确认`,供队员后续补齐。 + +## finalize:生成支撑材料 + +1. 先运行最终校验: + +```bash +python "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode finalize +``` + +只要仍有 `待队员确认`、缺项、无效引用、未完成人工审查或疑似密钥,立即停止,不生成“已完成”的 PDF。 + +2. 创建 `supporting_materials/`,将 `templates/AI工具使用详情模板.tex` 复制为 `supporting_materials/AI 工具使用详情.tex`。 +3. 依据日志填写模板;工具和阶段记录数量按实际增减。不得把模板中的示例或占位符当成事实。 +4. 在 `supporting_materials/` 中用 XeLaTeX 编译两遍: + +```bash +xelatex -interaction=nonstopmode -halt-on-error "AI 工具使用详情.tex" +xelatex -interaction=nonstopmode -halt-on-error "AI 工具使用详情.tex" +``` + +5. 必须得到名称完全一致的 `supporting_materials/AI 工具使用详情.pdf`。 +6. 检查 PDF 非空、可提取文本、页面为 A4;逐页渲染检查表格越界、重叠、裁切、乱码和异常空白。 +7. 在 `reports/VERIFY_REPORT.md` 记录日志校验、编译、文件名、页数、A4、文本层与视觉检查结果。 + +如果队伍确认全程未使用 AI,不生成空白详情 PDF;在验收报告中记录“未使用 AI,按赛事要求无需提交该支撑材料”,并保留队员确认依据。 diff --git a/skills/7ai-disclosure/scripts/validate_ai_usage_log.py b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py new file mode 100644 index 00000000..d0297e7c --- /dev/null +++ b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py @@ -0,0 +1,239 @@ +#!/usr/bin/env python3 +"""Validate the structured Markdown log used by 7ai-disclosure.""" + +from __future__ import annotations + +import argparse +import re +import sys +import tempfile +from pathlib import Path + + +PENDING_MARKERS = ("待队员确认", "请填写", "TODO", "PLACEHOLDER") +SECRET_PATTERNS = { + "OpenAI 风格密钥": re.compile(r"\bsk-[A-Za-z0-9_-]{12,}\b"), + "GitHub 令牌": re.compile(r"\b(?:ghp|github_pat)_[A-Za-z0-9_]{12,}\b"), + "Tavily 密钥": re.compile(r"\btvly-[A-Za-z0-9_-]{12,}\b"), + "Bearer 令牌": re.compile(r"\bBearer\s+[A-Za-z0-9._~+/-]{12,}", re.I), + "环境变量密钥": re.compile(r"\b[A-Z][A-Z0-9_]*(?:API_KEY|TOKEN|SECRET)\s*=\s*\S+"), +} + +REQUIRED_HEADINGS = ( + "基本信息", + "AI 工具目录", + "分阶段使用记录", + "典型交互示例", + "未采纳的重要 AI 建议或结果", + "最终确认", +) +REQUIRED_BASIC = ("竞赛名称", "赛题编号或名称", "参赛队号", "记录起止时间") +REQUIRED_TOOL = ("工具名称", "提供方", "版本或模型", "使用入口或方式", "信息来源及确认状态") +REQUIRED_RECORD = ( + "使用阶段", + "工具编号", + "使用目的", + "主要提示方式或代表性提示摘要", + "使用过程摘要", + "AI 输出采纳情况", + "人工修改内容", + "人工核验方法与结果", + "对应证据文件或产物", + "负责确认的队员", + "当前状态", +) +REQUIRED_FINAL = ( + "核心建模与分析由参赛队主导", + "所有记录已逐项人工审查", + "仍有待核实内容", + "队员确认", +) + + +def parse_fields(text: str) -> dict[str, list[str]]: + fields: dict[str, list[str]] = {} + for line in text.splitlines(): + match = re.match(r"^\s*-\s*([^::]+)[::]\s*(.*?)\s*$", line) + if match: + fields.setdefault(match.group(1).strip(), []).append(match.group(2).strip()) + return fields + + +def sections_by_id(text: str, pattern: str) -> list[tuple[str, str]]: + matches = list(re.finditer(pattern, text, flags=re.M)) + result: list[tuple[str, str]] = [] + for index, match in enumerate(matches): + end = matches[index + 1].start() if index + 1 < len(matches) else len(text) + result.append((match.group(1), text[match.end() : end])) + return result + + +def missing_fields(fields: dict[str, list[str]], required: tuple[str, ...]) -> list[str]: + return [name for name in required if name not in fields or not any(fields[name])] + + +def is_pending(value: str) -> bool: + return not value.strip() or any(marker.casefold() in value.casefold() for marker in PENDING_MARKERS) or bool( + re.search(r"【[^】]*】", value) + ) + + +def validate(path: Path, mode: str) -> list[str]: + errors: list[str] = [] + if not path.is_file(): + return [f"日志不存在:{path}"] + text = path.read_text(encoding="utf-8-sig") + + for name in REQUIRED_HEADINGS: + if not re.search(rf"^##\s+{re.escape(name)}\s*$", text, flags=re.M): + errors.append(f"缺少二级标题:{name}") + + for label, pattern in SECRET_PATTERNS.items(): + if pattern.search(text): + errors.append(f"检测到疑似{label},请删除或脱敏") + + fields = parse_fields(text) + for name in missing_fields(fields, REQUIRED_BASIC): + errors.append(f"基本信息缺少字段或值:{name}") + for name in missing_fields(fields, REQUIRED_FINAL): + errors.append(f"最终确认缺少字段或值:{name}") + + tools = sections_by_id(text, r"^###\s+(TOOL-\d+)\s*$") + records = sections_by_id(text, r"^###\s+(AI-\d+)\s*$") + tool_ids = [item_id for item_id, _ in tools] + record_ids = [item_id for item_id, _ in records] + + if len(tool_ids) != len(set(tool_ids)): + errors.append("AI 工具编号重复") + if len(record_ids) != len(set(record_ids)): + errors.append("阶段记录编号重复") + if not tools: + errors.append("至少需要一个 TOOL-xx 工具条目") + if not records: + errors.append("至少需要一个 AI-xxx 阶段记录") + + for tool_id, block in tools: + tool_fields = parse_fields(block) + for name in missing_fields(tool_fields, REQUIRED_TOOL): + errors.append(f"{tool_id} 缺少字段或值:{name}") + + for record_id, block in records: + record_fields = parse_fields(block) + for name in missing_fields(record_fields, REQUIRED_RECORD): + errors.append(f"{record_id} 缺少字段或值:{name}") + refs = record_fields.get("工具编号", []) + referenced = re.findall(r"TOOL-\d+", " ".join(refs)) + if not referenced: + errors.append(f"{record_id} 未引用 TOOL-xx") + for ref in referenced: + if ref not in tool_ids: + errors.append(f"{record_id} 引用了不存在的工具:{ref}") + status = " ".join(record_fields.get("当前状态", [])) + if status and status not in {"已确认", "待队员确认"}: + errors.append(f"{record_id} 当前状态只能是“已确认”或“待队员确认”") + + if mode == "finalize": + for field_name, values in fields.items(): + for value in values: + if is_pending(value): + errors.append(f"最终生成前仍有待确认或占位内容:{field_name}") + for record_id, block in records: + status = " ".join(parse_fields(block).get("当前状态", [])) + if status != "已确认": + errors.append(f"{record_id} 尚未标记为“已确认”") + final_values = {name: fields.get(name, [""])[-1].strip() for name in REQUIRED_FINAL} + if final_values["核心建模与分析由参赛队主导"] != "是": + errors.append("最终确认必须明确“核心建模与分析由参赛队主导:是”") + if final_values["所有记录已逐项人工审查"] != "是": + errors.append("最终确认必须明确“所有记录已逐项人工审查:是”") + if final_values["仍有待核实内容"] != "否": + errors.append("最终确认必须明确“仍有待核实内容:否”") + if not final_values["队员确认"] or is_pending(final_values["队员确认"]): + errors.append("缺少有效的队员确认") + + return list(dict.fromkeys(errors)) + + +VALID_SAMPLE = """# AI 工具使用过程记录 +## 基本信息 +- 竞赛名称:全国大学生数学建模竞赛 +- 赛题编号或名称:A 题 +- 参赛队号:20260001 +- 记录起止时间:2026-09-10 至 2026-09-13 +## AI 工具目录 +### TOOL-01 +- 工具名称:示例工具 +- 提供方:示例提供方 +- 版本或模型:示例模型 1 +- 使用入口或方式:网页端 +- 信息来源及确认状态:界面显示,已确认 +## 分阶段使用记录 +### AI-001 +- 使用阶段:代码复核 +- 工具编号:TOOL-01 +- 使用目的:检查边界条件 +- 主要提示方式或代表性提示摘要:给出代码和约束,请列出边界风险 +- 使用过程摘要:模型给出检查清单,队员逐项验证 +- AI 输出采纳情况:部分采纳 +- 人工修改内容:删除不适用建议并补充测试 +- 人工核验方法与结果:运行边界测试,全部通过 +- 对应证据文件或产物:tests/test_boundary.py +- 负责确认的队员:队员甲 +- 当前状态:已确认 +## 典型交互示例 +### EX-001 +- 对应记录:AI-001 +- 代表性提示摘要:检查边界条件 +- AI 结果摘要:列出三类风险 +- 队员处理:逐项测试后采纳两项 +## 未采纳的重要 AI 建议或结果 +- 建议更换模型,经对比后未采纳 +## 最终确认 +- 核心建模与分析由参赛队主导:是 +- 所有记录已逐项人工审查:是 +- 仍有待核实内容:否 +- 队员确认:队员甲、队员乙、队员丙已共同确认 +""" + + +def self_test() -> int: + cases = [ + ("valid", VALID_SAMPLE, "finalize", False), + ("pending", VALID_SAMPLE.replace("队员甲、队员乙、队员丙已共同确认", "待队员确认"), "finalize", True), + ("bad_ref", VALID_SAMPLE.replace("- 工具编号:TOOL-01", "- 工具编号:TOOL-99"), "record", True), + ("secret", VALID_SAMPLE + "\n- 备注:sk-abcdefghijklmnopqrstuvwxyz\n", "record", True), + ] + with tempfile.TemporaryDirectory() as tmpdir: + for name, content, mode, should_fail in cases: + path = Path(tmpdir) / f"{name}.md" + path.write_text(content, encoding="utf-8") + failed = bool(validate(path, mode)) + if failed != should_fail: + print(f"SELF-TEST FAIL: {name}") + return 1 + print("SELF-TEST PASS") + return 0 + + +def main() -> int: + parser = argparse.ArgumentParser(description="校验 AI 工具使用过程记录") + parser.add_argument("path", nargs="?", type=Path, help="AI_USAGE_LOG.md 路径") + parser.add_argument("--mode", choices=("record", "finalize"), default="finalize") + parser.add_argument("--self-test", action="store_true") + args = parser.parse_args() + if args.self_test: + return self_test() + if args.path is None: + parser.error("除 --self-test 外,必须提供日志路径") + errors = validate(args.path, args.mode) + if errors: + for error in errors: + print(f"ERROR: {error}") + print(f"VALIDATION FAILED: {len(errors)} error(s)") + return 1 + print(f"VALIDATION PASS ({args.mode})") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git "a/skills/7ai-disclosure/templates/AI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205.pdf" "b/skills/7ai-disclosure/templates/AI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..a236d95fa730447d32c422b578840d0e284a28c7 GIT binary patch literal 122312 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

Q>#dGvt72 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 T9X?0^BqlC|&&H+%R>uD~R}6s) literal 0 HcmV?d00001 diff --git a/skills/7ai-disclosure/templates/AI_USAGE_LOG.md b/skills/7ai-disclosure/templates/AI_USAGE_LOG.md new file mode 100644 index 00000000..ac2345a2 --- /dev/null +++ b/skills/7ai-disclosure/templates/AI_USAGE_LOG.md @@ -0,0 +1,56 @@ +# AI 工具使用过程记录 + +> 本文件用于赛中持续记录。只写真实发生的使用;未知内容写“待队员确认”。不要写入 API 密钥、账号密码、完整聊天记录或模型私有思维链。 + +## 基本信息 + +- 竞赛名称:待队员确认 +- 赛题编号或名称:待队员确认 +- 参赛队号:待队员确认 +- 记录起止时间:待队员确认 + +## AI 工具目录 + +### TOOL-01 + +- 工具名称:待队员确认 +- 提供方:待队员确认 +- 版本或模型:待队员确认 +- 使用入口或方式:待队员确认 +- 信息来源及确认状态:待队员确认 + +## 分阶段使用记录 + +### AI-001 + +- 使用阶段:待队员确认 +- 工具编号:TOOL-01 +- 使用目的:待队员确认 +- 主要提示方式或代表性提示摘要:待队员确认 +- 使用过程摘要:待队员确认 +- AI 输出采纳情况:待队员确认 +- 人工修改内容:待队员确认 +- 人工核验方法与结果:待队员确认 +- 对应证据文件或产物:待队员确认 +- 负责确认的队员:待队员确认 +- 当前状态:待队员确认 + +## 典型交互示例 + +### EX-001 + +- 对应记录:AI-001 +- 代表性提示摘要:待队员确认 +- AI 结果摘要:待队员确认 +- 队员处理:待队员确认 + +## 未采纳的重要 AI 建议或结果 + +- 待队员确认 + +## 最终确认 + +- 核心建模与分析由参赛队主导:待队员确认 +- 所有记录已逐项人工审查:待队员确认 +- 仍有待核实内容:待队员确认 +- 队员确认:待队员确认 diff --git "a/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" new file mode 100644 index 00000000..9ebe86ee --- /dev/null +++ "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" @@ -0,0 +1,144 @@ +% !TeX program = xelatex +% 本模板用于全国大学生数学建模竞赛 AI 工具使用支撑材料。 +% 仅填写真实、经队员审核的内容;按实际条目增删表格行和记录块。 +\documentclass[UTF8,a4paper,11pt]{ctexart} +\usepackage[a4paper,top=2.2cm,bottom=2.2cm,left=2.15cm,right=2.15cm]{geometry} +\usepackage{array,booktabs,longtable,tabularx,fancyhdr,lastpage,enumitem} +\usepackage[table]{xcolor} +\usepackage[hidelinks]{hyperref} + +\definecolor{rulegray}{HTML}{B7BDC5} +\definecolor{headgray}{HTML}{EEF1F4} +\definecolor{placeholder}{HTML}{666666} +\newcommand{\fillin}[1]{\textcolor{placeholder}{【#1】}} +\newcolumntype{Y}{>{\raggedright\arraybackslash}X} +\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} +\renewcommand{\arraystretch}{1.35} +\setlength{\parindent}{2em} +\setlength{\parskip}{0.25em} +\setlist[itemize]{leftmargin=2em,itemsep=0.2em,topsep=0.3em} + +\pagestyle{fancy} +\setlength{\headheight}{15pt} +\fancyhf{} +\fancyhead[L]{全国大学生数学建模竞赛支撑材料} +\fancyhead[R]{AI 工具使用详情} +\fancyfoot[C]{第 \thepage\ 页,共 \pageref{LastPage} 页} +\renewcommand{\headrulewidth}{0.4pt} +\renewcommand{\footrulewidth}{0pt} + +\begin{document} + +\begin{center} + {\zihao{2}\bfseries AI 工具使用详情}\par + \vspace{0.4em} + {\zihao{5}\color{placeholder}填写模板(提交前删除本行)} +\end{center} + +\section*{一、基本信息} +\noindent +\begin{tabularx}{\textwidth}{L{3.6cm}Y} +\toprule +\rowcolor{headgray}\textbf{项目} & \textbf{填写内容} \\ +\midrule +竞赛名称 & \fillin{填写竞赛全称} \\ +赛题编号或名称 & \fillin{填写赛题编号或名称} \\ +参赛队号 & \fillin{填写参赛队号} \\ +记录起止时间 & \fillin{年/月/日—年/月/日} \\ +材料生成日期 & \fillin{年/月/日} \\ +\bottomrule +\end{tabularx} + +\section*{二、责任说明与填写原则} +\noindent +\fcolorbox{rulegray}{headgray}{% +\parbox{0.94\textwidth}{ +本材料记录本队在竞赛过程中实际使用的 AI 工具及处理方式。核心建模与分析由参赛队主导;AI 生成或建议内容均须由队员人工审查、修改并验证。不得写入 API 密钥、账号密码、完整聊天记录、模型私有思维链或无关个人信息。 +}} + +\section*{三、AI 工具目录} +\begin{longtable}{@{}L{1.4cm}L{3.0cm}L{3.0cm}L{3.2cm}L{4.0cm}@{}} +\toprule +\rowcolor{headgray}\textbf{编号} & \textbf{工具名称} & \textbf{提供方} & \textbf{版本或模型} & \textbf{使用入口或方式} \\ +\midrule +\endfirsthead +\toprule +\rowcolor{headgray}\textbf{编号} & \textbf{工具名称} & \textbf{提供方} & \textbf{版本或模型} & \textbf{使用入口或方式} \\ +\midrule +\endhead +TOOL-01 & \fillin{名称} & \fillin{提供方} & \fillin{界面或官方信息所示版本/模型} & \fillin{网页端、客户端、API 等} \\ +\bottomrule +\end{longtable} + +\section*{四、分阶段使用记录} +\subsection*{AI-001:\fillin{阶段名称}} +\noindent +\begin{tabularx}{\textwidth}{L{4.2cm}Y} +\toprule +\rowcolor{headgray}\textbf{记录项} & \textbf{真实使用情况} \\ +\midrule +所用工具编号 & \fillin{如 TOOL-01} \\ +使用目的 & \fillin{说明该阶段为何使用 AI} \\ +主要提示方式或代表性提示摘要 & \fillin{概括提示结构和关键约束,不复制全部对话} \\ +使用过程摘要 & \fillin{说明主要步骤、迭代和人工参与} \\ +AI 输出采纳情况 & \fillin{完全采纳、部分采纳或未采纳,并说明范围} \\ +人工修改内容 & \fillin{说明队员做出的实质修改} \\ +人工核验方法与结果 & \fillin{说明复算、对照、测试、文献核查等方法及结果} \\ +对应证据文件或产物 & \fillin{填写可定位的文件、图表、日志或章节} \\ +负责确认的队员与状态 & \fillin{队员;已确认} \\ +\bottomrule +\end{tabularx} + +\vspace{0.6em} +{\small\color{placeholder}如有多个阶段,复制以上记录块并依次编号为 AI-002、AI-003……} + +\section*{五、典型交互示例} +\begin{longtable}{L{1.6cm}L{4.2cm}L{4.2cm}L{4.2cm}} +\toprule +\rowcolor{headgray}\textbf{对应记录} & \textbf{代表性提示摘要} & \textbf{AI 结果摘要} & \textbf{队员处理} \\ +\midrule +\endfirsthead +\toprule +\rowcolor{headgray}\textbf{对应记录} & \textbf{代表性提示摘要} & \textbf{AI 结果摘要} & \textbf{队员处理} \\ +\midrule +\endhead +AI-001 & \fillin{摘要} & \fillin{摘要} & \fillin{采纳、修改与核验} \\ +\bottomrule +\end{longtable} + +\section*{六、未采纳的重要 AI 建议或结果} +\begin{itemize} + \item \fillin{说明未采纳内容、原因及人工判断;如无则填写“无”} +\end{itemize} + +\section*{七、人工修改与验证汇总} +\noindent +\begin{tabularx}{\textwidth}{L{3.6cm}Y} +\toprule +\rowcolor{headgray}\textbf{项目} & \textbf{说明} \\ +\midrule +主要人工修改 & \fillin{汇总队员对 AI 输出所作修改} \\ +主要核验方法 & \fillin{汇总复算、代码测试、交叉验证、文献核对等} \\ +核验依据或证据 & \fillin{列出关键证据文件和结果} \\ +仍有待核实内容 & \fillin{提交前应为“无”} \\ +\bottomrule +\end{tabularx} + +\section*{八、最终确认} +\noindent +\begin{tabularx}{\textwidth}{L{7.2cm}Y} +\toprule +\rowcolor{headgray}\textbf{确认事项} & \textbf{确认结果} \\ +\midrule +核心建模与分析由参赛队主导 & \fillin{是/否} \\ +所有记录已逐项人工审查 & \fillin{是/否} \\ +仍有待核实内容 & \fillin{是/否;如是请说明} \\ +队员共同确认 & \fillin{填写确认方式或队员姓名} \\ +确认日期 & \fillin{年/月/日} \\ +\bottomrule +\end{tabularx} + +\vfill +{\small\color{placeholder}提交前检查:文件名必须为“AI 工具使用详情.pdf”;删除模板提示;确认无占位符、密钥和未经审核的陈述。} + +\end{document} From 08d238ccf87235246403548dd75c0e632af0fc07 Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 18:17:50 +0800 Subject: [PATCH 03/10] docs: simplify AI disclosure template design --- ...-usage-disclosure-simplification-design.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-24-ai-usage-disclosure-simplification-design.md diff --git a/docs/superpowers/specs/2026-08-24-ai-usage-disclosure-simplification-design.md b/docs/superpowers/specs/2026-08-24-ai-usage-disclosure-simplification-design.md new file mode 100644 index 00000000..7b86bd10 --- /dev/null +++ b/docs/superpowers/specs/2026-08-24-ai-usage-disclosure-simplification-design.md @@ -0,0 +1,98 @@ +# AI 工具使用详情简化设计 + +日期:2026-08-24 + +范围:`skills/7ai-disclosure` 及其在主工作流中的输出约定 + +## 目标 + +将最终提交的 `AI 工具使用详情.pdf` 精简为与赛事规定直接对应的四个部分,使评审能够快速识别所用工具、使用环节、提示过程以及人工采纳和核验情况。赛中记录和提交前校验仍应阻止虚构、待确认内容和敏感信息进入最终材料。 + +## 最终 PDF 结构 + +PDF 只保留文档标题、页眉页码和以下四个一级部分,不再增加基本信息、责任说明、分阶段记录、未采纳建议、最终确认或提交前检查等章节。 + +### 一、所用 AI 工具名称、版本或型号 + +使用简洁三列表格: + +| 编号 | AI 工具名称 | 版本或型号 | +| --- | --- | --- | +| TOOL-01 | 示例工具 | 示例版本或型号 | + +编号按 `TOOL-01`、`TOOL-02` 依次排列,供后续三个部分引用。不显示提供方、使用入口或方式,也不要求参赛队在最终材料中填写这些字段。 + +### 二、具体使用目的和环节 + +按工具或关键任务使用短条目说明: + +- 使用环节; +- 具体目的; +- 对应工具编号。 + +多个相近的小任务可以合并,避免逐轮罗列;每个条目必须标明对应的 `TOOL-xx`。 + +### 三、主要提示方式与使用过程说明 + +采用短段落说明提示组织方式、输入材料、约束条件、主要迭代和队员参与过程。每个过程说明标注所用 `TOOL-xx`。典型交互为可选内容,使用非表格形式: + +- 代表性提示摘要; +- AI 输出摘要; +- 队员如何处理。 + +不得复制完整聊天记录或模型私有思维链。 + +### 四、对 AI 输出的采纳、人工修改和核验的主要情况 + +按关键任务概括并标注对应的 `TOOL-xx`: + +- 完全采纳、部分采纳或未采纳的范围; +- 队员所作实质修改; +- 复算、测试、交叉验证或文献核查等核验方法与结果。 + +语言润色可以说明用途,但不强制展开人工修改和核验细节。 + +## Skill 与日志调整 + +`7ai-disclosure` 仍保留 `record` 和 `finalize` 两种模式,但记录结构直接映射到最终四部分。 + +- 工具目录只要求工具编号、工具名称和版本或型号。 +- 使用记录保留环节、目的、提示方式、过程、采纳、人工修改、人工核验和证据文件。 +- 典型交互为可选的非表格信息。 +- 删除日志中的基本信息、提供方、使用入口、未采纳建议独立章节和全局最终确认章节。 +- 每条使用记录保留“当前状态”,以区分“待队员确认”和“已确认”。 + +内部日志可以保留证据文件和确认状态,但这些控制字段不进入最终 PDF。 + +## 校验规则 + +`validate_ai_usage_log.py` 应: + +- 校验四个核心信息类别对应字段齐全; +- 校验工具编号唯一,并确保第二至第四部分引用的 `TOOL-xx` 均存在; +- 在 `finalize` 模式拒绝“待队员确认”、空值和占位符; +- 要求每条记录状态为“已确认”; +- 检测 API 密钥、访问令牌等疑似敏感信息; +- 不再要求基本信息、提供方、使用入口或全局最终确认字段。 + +## 生成与版式 + +- 最终源文件仍为 `supporting_materials/AI 工具使用详情.tex`。 +- 最终文件名仍为 `supporting_materials/AI 工具使用详情.pdf`。 +- 使用 XeLaTeX 编译两遍。 +- 模板采用 A4 中文排版,优先控制在 1–2 页;实际记录较多时允许自然分页。 +- 工具目录可以使用表格,典型交互不得使用表格。 + +## 验收 + +- Skill 结构校验通过。 +- 日志校验器自测通过,简化后的空白日志在 `record` 模式通过结构检查,在 `finalize` 模式因待确认内容而失败。 +- LaTeX 编译无错误和版式溢出警告。 +- PDF 非空、页面为 A4、中文文本层可提取。 +- 逐页视觉检查无裁切、重叠、表格越界、乱码或异常分页。 + +## 不在本次范围内 + +- 不修改论文正文中的“AI 工具使用声明”格式。 +- 不自动认定参赛队满足全部赛事合规要求。 +- 不保存完整聊天记录或自动推断队员已经完成核验。 From 59828fc7155bc14109abe908bf3c1e999a04cef9 Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 18:29:14 +0800 Subject: [PATCH 04/10] refactor: simplify AI disclosure output --- skills/7ai-disclosure/SKILL.md | 45 ++--- .../scripts/validate_ai_usage_log.py | 164 ++++++++---------- ...7\347\224\250\350\257\246\346\203\205.pdf" | Bin 122312 -> 77122 bytes .../7ai-disclosure/templates/AI_USAGE_LOG.md | 46 ++--- ...6\346\203\205\346\250\241\346\235\277.tex" | 142 ++++----------- 5 files changed, 145 insertions(+), 252 deletions(-) diff --git a/skills/7ai-disclosure/SKILL.md b/skills/7ai-disclosure/SKILL.md index 1cf741b6..5ad39a11 100644 --- a/skills/7ai-disclosure/SKILL.md +++ b/skills/7ai-disclosure/SKILL.md @@ -1,46 +1,50 @@ --- name: 7ai-disclosure -description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。用于在各建模阶段记录工具、用途、提示过程、采纳修改和人工核验,并在赛后生成及验收“AI 工具使用详情.pdf”。" +description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。用于持续记录工具、用途、提示过程、采纳修改和人工核验,并生成四部分简版“AI 工具使用详情.pdf”。" allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob --- # AI 工具使用记录与详情生成 -本 skill 有 `record` 和 `finalize` 两种模式。它只整理真实发生的 AI 使用,不替参赛队补造记录,也不自动宣称合规。 +本 skill 有 `record` 和 `finalize` 两种模式。它只整理真实发生的 AI 使用,不补造记录,也不自动宣称合规。 -## 合规边界 +## 输出约束 -记录至少覆盖:工具名称及版本/模型、用途及阶段、主要提示方式和过程、采纳情况及人工修改与核验。核心建模与分析必须由参赛队主导,AI 贡献必须由队员审查和验证。 +最终 PDF 只包含标题、页眉页码和以下四个一级部分: -禁止写入 API 密钥、访问令牌、账号密码、完整聊天记录、模型私有思维链或与申报无关的个人信息。典型交互只保留代表性提示与结果摘要。 +1. 所用 AI 工具名称、版本或型号; +2. 具体使用目的和环节; +3. 主要提示方式与使用过程说明,可附非表格的典型交互示例; +4. 对 AI 输出的采纳、人工修改和核验的主要情况,语言润色除外。 -## record:分阶段记录 +第一部分使用“编号、AI 工具名称、版本或型号”三列表格。工具编号采用 `TOOL-01`、`TOOL-02` 等,第二至第四部分必须引用对应编号。禁止写入密钥、密码、完整聊天记录、模型私有思维链或无关个人信息。 + +## record:持续记录 1. 若 `reports/AI_USAGE_LOG.md` 不存在,从 `templates/AI_USAGE_LOG.md` 复制创建。 -2. 查看本阶段真实对话、报告、代码、结果和验证产物,复用已有 `TOOL-xx`;新工具使用下一个连续编号。 -3. 在“分阶段使用记录”下追加一个 `AI-xxx` 记录,写清用途、提示方法、使用过程、采纳、人工修改、人工核验和证据文件。 -4. 在需要时补充一条代表性典型交互或未采纳的重要建议。不要逐轮复制聊天。 -5. 无法从证据确认的内容必须写 `待队员确认`;不得推断队员已经完成审核。 -6. 运行结构校验: +2. 查看当前阶段的真实对话和产物,复用已有 `TOOL-xx`;新工具使用下一个连续编号。 +3. 追加一个 `AI-xxx` 记录,写明工具编号、使用环节、具体目的、提示方式、使用过程、采纳情况、人工修改、人工核验和证据文件。 +4. 仅用于语言润色时,将“是否仅用于语言润色”写为“是”,人工修改和核验字段可以删除或写“不适用(仅语言润色)”。 +5. 典型交互为可选项;如记录,只保留代表性提示、输出和队员处理摘要,不复制全部对话。 +6. 无法确认的内容写 `待队员确认`,不得推断队员已经审核。 +7. 运行: ```bash python "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode record ``` -校验错误必须修复;允许保留明确标记的 `待队员确认`,供队员后续补齐。 - ## finalize:生成支撑材料 -1. 先运行最终校验: +1. 运行最终校验: ```bash python "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode finalize ``` -只要仍有 `待队员确认`、缺项、无效引用、未完成人工审查或疑似密钥,立即停止,不生成“已完成”的 PDF。 +存在待确认、缺项、无效工具引用、未确认记录或疑似密钥时停止生成。 -2. 创建 `supporting_materials/`,将 `templates/AI工具使用详情模板.tex` 复制为 `supporting_materials/AI 工具使用详情.tex`。 -3. 依据日志填写模板;工具和阶段记录数量按实际增减。不得把模板中的示例或占位符当成事实。 +2. 将 `templates/AI工具使用详情模板.tex` 复制为 `supporting_materials/AI 工具使用详情.tex`,按日志填写并增删实际工具和记录。 +3. PDF 必须严格采用上述四部分;典型交互使用正文段落,不使用表格。证据文件和内部状态用于校验,不写入最终 PDF。 4. 在 `supporting_materials/` 中用 XeLaTeX 编译两遍: ```bash @@ -48,8 +52,7 @@ xelatex -interaction=nonstopmode -halt-on-error "AI 工具使用详情.tex" xelatex -interaction=nonstopmode -halt-on-error "AI 工具使用详情.tex" ``` -5. 必须得到名称完全一致的 `supporting_materials/AI 工具使用详情.pdf`。 -6. 检查 PDF 非空、可提取文本、页面为 A4;逐页渲染检查表格越界、重叠、裁切、乱码和异常空白。 -7. 在 `reports/VERIFY_REPORT.md` 记录日志校验、编译、文件名、页数、A4、文本层与视觉检查结果。 +5. 必须得到 `supporting_materials/AI 工具使用详情.pdf`,并检查文件非空、A4、文本层及逐页版式。 +6. 在 `reports/VERIFY_REPORT.md` 记录日志校验、编译和 PDF 验收结果。 -如果队伍确认全程未使用 AI,不生成空白详情 PDF;在验收报告中记录“未使用 AI,按赛事要求无需提交该支撑材料”,并保留队员确认依据。 +若队伍确认全程未使用 AI,不生成空白详情 PDF,并在验收报告中记录确认依据。 diff --git a/skills/7ai-disclosure/scripts/validate_ai_usage_log.py b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py index d0297e7c..46ebd97e 100644 --- a/skills/7ai-disclosure/scripts/validate_ai_usage_log.py +++ b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py @@ -19,35 +19,22 @@ "环境变量密钥": re.compile(r"\b[A-Z][A-Z0-9_]*(?:API_KEY|TOKEN|SECRET)\s*=\s*\S+"), } -REQUIRED_HEADINGS = ( - "基本信息", - "AI 工具目录", - "分阶段使用记录", - "典型交互示例", - "未采纳的重要 AI 建议或结果", - "最终确认", -) -REQUIRED_BASIC = ("竞赛名称", "赛题编号或名称", "参赛队号", "记录起止时间") -REQUIRED_TOOL = ("工具名称", "提供方", "版本或模型", "使用入口或方式", "信息来源及确认状态") +REQUIRED_HEADINGS = ("AI 工具目录", "AI 使用记录") +REQUIRED_TOOL = ("工具名称", "版本或型号") REQUIRED_RECORD = ( - "使用阶段", "工具编号", - "使用目的", - "主要提示方式或代表性提示摘要", - "使用过程摘要", + "使用环节", + "具体使用目的", + "是否仅用于语言润色", + "主要提示方式", + "使用过程说明", "AI 输出采纳情况", - "人工修改内容", - "人工核验方法与结果", "对应证据文件或产物", - "负责确认的队员", "当前状态", ) -REQUIRED_FINAL = ( - "核心建模与分析由参赛队主导", - "所有记录已逐项人工审查", - "仍有待核实内容", - "队员确认", -) +REQUIRED_HUMAN_REVIEW = ("人工修改内容", "人工核验方法与结果") +REQUIRED_EXAMPLE = ("对应记录", "代表性提示摘要", "AI 输出摘要", "队员处理") +ID_PATTERN = re.compile(r"^###\s+((?:TOOL-\d{2})|(?:AI-\d{3})|(?:EX-\d{3}))\s*$", re.M) def parse_fields(text: str) -> dict[str, list[str]]: @@ -59,8 +46,8 @@ def parse_fields(text: str) -> dict[str, list[str]]: return fields -def sections_by_id(text: str, pattern: str) -> list[tuple[str, str]]: - matches = list(re.finditer(pattern, text, flags=re.M)) +def id_sections(text: str) -> list[tuple[str, str]]: + matches = list(ID_PATTERN.finditer(text)) result: list[tuple[str, str]] = [] for index, match in enumerate(matches): end = matches[index + 1].start() if index + 1 < len(matches) else len(text) @@ -79,129 +66,126 @@ def is_pending(value: str) -> bool: def validate(path: Path, mode: str) -> list[str]: - errors: list[str] = [] if not path.is_file(): return [f"日志不存在:{path}"] + text = path.read_text(encoding="utf-8-sig") + errors: list[str] = [] - for name in REQUIRED_HEADINGS: - if not re.search(rf"^##\s+{re.escape(name)}\s*$", text, flags=re.M): - errors.append(f"缺少二级标题:{name}") + for heading in REQUIRED_HEADINGS: + if not re.search(rf"^##\s+{re.escape(heading)}\s*$", text, flags=re.M): + errors.append(f"缺少二级标题:{heading}") for label, pattern in SECRET_PATTERNS.items(): if pattern.search(text): errors.append(f"检测到疑似{label},请删除或脱敏") - fields = parse_fields(text) - for name in missing_fields(fields, REQUIRED_BASIC): - errors.append(f"基本信息缺少字段或值:{name}") - for name in missing_fields(fields, REQUIRED_FINAL): - errors.append(f"最终确认缺少字段或值:{name}") - - tools = sections_by_id(text, r"^###\s+(TOOL-\d+)\s*$") - records = sections_by_id(text, r"^###\s+(AI-\d+)\s*$") + sections = id_sections(text) + tools = [(item_id, block) for item_id, block in sections if item_id.startswith("TOOL-")] + records = [(item_id, block) for item_id, block in sections if item_id.startswith("AI-")] + examples = [(item_id, block) for item_id, block in sections if item_id.startswith("EX-")] tool_ids = [item_id for item_id, _ in tools] record_ids = [item_id for item_id, _ in records] + example_ids = [item_id for item_id, _ in examples] - if len(tool_ids) != len(set(tool_ids)): - errors.append("AI 工具编号重复") - if len(record_ids) != len(set(record_ids)): - errors.append("阶段记录编号重复") if not tools: errors.append("至少需要一个 TOOL-xx 工具条目") if not records: - errors.append("至少需要一个 AI-xxx 阶段记录") + errors.append("至少需要一个 AI-xxx 使用记录") + for label, ids in (("工具", tool_ids), ("使用记录", record_ids), ("典型交互", example_ids)): + if len(ids) != len(set(ids)): + errors.append(f"{label}编号重复") for tool_id, block in tools: - tool_fields = parse_fields(block) - for name in missing_fields(tool_fields, REQUIRED_TOOL): + fields = parse_fields(block) + for name in missing_fields(fields, REQUIRED_TOOL): errors.append(f"{tool_id} 缺少字段或值:{name}") for record_id, block in records: - record_fields = parse_fields(block) - for name in missing_fields(record_fields, REQUIRED_RECORD): + fields = parse_fields(block) + for name in missing_fields(fields, REQUIRED_RECORD): errors.append(f"{record_id} 缺少字段或值:{name}") - refs = record_fields.get("工具编号", []) - referenced = re.findall(r"TOOL-\d+", " ".join(refs)) - if not referenced: + + references = re.findall(r"TOOL-\d{2}", " ".join(fields.get("工具编号", []))) + if not references: errors.append(f"{record_id} 未引用 TOOL-xx") - for ref in referenced: - if ref not in tool_ids: - errors.append(f"{record_id} 引用了不存在的工具:{ref}") - status = " ".join(record_fields.get("当前状态", [])) + for reference in references: + if reference not in tool_ids: + errors.append(f"{record_id} 引用了不存在的工具:{reference}") + + language_only = " ".join(fields.get("是否仅用于语言润色", [])) + if language_only and language_only not in {"是", "否", "待队员确认"}: + errors.append(f"{record_id} “是否仅用于语言润色”只能是“是”“否”或“待队员确认”") + if language_only != "是": + for name in missing_fields(fields, REQUIRED_HUMAN_REVIEW): + errors.append(f"{record_id} 非纯语言润色,缺少字段或值:{name}") + + status = " ".join(fields.get("当前状态", [])) if status and status not in {"已确认", "待队员确认"}: errors.append(f"{record_id} 当前状态只能是“已确认”或“待队员确认”") + for example_id, block in examples: + fields = parse_fields(block) + for name in missing_fields(fields, REQUIRED_EXAMPLE): + errors.append(f"{example_id} 缺少字段或值:{name}") + references = re.findall(r"AI-\d{3}", " ".join(fields.get("对应记录", []))) + if not references: + errors.append(f"{example_id} 未引用 AI-xxx") + for reference in references: + if reference not in record_ids: + errors.append(f"{example_id} 引用了不存在的记录:{reference}") + if mode == "finalize": - for field_name, values in fields.items(): + for field_name, values in parse_fields(text).items(): for value in values: if is_pending(value): errors.append(f"最终生成前仍有待确认或占位内容:{field_name}") for record_id, block in records: - status = " ".join(parse_fields(block).get("当前状态", [])) - if status != "已确认": + fields = parse_fields(block) + if " ".join(fields.get("当前状态", [])) != "已确认": errors.append(f"{record_id} 尚未标记为“已确认”") - final_values = {name: fields.get(name, [""])[-1].strip() for name in REQUIRED_FINAL} - if final_values["核心建模与分析由参赛队主导"] != "是": - errors.append("最终确认必须明确“核心建模与分析由参赛队主导:是”") - if final_values["所有记录已逐项人工审查"] != "是": - errors.append("最终确认必须明确“所有记录已逐项人工审查:是”") - if final_values["仍有待核实内容"] != "否": - errors.append("最终确认必须明确“仍有待核实内容:否”") - if not final_values["队员确认"] or is_pending(final_values["队员确认"]): - errors.append("缺少有效的队员确认") return list(dict.fromkeys(errors)) VALID_SAMPLE = """# AI 工具使用过程记录 -## 基本信息 -- 竞赛名称:全国大学生数学建模竞赛 -- 赛题编号或名称:A 题 -- 参赛队号:20260001 -- 记录起止时间:2026-09-10 至 2026-09-13 ## AI 工具目录 ### TOOL-01 - 工具名称:示例工具 -- 提供方:示例提供方 -- 版本或模型:示例模型 1 -- 使用入口或方式:网页端 -- 信息来源及确认状态:界面显示,已确认 -## 分阶段使用记录 +- 版本或型号:示例模型 1 +## AI 使用记录 ### AI-001 -- 使用阶段:代码复核 - 工具编号:TOOL-01 -- 使用目的:检查边界条件 -- 主要提示方式或代表性提示摘要:给出代码和约束,请列出边界风险 -- 使用过程摘要:模型给出检查清单,队员逐项验证 +- 使用环节:代码复核 +- 具体使用目的:检查边界条件 +- 是否仅用于语言润色:否 +- 主要提示方式:提供代码和约束,请列出边界风险 +- 使用过程说明:模型给出检查清单,队员逐项验证 - AI 输出采纳情况:部分采纳 - 人工修改内容:删除不适用建议并补充测试 - 人工核验方法与结果:运行边界测试,全部通过 - 对应证据文件或产物:tests/test_boundary.py -- 负责确认的队员:队员甲 - 当前状态:已确认 -## 典型交互示例 +## 典型交互示例(可选) ### EX-001 - 对应记录:AI-001 - 代表性提示摘要:检查边界条件 -- AI 结果摘要:列出三类风险 +- AI 输出摘要:列出三类风险 - 队员处理:逐项测试后采纳两项 -## 未采纳的重要 AI 建议或结果 -- 建议更换模型,经对比后未采纳 -## 最终确认 -- 核心建模与分析由参赛队主导:是 -- 所有记录已逐项人工审查:是 -- 仍有待核实内容:否 -- 队员确认:队员甲、队员乙、队员丙已共同确认 """ def self_test() -> int: + language_sample = VALID_SAMPLE.replace("- 是否仅用于语言润色:否", "- 是否仅用于语言润色:是") + language_sample = language_sample.replace("- 人工修改内容:删除不适用建议并补充测试\n", "") + language_sample = language_sample.replace("- 人工核验方法与结果:运行边界测试,全部通过\n", "") cases = [ ("valid", VALID_SAMPLE, "finalize", False), - ("pending", VALID_SAMPLE.replace("队员甲、队员乙、队员丙已共同确认", "待队员确认"), "finalize", True), + ("language_only", language_sample, "finalize", False), + ("pending", VALID_SAMPLE.replace("- 当前状态:已确认", "- 当前状态:待队员确认"), "finalize", True), ("bad_ref", VALID_SAMPLE.replace("- 工具编号:TOOL-01", "- 工具编号:TOOL-99"), "record", True), ("secret", VALID_SAMPLE + "\n- 备注:sk-abcdefghijklmnopqrstuvwxyz\n", "record", True), + ("missing_review", VALID_SAMPLE.replace("- 人工核验方法与结果:运行边界测试,全部通过\n", ""), "record", True), ] with tempfile.TemporaryDirectory() as tmpdir: for name, content, mode, should_fail in cases: diff --git "a/skills/7ai-disclosure/templates/AI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205.pdf" "b/skills/7ai-disclosure/templates/AI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205.pdf" index a236d95fa730447d32c422b578840d0e284a28c7..4b09b20181f7b1ab924b40355830ffaac0f22ec0 100644 GIT binary patch literal 77122 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

v2GGC(P8pJ)o^V0s3iJpDkI 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

Q>#dGvt72 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 T9X?0^BqlC|&&H+%R>uD~R}6s) diff --git a/skills/7ai-disclosure/templates/AI_USAGE_LOG.md b/skills/7ai-disclosure/templates/AI_USAGE_LOG.md index ac2345a2..d2d4d75e 100644 --- a/skills/7ai-disclosure/templates/AI_USAGE_LOG.md +++ b/skills/7ai-disclosure/templates/AI_USAGE_LOG.md @@ -1,56 +1,30 @@ # AI 工具使用过程记录 -> 本文件用于赛中持续记录。只写真实发生的使用;未知内容写“待队员确认”。不要写入 API 密钥、账号密码、完整聊天记录或模型私有思维链。 - -## 基本信息 - -- 竞赛名称:待队员确认 -- 赛题编号或名称:待队员确认 -- 参赛队号:待队员确认 -- 记录起止时间:待队员确认 +> 只记录真实发生的使用。未知内容写“待队员确认”;不要写入密钥、密码、完整聊天记录或模型私有思维链。 ## AI 工具目录 ### TOOL-01 - 工具名称:待队员确认 -- 提供方:待队员确认 -- 版本或模型:待队员确认 -- 使用入口或方式:待队员确认 -- 信息来源及确认状态:待队员确认 +- 版本或型号:待队员确认 -## 分阶段使用记录 +## AI 使用记录 ### AI-001 -- 使用阶段:待队员确认 - 工具编号:TOOL-01 -- 使用目的:待队员确认 -- 主要提示方式或代表性提示摘要:待队员确认 -- 使用过程摘要:待队员确认 +- 使用环节:待队员确认 +- 具体使用目的:待队员确认 +- 是否仅用于语言润色:待队员确认 +- 主要提示方式:待队员确认 +- 使用过程说明:待队员确认 - AI 输出采纳情况:待队员确认 - 人工修改内容:待队员确认 - 人工核验方法与结果:待队员确认 - 对应证据文件或产物:待队员确认 -- 负责确认的队员:待队员确认 - 当前状态:待队员确认 -## 典型交互示例 - -### EX-001 - -- 对应记录:AI-001 -- 代表性提示摘要:待队员确认 -- AI 结果摘要:待队员确认 -- 队员处理:待队员确认 - -## 未采纳的重要 AI 建议或结果 - -- 待队员确认 - -## 最终确认 +## 典型交互示例(可选) -- 核心建模与分析由参赛队主导:待队员确认 -- 所有记录已逐项人工审查:待队员确认 -- 仍有待核实内容:待队员确认 -- 队员确认:待队员确认 + diff --git "a/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" index 9ebe86ee..3d1f81f6 100644 --- "a/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" +++ "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" @@ -1,28 +1,25 @@ % !TeX program = xelatex -% 本模板用于全国大学生数学建模竞赛 AI 工具使用支撑材料。 -% 仅填写真实、经队员审核的内容;按实际条目增删表格行和记录块。 +% 按真实记录增删工具和使用记录;第二至第四部分统一引用 TOOL-xx。 \documentclass[UTF8,a4paper,11pt]{ctexart} -\usepackage[a4paper,top=2.2cm,bottom=2.2cm,left=2.15cm,right=2.15cm]{geometry} -\usepackage{array,booktabs,longtable,tabularx,fancyhdr,lastpage,enumitem} +\usepackage[a4paper,top=2.0cm,bottom=2.0cm,left=2.15cm,right=2.15cm]{geometry} +\usepackage{array,booktabs,longtable,fancyhdr,lastpage} \usepackage[table]{xcolor} \usepackage[hidelinks]{hyperref} -\definecolor{rulegray}{HTML}{B7BDC5} \definecolor{headgray}{HTML}{EEF1F4} \definecolor{placeholder}{HTML}{666666} \newcommand{\fillin}[1]{\textcolor{placeholder}{【#1】}} -\newcolumntype{Y}{>{\raggedright\arraybackslash}X} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} -\renewcommand{\arraystretch}{1.35} -\setlength{\parindent}{2em} -\setlength{\parskip}{0.25em} -\setlist[itemize]{leftmargin=2em,itemsep=0.2em,topsep=0.3em} +\newcommand{\recordheading}[2]{% + \vspace{0.25em}\noindent\textbf{使用记录 #1(#2)}\par\vspace{0.15em}} +\renewcommand{\arraystretch}{1.3} +\setlength{\parindent}{0pt} +\setlength{\parskip}{0.35em} \pagestyle{fancy} \setlength{\headheight}{15pt} \fancyhf{} -\fancyhead[L]{全国大学生数学建模竞赛支撑材料} -\fancyhead[R]{AI 工具使用详情} +\fancyhead[L]{AI 工具使用详情} \fancyfoot[C]{第 \thepage\ 页,共 \pageref{LastPage} 页} \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0pt} @@ -30,115 +27,50 @@ \begin{document} \begin{center} - {\zihao{2}\bfseries AI 工具使用详情}\par - \vspace{0.4em} - {\zihao{5}\color{placeholder}填写模板(提交前删除本行)} + {\zihao{2}\bfseries AI 工具使用详情} \end{center} -\section*{一、基本信息} -\noindent -\begin{tabularx}{\textwidth}{L{3.6cm}Y} +\section*{一、所用 AI 工具名称、版本或型号} +\begin{longtable}{@{}L{2.1cm}L{6.2cm}L{7.1cm}@{}} \toprule -\rowcolor{headgray}\textbf{项目} & \textbf{填写内容} \\ -\midrule -竞赛名称 & \fillin{填写竞赛全称} \\ -赛题编号或名称 & \fillin{填写赛题编号或名称} \\ -参赛队号 & \fillin{填写参赛队号} \\ -记录起止时间 & \fillin{年/月/日—年/月/日} \\ -材料生成日期 & \fillin{年/月/日} \\ -\bottomrule -\end{tabularx} - -\section*{二、责任说明与填写原则} -\noindent -\fcolorbox{rulegray}{headgray}{% -\parbox{0.94\textwidth}{ -本材料记录本队在竞赛过程中实际使用的 AI 工具及处理方式。核心建模与分析由参赛队主导;AI 生成或建议内容均须由队员人工审查、修改并验证。不得写入 API 密钥、账号密码、完整聊天记录、模型私有思维链或无关个人信息。 -}} - -\section*{三、AI 工具目录} -\begin{longtable}{@{}L{1.4cm}L{3.0cm}L{3.0cm}L{3.2cm}L{4.0cm}@{}} -\toprule -\rowcolor{headgray}\textbf{编号} & \textbf{工具名称} & \textbf{提供方} & \textbf{版本或模型} & \textbf{使用入口或方式} \\ +\rowcolor{headgray}\textbf{编号} & \textbf{AI 工具名称} & \textbf{版本或型号} \\ \midrule \endfirsthead \toprule -\rowcolor{headgray}\textbf{编号} & \textbf{工具名称} & \textbf{提供方} & \textbf{版本或模型} & \textbf{使用入口或方式} \\ +\rowcolor{headgray}\textbf{编号} & \textbf{AI 工具名称} & \textbf{版本或型号} \\ \midrule \endhead -TOOL-01 & \fillin{名称} & \fillin{提供方} & \fillin{界面或官方信息所示版本/模型} & \fillin{网页端、客户端、API 等} \\ +TOOL-01 & \fillin{工具名称} & \fillin{版本或型号} \\ \bottomrule \end{longtable} -\section*{四、分阶段使用记录} -\subsection*{AI-001:\fillin{阶段名称}} -\noindent -\begin{tabularx}{\textwidth}{L{4.2cm}Y} -\toprule -\rowcolor{headgray}\textbf{记录项} & \textbf{真实使用情况} \\ -\midrule -所用工具编号 & \fillin{如 TOOL-01} \\ -使用目的 & \fillin{说明该阶段为何使用 AI} \\ -主要提示方式或代表性提示摘要 & \fillin{概括提示结构和关键约束,不复制全部对话} \\ -使用过程摘要 & \fillin{说明主要步骤、迭代和人工参与} \\ -AI 输出采纳情况 & \fillin{完全采纳、部分采纳或未采纳,并说明范围} \\ -人工修改内容 & \fillin{说明队员做出的实质修改} \\ -人工核验方法与结果 & \fillin{说明复算、对照、测试、文献核查等方法及结果} \\ -对应证据文件或产物 & \fillin{填写可定位的文件、图表、日志或章节} \\ -负责确认的队员与状态 & \fillin{队员;已确认} \\ -\bottomrule -\end{tabularx} +\section*{二、具体使用目的和环节} +\recordheading{1}{TOOL-01} +\textbf{使用环节:}\fillin{如赛题分析、模型设计、代码复核或论文润色}。 -\vspace{0.6em} -{\small\color{placeholder}如有多个阶段,复制以上记录块并依次编号为 AI-002、AI-003……} +\textbf{具体目的:}\fillin{概括使用该工具解决的具体问题及范围}。 -\section*{五、典型交互示例} -\begin{longtable}{L{1.6cm}L{4.2cm}L{4.2cm}L{4.2cm}} -\toprule -\rowcolor{headgray}\textbf{对应记录} & \textbf{代表性提示摘要} & \textbf{AI 结果摘要} & \textbf{队员处理} \\ -\midrule -\endfirsthead -\toprule -\rowcolor{headgray}\textbf{对应记录} & \textbf{代表性提示摘要} & \textbf{AI 结果摘要} & \textbf{队员处理} \\ -\midrule -\endhead -AI-001 & \fillin{摘要} & \fillin{摘要} & \fillin{采纳、修改与核验} \\ -\bottomrule -\end{longtable} +\section*{三、主要提示方式与使用过程说明} +\recordheading{1}{TOOL-01} +\textbf{主要提示方式:}\fillin{概括输入材料、角色要求、约束条件和输出格式}。 -\section*{六、未采纳的重要 AI 建议或结果} -\begin{itemize} - \item \fillin{说明未采纳内容、原因及人工判断;如无则填写“无”} -\end{itemize} +\textbf{使用过程:}\fillin{概括主要步骤、必要迭代和队员参与过程}。 -\section*{七、人工修改与验证汇总} -\noindent -\begin{tabularx}{\textwidth}{L{3.6cm}Y} -\toprule -\rowcolor{headgray}\textbf{项目} & \textbf{说明} \\ -\midrule -主要人工修改 & \fillin{汇总队员对 AI 输出所作修改} \\ -主要核验方法 & \fillin{汇总复算、代码测试、交叉验证、文献核对等} \\ -核验依据或证据 & \fillin{列出关键证据文件和结果} \\ -仍有待核实内容 & \fillin{提交前应为“无”} \\ -\bottomrule -\end{tabularx} +\medskip +\noindent\textbf{典型交互示例(可选)} -\section*{八、最终确认} -\noindent -\begin{tabularx}{\textwidth}{L{7.2cm}Y} -\toprule -\rowcolor{headgray}\textbf{确认事项} & \textbf{确认结果} \\ -\midrule -核心建模与分析由参赛队主导 & \fillin{是/否} \\ -所有记录已逐项人工审查 & \fillin{是/否} \\ -仍有待核实内容 & \fillin{是/否;如是请说明} \\ -队员共同确认 & \fillin{填写确认方式或队员姓名} \\ -确认日期 & \fillin{年/月/日} \\ -\bottomrule -\end{tabularx} +\textbf{代表性提示摘要:}\fillin{只写代表性提示摘要,不复制完整聊天}。 + +\textbf{AI 输出摘要:}\fillin{概括关键建议或结果}。 + +\textbf{队员处理:}\fillin{说明如何判断、筛选或继续验证}。 + +\section*{四、对 AI 输出的采纳、人工修改和核验的主要情况} +\recordheading{1}{TOOL-01} +\textbf{采纳情况:}\fillin{说明完全采纳、部分采纳或未采纳的范围}。 + +\textbf{人工修改:}\fillin{说明队员所作实质修改;仅语言润色可写“不适用”}。 -\vfill -{\small\color{placeholder}提交前检查:文件名必须为“AI 工具使用详情.pdf”;删除模板提示;确认无占位符、密钥和未经审核的陈述。} +\textbf{人工核验:}\fillin{说明复算、测试、交叉验证或文献核查的方法与结果;仅语言润色可写“不适用”}。 \end{document} From 2c04bdb6ddbc9e034036a98be51ea41affe853aa Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 18:39:26 +0800 Subject: [PATCH 05/10] docs: design AI disclosure table polish --- ...08-24-ai-disclosure-table-polish-design.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-24-ai-disclosure-table-polish-design.md diff --git a/docs/superpowers/specs/2026-08-24-ai-disclosure-table-polish-design.md b/docs/superpowers/specs/2026-08-24-ai-disclosure-table-polish-design.md new file mode 100644 index 00000000..d9b84ba5 --- /dev/null +++ b/docs/superpowers/specs/2026-08-24-ai-disclosure-table-polish-design.md @@ -0,0 +1,49 @@ +# AI 工具使用详情表格化与版式美化设计 + +日期:2026-08-24 + +范围:`skills/7ai-disclosure` 的 LaTeX/PDF 模板及必要的 Skill 输出说明 + +## 目标 + +在不改变四部分内容范围的前提下,将第二部分“具体使用目的和环节”改为表格,并采用克制的学术蓝灰风格提升信息层次和评审阅读效率。 + +## 第二部分表格 + +第二部分使用三列表格: + +| 工具编号 | 使用环节 | 具体使用目的 | +| --- | --- | --- | +| TOOL-01 | 示例环节 | 示例目的 | + +- 每行表示一条使用记录。 +- 工具编号必须引用第一部分已有的 `TOOL-xx`。 +- 表格允许添加多行,并支持记录较多时自然分页。 +- 不改变日志字段和校验器的数据要求。 + +## 学术蓝灰风格 + +- 主色采用深蓝灰,浅蓝灰用于章节标题背景和表头。 +- 四个一级部分使用统一的浅色标题条和左侧强调线。 +- 第一、第二部分表格采用一致的表头、字号、行距和横线。 +- 第三、第四部分保留原有正文结构,只统一记录标题、字体颜色、段落间距和留白。 +- 页眉、页码和文档标题继续保留,但颜色和细线与主色协调。 +- 避免大面积深色色块,保证黑白打印仍可辨识。 + +## 变更边界 + +- 不修改四个一级部分的标题和顺序。 +- 不修改第一部分三列工具表。 +- 不修改第三部分典型交互的非表格形式。 +- 不修改第四部分的采纳、人工修改和核验字段。 +- 不修改日志模板或校验器逻辑。 +- 仅在 `SKILL.md` 中补充第二部分表格约束。 + +## 验收 + +- LaTeX 编译无错误、无溢出警告。 +- PDF 保持单页 A4;如实际记录增加,允许自然分页。 +- 第二部分包含“工具编号、使用环节、具体使用目的”三列表头。 +- 四个一级部分、`TOOL-01` 和中文文本层均可提取。 +- 逐页视觉检查无裁切、重叠、表格越界、乱码或异常留白。 +- Skill 结构校验和现有日志校验器自测继续通过。 From 797cec0b0db7a0097f467ab53c01995139e246de Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 18:42:52 +0800 Subject: [PATCH 06/10] style: polish AI disclosure template --- skills/7ai-disclosure/SKILL.md | 2 +- ...7\347\224\250\350\257\246\346\203\205.pdf" | Bin 77122 -> 74190 bytes ...6\346\203\205\346\250\241\346\235\277.tex" | 63 +++++++++++++----- 3 files changed, 46 insertions(+), 19 deletions(-) diff --git a/skills/7ai-disclosure/SKILL.md b/skills/7ai-disclosure/SKILL.md index 5ad39a11..4eac6d39 100644 --- a/skills/7ai-disclosure/SKILL.md +++ b/skills/7ai-disclosure/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob 3. 主要提示方式与使用过程说明,可附非表格的典型交互示例; 4. 对 AI 输出的采纳、人工修改和核验的主要情况,语言润色除外。 -第一部分使用“编号、AI 工具名称、版本或型号”三列表格。工具编号采用 `TOOL-01`、`TOOL-02` 等,第二至第四部分必须引用对应编号。禁止写入密钥、密码、完整聊天记录、模型私有思维链或无关个人信息。 +第一部分使用“编号、AI 工具名称、版本或型号”三列表格;第二部分使用“工具编号、使用环节、具体使用目的”三列表格。工具编号采用 `TOOL-01`、`TOOL-02` 等,第二至第四部分必须引用对应编号。禁止写入密钥、密码、完整聊天记录、模型私有思维链或无关个人信息。 ## record:持续记录 diff --git "a/skills/7ai-disclosure/templates/AI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205.pdf" "b/skills/7ai-disclosure/templates/AI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205.pdf" index 4b09b20181f7b1ab924b40355830ffaac0f22ec0..956e2304c40adffab0a2db22d72f6b4cf34b83de 100644 GIT binary patch delta 48976 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

!> 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 z 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 m1X@>9=LI5yVWq#f$)85@qXqd{\raggedright\arraybackslash}p{#1}} +\newcommand{\sectiontitle}[1]{% + \par\vspace{0.65em}\noindent + \begingroup\setlength{\fboxsep}{7pt}% + \colorbox{sectionbg}{\parbox{\dimexpr\textwidth-2\fboxsep\relax}{% + \textcolor{accent}{\rule{3pt}{1.15em}\hspace{0.65em}\bfseries\zihao{-3}#1}}}% + \endgroup\par\vspace{0.5em}} \newcommand{\recordheading}[2]{% - \vspace{0.25em}\noindent\textbf{使用记录 #1(#2)}\par\vspace{0.15em}} + \vspace{0.25em}\noindent\textcolor{accent}{\bfseries 使用记录 #1(#2)}\par + \vspace{0.08em}{\color{rulegray}\hrule height 0.35pt}\vspace{0.2em}} \renewcommand{\arraystretch}{1.3} \setlength{\parindent}{0pt} \setlength{\parskip}{0.35em} +\setlength{\LTpre}{0.2em} +\setlength{\LTpost}{0.25em} +\arrayrulecolor{rulegray} \pagestyle{fancy} -\setlength{\headheight}{15pt} +\setlength{\headheight}{24pt} +\addtolength{\topmargin}{-7pt} \fancyhf{} -\fancyhead[L]{AI 工具使用详情} -\fancyfoot[C]{第 \thepage\ 页,共 \pageref{LastPage} 页} -\renewcommand{\headrulewidth}{0.4pt} +\fancyhead[L]{\textcolor{accent}{\bfseries AI 工具使用详情}} +\fancyfoot[C]{\textcolor{placeholder}{第 \thepage\ 页,共 \pageref{LastPage} 页}} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\headrule}{\hbox to\headwidth{\color{accent}\leaders\hrule height 0.6pt\hfill}} \renewcommand{\footrulewidth}{0pt} \begin{document} +\color{bodytext} \begin{center} - {\zihao{2}\bfseries AI 工具使用详情} + {\zihao{2}\bfseries\color{accent}AI 工具使用详情}\par + \vspace{0.3em} + {\color{rulegray}\rule{0.28\textwidth}{0.7pt}} \end{center} -\section*{一、所用 AI 工具名称、版本或型号} +\sectiontitle{一、所用 AI 工具名称、版本或型号} \begin{longtable}{@{}L{2.1cm}L{6.2cm}L{7.1cm}@{}} \toprule -\rowcolor{headgray}\textbf{编号} & \textbf{AI 工具名称} & \textbf{版本或型号} \\ +\rowcolor{tablehead}\textcolor{accent}{\textbf{编号}} & \textcolor{accent}{\textbf{AI 工具名称}} & \textcolor{accent}{\textbf{版本或型号}} \\ \midrule \endfirsthead \toprule -\rowcolor{headgray}\textbf{编号} & \textbf{AI 工具名称} & \textbf{版本或型号} \\ +\rowcolor{tablehead}\textcolor{accent}{\textbf{编号}} & \textcolor{accent}{\textbf{AI 工具名称}} & \textcolor{accent}{\textbf{版本或型号}} \\ \midrule \endhead TOOL-01 & \fillin{工具名称} & \fillin{版本或型号} \\ \bottomrule \end{longtable} -\section*{二、具体使用目的和环节} -\recordheading{1}{TOOL-01} -\textbf{使用环节:}\fillin{如赛题分析、模型设计、代码复核或论文润色}。 - -\textbf{具体目的:}\fillin{概括使用该工具解决的具体问题及范围}。 +\sectiontitle{二、具体使用目的和环节} +\begin{longtable}{@{}L{3.0cm}L{4.2cm}L{8.2cm}@{}} +\toprule +\rowcolor{tablehead}\textcolor{accent}{\textbf{工具编号}} & \textcolor{accent}{\textbf{使用环节}} & \textcolor{accent}{\textbf{具体使用目的}} \\ +\midrule +\endfirsthead +\toprule +\rowcolor{tablehead}\textcolor{accent}{\textbf{工具编号}} & \textcolor{accent}{\textbf{使用环节}} & \textcolor{accent}{\textbf{具体使用目的}} \\ +\midrule +\endhead +TOOL-01 & \fillin{使用环节} & \fillin{概括使用该工具解决的具体问题及范围} \\ +\bottomrule +\end{longtable} -\section*{三、主要提示方式与使用过程说明} +\sectiontitle{三、主要提示方式与使用过程说明} \recordheading{1}{TOOL-01} \textbf{主要提示方式:}\fillin{概括输入材料、角色要求、约束条件和输出格式}。 @@ -65,7 +92,7 @@ \section*{三、主要提示方式与使用过程说明} \textbf{队员处理:}\fillin{说明如何判断、筛选或继续验证}。 -\section*{四、对 AI 输出的采纳、人工修改和核验的主要情况} +\sectiontitle{四、对 AI 输出的采纳、人工修改和核验的主要情况} \recordheading{1}{TOOL-01} \textbf{采纳情况:}\fillin{说明完全采纳、部分采纳或未采纳的范围}。 From 461618e557770f8026e5219624faac16cbb05c48 Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 19:20:32 +0800 Subject: [PATCH 07/10] docs: design desktop AI disclosure integration --- ...esktop-ai-disclosure-integration-design.md | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md diff --git a/docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md b/docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md new file mode 100644 index 00000000..2c0cf388 --- /dev/null +++ b/docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md @@ -0,0 +1,156 @@ +# 桌面版国赛 AI 工具使用详情集成设计 + +日期:2026-08-24 +范围:桌面版内置的 MathModelAgent Skills 工作流 + +## 1. 背景与边界 + +仓库 README 说明桌面版内置 Claude Code 与全套 MathModelAgent Skills,但当前仓库不包含 Electron、Tauri 或其他桌面壳及其打包源码。因此,本次改动以桌面版实际使用的 Skills 工作流为集成边界,不修改仓库中的旧 Vue/FastAPI 工作流,也不声称能够直接更新已经发布或安装的桌面程序。 + +原作者合并本改动并重新打包桌面版后,新版桌面程序才能包含该功能。 + +## 2. 目标 + +当用户在桌面版中启动全国大学生数学建模竞赛(国赛,CUMCM)论文生成任务时: + +1. 主工作流自动启用 `7ai-disclosure`。 +2. 从任务开始持续记录实际使用的 AI 工具、模型、用途、提示过程、输出采纳与核验情况。 +3. 完整论文通过验收后,只向队员集中询问一次必须由人确认的信息。 +4. 确认完成后生成名称完全一致的 `AI 工具使用详情.pdf`。 +5. `paper/main.pdf` 与该支撑材料 PDF 均通过验收后,任务才能报告最终完成。 + +## 3. 非目标 + +- 不为美赛或其他赛事强制生成国赛支撑材料。 +- 不修改已经发布的桌面安装包。 +- 不在缺少真实证据时推测或编造人工修改、人工核验情况。 +- 不把 API Key、访问令牌、完整敏感提示或内部调试信息写入最终 PDF。 +- 不把空白模板作为成功产物。 + +## 4. 方案 + +采用 Skill 工作流内的确定性集成,不依赖模型自行记住赛后补写材料。 + +```text +国赛任务启动 + -> 1start-mathmodel 初始化 AI_USAGE_LOG.md + -> 各工作阶段结束后调用 7ai-disclosure record + -> 5writing 生成完整论文 + -> 6verity 验收论文和项目产物 + -> 7ai-disclosure 汇总一次性人工确认问题 + -> 队员回复一次 + -> 7ai-disclosure finalize 生成并检查 PDF + -> 论文 PDF + AI 工具使用详情.pdf 均通过后报告完成 +``` + +## 5. 启用条件 + +`1start-mathmodel` 根据任务明确选择的赛事模板或题目信息判断赛事: + +- `CHINA`、`国赛`、`CUMCM` 或“全国大学生数学建模竞赛”视为国赛任务,必须启用 `7ai-disclosure`。 +- 明确为其他赛事时不启用该国赛支撑材料流程。 +- 无法判断赛事时,在任务开始阶段询问赛事类型;不得等到论文完成后再判断。 + +如果队伍确认全程未使用任何 AI,不生成空白 PDF,并在验收报告中保存该确认。桌面 Agent 本身参与了论文生成时,不得使用“全程未使用 AI”分支。 + +## 6. 记录机制 + +### 6.1 初始化 + +国赛工作流开始时,从模板创建 `reports/AI_USAGE_LOG.md`。日志使用稳定工具编号 `T1`、`T2` 等,使后续用途、提示过程和采纳核验记录能够对应具体工具。 + +工具名称与模型优先读取任务的真实运行配置和模型响应元数据;无法获得的字段进入最终一次性确认清单,不能自行猜测版本。 + +### 6.2 阶段记录 + +以下阶段结束后立即执行 `7ai-disclosure record`: + +- 赛题分析与任务拆解; +- 建模与方法选择; +- 代码生成、调试和计算; +- 图表与流程图生成; +- 论文写作与排版; +- 论文和项目验收。 + +每条记录至少包含工具编号、使用环节、具体目的、提示方式或提示摘要、AI 输出去向、已完成的修改和核验证据。记录只能来自本次任务的真实输入、对话、代码、结果和文件,不允许赛后凭空补造。 + +### 6.3 一次性人工确认 + +完成论文验收后,`7ai-disclosure` 汇总所有仍需人确认的内容,以一条消息集中询问。确认内容主要包括: + +- 队员是否采纳相关 AI 输出; +- 做过哪些非语言润色类人工修改; +- 使用什么方式人工核验关键结果; +- 无法从运行元数据确定的工具版本或型号。 + +队员只需回复一次。最终生成器把回复写入日志并重新校验;回复仍有缺项时,明确指出缺失项并停止生成,不输出带占位符的提交版 PDF。 + +## 7. PDF 生成 + +`7ai-disclosure finalize` 调用仓库内的确定性生成脚本,而不是仅依靠模型自由编辑模板。生成器负责: + +1. 解析并校验 `reports/AI_USAGE_LOG.md`。 +2. 将日志映射到既定四部分模板。 +3. 对插入 LaTeX 的动态内容进行转义。 +4. 写出 `supporting_materials/AI 工具使用详情.tex`。 +5. 优先使用 XeLaTeX 编译两遍;XeLaTeX 不可用时回退到 Tectonic。两者均不可用或编译失败时停止生成。 +6. 生成 `supporting_materials/AI 工具使用详情.pdf`。 +7. 检查文件非空、文件名完全一致、页面为 A4、存在文本层、四个部分齐全,且不含占位符或疑似密钥。 + +生成后的 PDF 保持当前已经确认的简洁四部分结构与版式,不增加责任说明、基本信息、最终确认或其他已删除章节。 + +## 8. 工作流门禁与错误处理 + +以下任一情况发生时,国赛任务不得报告最终完成: + +- `7ai-disclosure` 未被安装或无法加载; +- AI 使用日志缺失、字段不完整或仍有待确认内容; +- 一次性人工确认尚未完成; +- PDF 编译器不可用或编译失败; +- 最终文件名不完全等于 `AI 工具使用详情.pdf`; +- PDF 为空、不是 A4、没有文本层、缺少规定部分; +- PDF 含占位符、密钥或未经确认的陈述; +- `paper/main.pdf` 或 AI 支撑材料 PDF 任一缺失。 + +错误消息应说明失败环节、缺失内容和恢复方式。用户修正后从失败环节继续,不重复已经完成的建模与论文生成。 + +## 9. 仓库改动点 + +- `skills/skills.sh.json`:把 `7ai-disclosure` 加入工作流 Skill 清单。 +- `skills/1start-mathmodel/SKILL.md`:明确国赛触发、阶段记录、一次确认、最终双文件门禁。 +- `skills/6verity/SKILL.md`:把 AI 支撑材料纳入国赛最终验收。 +- `skills/7ai-disclosure/SKILL.md`:定义自动记录、一次确认和确定性生成流程。 +- `skills/7ai-disclosure/scripts/`:增加确定性 PDF 生成及必要的校验逻辑。 +- `skills/doctor/SKILL.md`:检查 `7ai-disclosure`、Python,以及 XeLaTeX 或 Tectonic PDF 编译依赖。 +- `README.md`、`README_EN.md`:说明国赛任务会同时生成 AI 使用详情,以及人工确认门禁。 + +不修改 `backend/` 与 `frontend/`;它们不是 README 所述桌面版的打包源码。 + +## 10. 测试与验收 + +至少覆盖以下自动测试: + +1. 国赛任务会初始化日志并进入披露流程。 +2. 非国赛任务不会生成国赛支撑材料。 +3. 存在待确认内容时,生成器拒绝输出提交版 PDF。 +4. 一次确认完成后,日志通过最终校验。 +5. 多个 AI 工具的编号能在四部分之间正确对应。 +6. 特殊字符不会破坏 LaTeX 编译。 +7. 模拟编译失败时,最终门禁失败并给出恢复提示。 +8. 成功样例生成名称准确的 A4 PDF,具有文本层和四个规定部分。 +9. 输出不包含占位符、疑似密钥和模板提示。 +10. `paper/main.pdf` 存在但 AI 支撑材料缺失时,国赛任务不能报告最终完成。 + +最终还需用一个最小国赛夹具执行端到端测试,确认输出目录同时包含 `paper/main.pdf` 和 `supporting_materials/AI 工具使用详情.pdf`。 + +## 11. 完成标准 + +本功能完成需同时满足: + +- `7ai-disclosure` 可被桌面 Skill 安装和发现; +- 国赛主工作流自动调用该 Skill; +- 人工信息只集中确认一次; +- 最终 PDF 由真实日志确定性生成并通过检查; +- 缺少该 PDF 时国赛任务不能显示最终成功; +- 自动测试和最小端到端测试均通过; +- 工作区不存在未说明的生成物或敏感信息。 From d07eff493413eabe527c77fb4b79623c89546225 Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 19:38:15 +0800 Subject: [PATCH 08/10] feat: integrate AI disclosure into CUMCM workflow --- .gitignore | 2 + README.md | 5 +- README_EN.md | 3 + ...esktop-ai-disclosure-integration-design.md | 2 +- skills/1start-mathmodel/SKILL.md | 34 +- skills/6verity/SKILL.md | 18 +- skills/7ai-disclosure/SKILL.md | 49 +- .../scripts/generate_ai_usage_pdf.py | 502 ++++++++++++++++++ .../scripts/test_ai_disclosure.py | 87 +++ .../scripts/validate_ai_usage_log.py | 94 +++- ...6\346\203\205\346\250\241\346\235\277.tex" | 32 +- .../tests/fixtures/valid_multi_tool.md | 50 ++ skills/doctor/SKILL.md | 21 +- skills/skills.sh.json | 3 +- 14 files changed, 812 insertions(+), 90 deletions(-) create mode 100644 skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py create mode 100644 skills/7ai-disclosure/scripts/test_ai_disclosure.py create mode 100644 skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md diff --git a/.gitignore b/.gitignore index 59519db0..64c459a5 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,5 @@ skills/5writing/templates/**/missfont.log # LaTeX 模板编译生成的 PDF(保留 huaweibei 的 logo.pdf 和 title.pdf 模板资源) skills/5writing/templates/**/main.pdf +__pycache__/ +*.py[cod] diff --git a/README.md b/README.md index 22770915..bd9a2e64 100644 --- a/README.md +++ b/README.md @@ -96,11 +96,14 @@ MathModelAgent SKILL —— 直接在 Harness 中驱动的数学建模自动化 完全开源免费,可接入任何模型。 **🧠 端到端自动化** -从问题分析、建模、编码、绘图到论文排版和验收,一条 `/1start-mathmodel` 命令全自动完成,中间阶段自动串联,无需人工干预。 +从问题分析、建模、编码、绘图到论文排版和验收,一条 `/1start-mathmodel` 命令自动串联;国赛任务仅在最终生成 AI 使用详情前集中进行一次人工确认。 **📄 17 套 Typst 论文模板** 内置中英文主流赛事模板(国赛、华数杯、华为杯、MCM/ICM 等),自动匹配赛事类型,生成排版精良、可直接提交的 PDF 论文。 +**🧾 国赛 AI 使用详情** +国赛任务从开始阶段持续记录真实 AI 使用情况;完整论文验收后集中确认一次人工修改与核验信息,同时生成 `paper/main.pdf` 和名称准确的 `supporting_materials/AI 工具使用详情.pdf`,缺少任一文件都不会报告最终完成。 + **📐 内置建模知识库** 包含完整的建模规范、模型选择决策树(AHP、TOPSIS、ARIMA、GA 等)、常见易错模式和 MCM/ICM 评分标准,每个阶段自动参考,降低模型幻觉。 diff --git a/README_EN.md b/README_EN.md index c4afa62c..142eef7a 100644 --- a/README_EN.md +++ b/README_EN.md @@ -26,6 +26,8 @@ The desktop app bundles Claude Code and the full set of MathModelAgent SKILLS. No Python / Node.js / Redis installation and no manual SKILL setup — install it, add one model API key, and start modeling. +For CUMCM tasks, the workflow records actual AI use throughout the run, asks the team for one consolidated confirmation after the paper review, and requires both `paper/main.pdf` and `supporting_materials/AI 工具使用详情.pdf` before reporting final completion. + | OS | File | |----|------| | macOS (Apple Silicon) | `mathmodel--arm64.dmg` | @@ -62,6 +64,7 @@ Automatically generate an award-level modeling paper - Local Interpreter: Based on Jupyter, code saved as notebook for easy editing - Cloud Code Interpreter: [E2B](https://e2b.dev/) and [daytona](https://app.daytona.io/) - 📝 Generate a well-formatted paper +- 🧾 Generate the required CUMCM AI-usage disclosure PDF from confirmed run records - 🤝 Multi-agents: modeling expert, coding expert, paper expert, etc. - 🔄 Multi-LLMs: Different models for each agent - 🤖 Support for all models: [litellm](https://docs.litellm.ai/docs/providers) diff --git a/docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md b/docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md index 2c0cf388..4277fef7 100644 --- a/docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md +++ b/docs/superpowers/specs/2026-08-24-desktop-ai-disclosure-integration-design.md @@ -57,7 +57,7 @@ ### 6.1 初始化 -国赛工作流开始时,从模板创建 `reports/AI_USAGE_LOG.md`。日志使用稳定工具编号 `T1`、`T2` 等,使后续用途、提示过程和采纳核验记录能够对应具体工具。 +国赛工作流开始时,从模板创建 `reports/AI_USAGE_LOG.md`。日志使用稳定工具编号 `TOOL-01`、`TOOL-02` 等,使后续用途、提示过程和采纳核验记录能够对应具体工具。 工具名称与模型优先读取任务的真实运行配置和模型响应元数据;无法获得的字段进入最终一次性确认清单,不能自行猜测版本。 diff --git a/skills/1start-mathmodel/SKILL.md b/skills/1start-mathmodel/SKILL.md index 2e8b1bc6..25ebdf24 100644 --- a/skills/1start-mathmodel/SKILL.md +++ b/skills/1start-mathmodel/SKILL.md @@ -1,7 +1,7 @@ --- name: 1start-mathmodel description: "数学建模竞赛工作流入口。用于启动完整建模流程:询问用户偏好,生成 plan.md 和 todo.md,并按阶段调用赛题分析、建模、代码与图表、流程图、论文撰写、验证验收及 AI 使用披露等 skills。" -allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetch +allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, WebSearch, WebFetch --- # 数学建模工作流 @@ -12,13 +12,20 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc 如需领域判断,读取 `../_references/math_modeling_norms.md`。该文件只提供数学建模基本规范和防错知识,不改变本 skill 的阶段顺序和产出约定。 +## 国赛识别与强制披露 + +- 用户选择 `CHINA`、国赛、CUMCM 或全国大学生数学建模竞赛时,立即将任务标记为国赛,并强制加载 `7ai-disclosure`。 +- 明确为其他赛事时,不生成国赛专用的 `AI 工具使用详情.pdf`。 +- 无法判断赛事时,在开始阶段询问一次赛事类型,不得等到论文完成后再判断。 +- 桌面 Agent 正在参与论文生成时,视为实际使用了 AI,不得走“全程未使用 AI”分支。 + ## 必须产出 在当前工作目录中创建或更新以下文件: - `plan.md`:整体流程方案、建模方向、阶段顺序、预期产物和风险控制。 - `todo.md`:具体待办事项列表,记录每个阶段的任务和状态。 -- `reports/AI_USAGE_LOG.md`:赛中持续维护的 AI 工具使用过程记录;未知内容明确标记为“待队员确认”。 +- 国赛任务的 `reports/AI_USAGE_LOG.md`:赛中持续维护的 AI 工具使用过程记录;未知内容明确标记为“待队员确认”。 ## 工作流 @@ -58,7 +65,7 @@ workflow: 3. 流程与架构图绘制 - `4drawio` 4. 竞赛论文撰写 - `5writing` 5. 验证和验收 - `6verity` -6. AI 使用详情终检与生成 - `7ai-disclosure` +6. AI 使用详情终检与生成 - `7ai-disclosure`(仅国赛强制) ``` ## 项目目录结构 @@ -74,7 +81,7 @@ workflow: │ ├── RESULTS_REPORT.md # 2: 结果报告(3coding-visual) │ ├── DRAWIO_REPORT.md # 3: 非数据图说明(4drawio) │ ├── VERIFY_REPORT.md # 5: 验收报告(6verity) -│ └── AI_USAGE_LOG.md # 全程: AI 使用记录(7ai-disclosure) +│ └── AI_USAGE_LOG.md # 国赛全程: AI 使用记录(7ai-disclosure) ├── code/ # 2: 代码(3coding-visual) │ ├── problem1.py │ ├── problem2.py @@ -107,7 +114,7 @@ workflow: - [ ] 3. 流程与架构图绘制 - `4drawio` - [ ] 4. 竞赛论文撰写 - `5writing` - [ ] 5. 验证和验收 - `6verity` -- [ ] 6. AI 使用详情终检与生成 - `7ai-disclosure` +- [ ] 6. AI 使用详情终检与生成 - `7ai-disclosure`(仅国赛强制) ``` 每完成一个阶段,都要更新 `todo.md` 中对应任务的状态。 @@ -123,15 +130,20 @@ workflow: | 流程与架构图绘制 | `4drawio` | 在论文确实需要时,绘制方法流程图、架构图和非数据型概念图。 | `figures/*.drawio`, `figures/*.pdf`, `DRAWIO_REPORT.md` | | 竞赛论文撰写 | `5writing` | 基于分析、建模、代码结果和图表撰写最终竞赛论文,并按章节直接插入图表。 | `paper/` | | 验证和验收 | `6verity` | 检查可复现性、一致性、产物完整性、格式规范和提交就绪状态。 | `VERIFY_REPORT.md` | -| AI 使用详情终检与生成 | `7ai-disclosure` | 校验全过程记录,生成并验收赛事要求的 AI 使用支撑材料。 | `AI_USAGE_LOG.md`, `AI 工具使用详情.pdf` | +| AI 使用详情终检与生成(仅国赛强制) | `7ai-disclosure` | 校验全过程记录,生成并验收赛事要求的 AI 使用支撑材料。 | `AI_USAGE_LOG.md`, `AI 工具使用详情.pdf` | ## AI 使用记录衔接 -- 工作流启动时,从 `7ai-disclosure/templates/AI_USAGE_LOG.md` 初始化 `reports/AI_USAGE_LOG.md`。 -- 每完成一个阶段,立即调用 `7ai-disclosure` 的 `record` 模式,根据真实对话和产物追加阶段级记录;不得等到赛后凭记忆补造。 -- `6verity` 完成论文验收后,调用 `7ai-disclosure` 的 `finalize` 模式。存在“待队员确认”时必须暂停生成并请队员补齐。 -- 若记录表明使用过 AI,但名称完全一致的 `supporting_materials/AI 工具使用详情.pdf` 尚未生成并通过检查,则整个提交包不得标记为最终 `PASS`。 -- 若队伍确认全程未使用 AI,不生成空白详情 PDF,并在验收报告中记录确认依据。 +以下规则只对国赛任务强制执行: + +1. 启动时加载 `7ai-disclosure`,从其模板初始化 `reports/AI_USAGE_LOG.md`。优先根据本次任务的真实模型配置创建工具条目;无法确认的版本留到最终一次性确认。 +2. `2analysis-modeling`、`3coding-visual`、`4drawio`、`5writing` 和 `6verity` 每个阶段结束后,立即调用 `7ai-disclosure record`,根据真实对话、模型配置和产物追加记录;不得等到赛后凭记忆补造。 +3. `6verity` 首先完成论文验收并得到 `PAPER_PASS`。此状态只表示论文通过,不能表示整个国赛提交包已经完成。 +4. 随后调用 `7ai-disclosure finalize`。它必须把工具版本、采纳情况、非语言润色类人工修改和人工核验等全部未知项合并为一条消息,只向队员集中确认一次。 +5. 队员回复后更新日志并运行确定性生成脚本。若回复仍缺少必填信息,应指出缺失项并停止,不得生成带占位符的提交版 PDF。 +6. 只有 `paper/main.pdf` 与名称完全一致的 `supporting_materials/AI 工具使用详情.pdf` 都存在并通过检查,才把 `todo.md` 的最后一步标记完成,并在 `reports/VERIFY_REPORT.md` 写最终 `PASS`。 + +若不是桌面 Agent 参与生成、且队伍能够确认全程未使用任何 AI,才允许不生成空白详情 PDF,并在验收报告中写明确认依据。 ## 阶段边界 diff --git a/skills/6verity/SKILL.md b/skills/6verity/SKILL.md index 4ec8d0a6..e3201e85 100644 --- a/skills/6verity/SKILL.md +++ b/skills/6verity/SKILL.md @@ -30,7 +30,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc 5. 图表目录 6. 可复现代码目录。 7. 编译后的 PDF,或可由入口文件编译得到的输出 PDF。 -8. 若存在:`reports/AI_USAGE_LOG.md`、`supporting_materials/AI 工具使用详情.tex` 和 `supporting_materials/AI 工具使用详情.pdf`。 +8. 国赛任务必须提供 `reports/AI_USAGE_LOG.md`;最终验收还必须提供 `supporting_materials/AI 工具使用详情.tex` 和 `supporting_materials/AI 工具使用详情.pdf`。其他赛事仅在实际存在时检查。 不要假设论文目录一定叫 `paper/`,也不要假设结果文件一定在项目根。若项目使用不同命名,按实际结构传参并在 `reports/VERIFY_REPORT.md` 中说明。 @@ -189,11 +189,13 @@ fi ### Step 9: 检查 AI 使用支撑材料状态 -- 若存在 `reports/AI_USAGE_LOG.md`,运行 `7ai-disclosure/scripts/validate_ai_usage_log.py`。赛中可用 `record` 模式;声称提交就绪时必须用 `finalize` 模式。 -- 日志表明使用过 AI 时,检查 `supporting_materials/AI 工具使用详情.pdf` 是否存在且文件名完全一致。 -- 检查该 PDF 非空、可提取文本、页面为 A4,并逐页查看是否越界、重叠、裁切或乱码。 -- 若日志仍有“待队员确认”或 PDF 尚未最终生成,本阶段可以完成论文验收,但整体提交状态不得写 `PASS`。 -- 若队伍确认未使用 AI,在报告中写明确认依据;不要生成空白详情 PDF。 +- 先读取 `plan.md` 的竞赛类型。`CHINA`、国赛、CUMCM 或全国大学生数学建模竞赛均按国赛处理。 +- 国赛任务必须能够加载 `7ai-disclosure`,并存在 `reports/AI_USAGE_LOG.md`。桌面 Agent 参与论文生成时,不得写“全程未使用 AI”。 +- 首次验收论文时,用 `record` 模式检查日志。论文自身全部通过可以记录为 `PAPER_PASS`,但此状态不是最终提交 `PASS`。 +- `7ai-disclosure` 完成一次性人工确认和 PDF 生成后,再用 `finalize` 模式检查日志,并检查 `supporting_materials/AI 工具使用详情.pdf` 文件名完全一致。 +- 检查该 PDF 非空、可提取文本、页面为 A4、包含规定四部分且无占位符或疑似密钥,并逐页查看是否越界、重叠、裁切或乱码。 +- 国赛任务只有 `paper/main.pdf` 与 `supporting_materials/AI 工具使用详情.pdf` 均通过检查,整体状态才能写 `PASS`。 +- 非国赛任务只有在用户明确要求时才检查该国赛支撑材料。 ### Step 10: 写验收报告 @@ -203,7 +205,7 @@ fi # 验证和验收报告 ## 结论 -PASS / FAIL +PAPER_PASS / PASS / FAIL ## 检查项 | 检查项 | 结果 | 说明 | @@ -226,7 +228,7 @@ PASS / FAIL ## 仍需处理的问题 ``` -只有当硬错误都修复、文本门禁通过、核心图表都引用、数值一致、编译通过或明确说明不可编译原因、视觉检查通过或明确说明无法执行原因时,才写 `PASS`。 +论文自身通过、但国赛 AI 支撑材料仍等待一次性人工确认或尚未生成时,只能写 `PAPER_PASS`。只有全部硬错误都修复,且国赛要求的两个 PDF 均通过最终检查时,才写 `PASS`。 ## 硬错误标准 diff --git a/skills/7ai-disclosure/SKILL.md b/skills/7ai-disclosure/SKILL.md index 4eac6d39..f00e38ab 100644 --- a/skills/7ai-disclosure/SKILL.md +++ b/skills/7ai-disclosure/SKILL.md @@ -1,12 +1,14 @@ --- name: 7ai-disclosure -description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。用于持续记录工具、用途、提示过程、采纳修改和人工核验,并生成四部分简版“AI 工具使用详情.pdf”。" -allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob +description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。国赛论文工作流启动时自动启用,持续记录真实工具、用途、提示过程、采纳修改和人工核验,并在一次性人工确认后生成四部分简版“AI 工具使用详情.pdf”。" +allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, AskUserQuestion --- # AI 工具使用记录与详情生成 -本 skill 有 `record` 和 `finalize` 两种模式。它只整理真实发生的 AI 使用,不补造记录,也不自动宣称合规。 +本 skill 有 `record` 和 `finalize` 两种模式。国赛任务由 `1start-mathmodel` 强制调用;其他赛事只在用户明确要求时使用。它只整理真实发生的 AI 使用,不补造记录,也不自动宣称合规。 + +桌面 Agent 正在参与国赛论文生成时,视为实际使用了 AI,不得生成“全程未使用 AI”的空记录。 ## 输出约束 @@ -22,37 +24,44 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob ## record:持续记录 1. 若 `reports/AI_USAGE_LOG.md` 不存在,从 `templates/AI_USAGE_LOG.md` 复制创建。 -2. 查看当前阶段的真实对话和产物,复用已有 `TOOL-xx`;新工具使用下一个连续编号。 -3. 追加一个 `AI-xxx` 记录,写明工具编号、使用环节、具体目的、提示方式、使用过程、采纳情况、人工修改、人工核验和证据文件。 -4. 仅用于语言润色时,将“是否仅用于语言润色”写为“是”,人工修改和核验字段可以删除或写“不适用(仅语言润色)”。 -5. 典型交互为可选项;如记录,只保留代表性提示、输出和队员处理摘要,不复制全部对话。 -6. 无法确认的内容写 `待队员确认`,不得推断队员已经审核。 -7. 运行: +2. 查看当前阶段的真实对话、运行配置和产物。工具名称与模型优先读取本次任务的真实配置或响应元数据;不可获得时写“待队员确认”,不得根据供应商或界面猜测版本。 +3. 复用已有 `TOOL-xx`;新工具使用下一个连续编号,编号必须从 `TOOL-01` 开始连续递增。 +4. 追加一个连续编号的 `AI-xxx` 记录,写明工具编号、使用环节、具体目的、提示方式、使用过程、采纳情况、人工修改、人工核验和证据文件。 +5. 仅用于语言润色时,将“是否仅用于语言润色”写为“是”,人工修改和核验字段可以删除或写“不适用(仅语言润色)”。 +6. 典型交互为可选项;如记录,只保留代表性提示、输出和队员处理摘要,不复制全部对话。 +7. 无法确认的内容写 `待队员确认`,不得推断队员已经审核。 +8. 每个国赛阶段结束后立即运行记录校验: ```bash -python "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode record +PYTHON_BIN="$(command -v python3 || command -v python)" +"$PYTHON_BIN" "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode record ``` ## finalize:生成支撑材料 -1. 运行最终校验: +1. 先检查日志,将所有 `待队员确认` 和只能由队员确认的内容合并为一条消息。只询问一次,集中确认工具版本、AI 输出采纳情况、非语言润色类人工修改和人工核验方法与结果。 +2. 根据队员的一次回复更新相应字段和 `当前状态`。若回复仍缺少必填信息,列出缺项并停止;不得连续拆成多轮零散问题,也不得自行补造。 +3. 运行最终校验: ```bash -python "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode finalize +PYTHON_BIN="$(command -v python3 || command -v python)" +"$PYTHON_BIN" "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode finalize ``` 存在待确认、缺项、无效工具引用、未确认记录或疑似密钥时停止生成。 -2. 将 `templates/AI工具使用详情模板.tex` 复制为 `supporting_materials/AI 工具使用详情.tex`,按日志填写并增删实际工具和记录。 -3. PDF 必须严格采用上述四部分;典型交互使用正文段落,不使用表格。证据文件和内部状态用于校验,不写入最终 PDF。 -4. 在 `supporting_materials/` 中用 XeLaTeX 编译两遍: +4. 最终校验通过后,必须调用确定性生成脚本,不再让模型自由复制或手填模板: ```bash -xelatex -interaction=nonstopmode -halt-on-error "AI 工具使用详情.tex" -xelatex -interaction=nonstopmode -halt-on-error "AI 工具使用详情.tex" +"$PYTHON_BIN" "<本 skill 目录>/scripts/generate_ai_usage_pdf.py" \ + reports/AI_USAGE_LOG.md \ + --output-dir supporting_materials ``` -5. 必须得到 `supporting_materials/AI 工具使用详情.pdf`,并检查文件非空、A4、文本层及逐页版式。 -6. 在 `reports/VERIFY_REPORT.md` 记录日志校验、编译和 PDF 验收结果。 +生成脚本负责日志到四部分模板的映射、LaTeX 转义、XeLaTeX 两遍编译、Tectonic 回退,以及文件名、非空、A4、文本层、规定部分、占位符和疑似密钥检查。典型交互使用正文段落,不使用表格;证据文件和内部状态只用于校验,不写入最终 PDF。 + +5. 必须得到名称完全一致的 `supporting_materials/AI 工具使用详情.pdf`,再逐页检查是否存在越界、重叠、裁切或乱码。 +6. 在 `reports/VERIFY_REPORT.md` 记录一次性确认、日志校验、编译、程序化 PDF 检查和逐页视觉检查结果。 +7. 只有 `paper/main.pdf` 与 `supporting_materials/AI 工具使用详情.pdf` 均通过检查,国赛提交包才能标记最终 `PASS`。 -若队伍确认全程未使用 AI,不生成空白详情 PDF,并在验收报告中记录确认依据。 +仅当本任务并非由桌面 Agent 生成、且队伍确认全程未使用任何 AI 时,不生成空白详情 PDF,并在验收报告中记录确认依据。 diff --git a/skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py b/skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py new file mode 100644 index 00000000..cf4d7429 --- /dev/null +++ b/skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py @@ -0,0 +1,502 @@ +#!/usr/bin/env python3 +"""Generate the CUMCM AI usage disclosure from a validated Markdown log.""" + +from __future__ import annotations + +import argparse +import re +import shutil +import subprocess +import sys +from dataclasses import dataclass +from pathlib import Path + +from validate_ai_usage_log import ( + PENDING_MARKERS, + SECRET_PATTERNS, + id_sections, + parse_fields, + validate, +) + +TEMPLATE_MARKERS = ( + "%%__TOOLS_ROWS__%%", + "%%__PURPOSE_ROWS__%%", + "%%__PROCESS_BLOCKS__%%", + "%%__ADOPTION_BLOCKS__%%", +) +REQUIRED_PDF_HEADINGS = ( + "一、所用AI工具名称、版本或型号", + "二、具体使用目的和环节", + "三、主要提示方式与使用过程说明", + "四、对AI输出的采纳、人工修改和核验的主要情况", +) + + +class GenerationError(RuntimeError): + """Raised when a disclosure artifact cannot be generated safely.""" + + +@dataclass(frozen=True) +class ToolEntry: + """One AI tool declared in the usage log.""" + + tool_id: str + name: str + version: str + + +@dataclass(frozen=True) +class UsageRecord: + """One stage-level AI usage record.""" + + record_id: str + tool_ids: tuple[str, ...] + stage: str + purpose: str + language_only: bool + prompt_method: str + process: str + adoption: str + human_edit: str + human_check: str + + +@dataclass(frozen=True) +class InteractionExample: + """One optional representative interaction example.""" + + example_id: str + record_ids: tuple[str, ...] + prompt_summary: str + output_summary: str + team_action: str + + +@dataclass(frozen=True) +class DisclosureLog: + """Structured data parsed from the Markdown log.""" + + tools: tuple[ToolEntry, ...] + records: tuple[UsageRecord, ...] + examples: tuple[InteractionExample, ...] + + +def _field(fields: dict[str, list[str]], name: str, default: str = "") -> str: + """Return a stable, compact value for a structured Markdown field.""" + values = [value.strip() for value in fields.get(name, []) if value.strip()] + return ";".join(values) if values else default + + +def parse_log(path: Path) -> DisclosureLog: + """Parse a validated AI usage log into structured records. + + Args: + path: Markdown log path. + + Returns: + Structured disclosure data. + """ + text = path.read_text(encoding="utf-8-sig") + tools: list[ToolEntry] = [] + records: list[UsageRecord] = [] + examples: list[InteractionExample] = [] + + for item_id, block in id_sections(text): + fields = parse_fields(block) + if item_id.startswith("TOOL-"): + tools.append( + ToolEntry( + tool_id=item_id, + name=_field(fields, "工具名称"), + version=_field(fields, "版本或型号"), + ) + ) + elif item_id.startswith("AI-"): + tool_ids = tuple( + dict.fromkeys(re.findall(r"TOOL-\d{2}", _field(fields, "工具编号"))) + ) + records.append( + UsageRecord( + record_id=item_id, + tool_ids=tool_ids, + stage=_field(fields, "使用环节"), + purpose=_field(fields, "具体使用目的"), + language_only=_field(fields, "是否仅用于语言润色") == "是", + prompt_method=_field(fields, "主要提示方式"), + process=_field(fields, "使用过程说明"), + adoption=_field(fields, "AI 输出采纳情况"), + human_edit=_field(fields, "人工修改内容", "不适用(仅语言润色)"), + human_check=_field( + fields, + "人工核验方法与结果", + "不适用(仅语言润色)", + ), + ) + ) + elif item_id.startswith("EX-"): + record_ids = tuple( + dict.fromkeys(re.findall(r"AI-\d{3}", _field(fields, "对应记录"))) + ) + examples.append( + InteractionExample( + example_id=item_id, + record_ids=record_ids, + prompt_summary=_field(fields, "代表性提示摘要"), + output_summary=_field(fields, "AI 输出摘要"), + team_action=_field(fields, "队员处理"), + ) + ) + + return DisclosureLog(tuple(tools), tuple(records), tuple(examples)) + + +def latex_escape(value: str) -> str: + """Escape untrusted log text for LaTeX text mode. + + Args: + value: Plain text from the confirmed usage log. + + Returns: + A single-line LaTeX-safe string. + """ + compact = re.sub(r"\s+", " ", value).strip() + replacements = { + "\\": r"\textbackslash{}", + "{": r"\{", + "}": r"\}", + "$": r"\$", + "&": r"\&", + "#": r"\#", + "_": r"\_", + "%": r"\%", + "~": r"\textasciitilde{}", + "^": r"\textasciicircum{}", + } + return "".join(replacements.get(char, char) for char in compact) + + +def _tools_rows(data: DisclosureLog) -> str: + return "\n".join( + f"{tool.tool_id} & {latex_escape(tool.name)} & " + f"{latex_escape(tool.version)} \\\\" + for tool in data.tools + ) + + +def _purpose_rows(data: DisclosureLog) -> str: + return "\n".join( + f"{latex_escape('、'.join(record.tool_ids))} & " + f"{latex_escape(record.stage)} & {latex_escape(record.purpose)} \\\\" + for record in data.records + ) + + +def _process_blocks(data: DisclosureLog) -> str: + examples_by_record: dict[str, list[InteractionExample]] = {} + for example in data.examples: + for record_id in example.record_ids: + examples_by_record.setdefault(record_id, []).append(example) + + blocks: list[str] = [] + for record in data.records: + tool_ids = "、".join(record.tool_ids) + lines = [ + rf"\recordheading{{{record.record_id}}}{{{latex_escape(tool_ids)}}}", + rf"\textbf{{主要提示方式:}}{latex_escape(record.prompt_method)}。", + "", + rf"\textbf{{使用过程:}}{latex_escape(record.process)}。", + ] + for example in examples_by_record.get(record.record_id, []): + lines.extend( + [ + "", + rf"\noindent\textbf{{典型交互示例 {example.example_id}}}", + "", + rf"\textbf{{代表性提示摘要:}}{latex_escape(example.prompt_summary)}。", + "", + rf"\textbf{{AI 输出摘要:}}{latex_escape(example.output_summary)}。", + "", + rf"\textbf{{队员处理:}}{latex_escape(example.team_action)}。", + ] + ) + blocks.append("\n".join(lines)) + return "\n\n".join(blocks) + + +def _adoption_blocks(data: DisclosureLog) -> str: + blocks: list[str] = [] + for record in data.records: + if record.language_only: + continue + tool_ids = "、".join(record.tool_ids) + blocks.append( + "\n".join( + [ + rf"\recordheading{{{record.record_id}}}{{{latex_escape(tool_ids)}}}", + rf"\textbf{{采纳情况:}}{latex_escape(record.adoption)}。", + "", + rf"\textbf{{人工修改:}}{latex_escape(record.human_edit)}。", + "", + rf"\textbf{{人工核验:}}{latex_escape(record.human_check)}。", + ] + ) + ) + if not blocks: + return "除语言润色外,无其他需说明的 AI 输出采纳、人工修改和核验记录。" + return "\n\n".join(blocks) + + +def render_tex(log_path: Path, template_path: Path, tex_path: Path) -> Path: + """Render a final TeX source from a validated log. + + Args: + log_path: Finalized Markdown log. + template_path: LaTeX template containing deterministic markers. + tex_path: Destination TeX path. + + Returns: + The written TeX path. + + Raises: + GenerationError: If validation or template rendering fails. + """ + errors = validate(log_path, "finalize") + if errors: + raise GenerationError("日志未通过最终校验:\n- " + "\n- ".join(errors)) + if not template_path.is_file(): + raise GenerationError(f"LaTeX 模板不存在:{template_path}") + + template = template_path.read_text(encoding="utf-8-sig") + for marker in TEMPLATE_MARKERS: + if template.count(marker) != 1: + raise GenerationError(f"模板标记缺失或重复:{marker}") + + data = parse_log(log_path) + rendered = template + replacements = { + TEMPLATE_MARKERS[0]: _tools_rows(data), + TEMPLATE_MARKERS[1]: _purpose_rows(data), + TEMPLATE_MARKERS[2]: _process_blocks(data), + TEMPLATE_MARKERS[3]: _adoption_blocks(data), + } + for marker, content in replacements.items(): + rendered = rendered.replace(marker, content) + + if any(marker in rendered for marker in TEMPLATE_MARKERS): + raise GenerationError("生成后的 TeX 仍含模板标记") + for marker in PENDING_MARKERS: + if marker.casefold() in rendered.casefold(): + raise GenerationError(f"生成后的 TeX 仍含待确认或占位内容:{marker}") + for label, pattern in SECRET_PATTERNS.items(): + if pattern.search(rendered): + raise GenerationError(f"生成后的 TeX 检测到疑似{label}") + + tex_path.parent.mkdir(parents=True, exist_ok=True) + with tex_path.open("w", encoding="utf-8", newline="\n") as output: + output.write(rendered) + return tex_path + + +def _run_compiler(command: list[str], cwd: Path) -> None: + """Run a PDF compiler and raise a compact actionable error on failure.""" + try: + result = subprocess.run( + command, + cwd=cwd, + capture_output=True, + text=True, + encoding="utf-8", + errors="replace", + timeout=180, + check=False, + ) + except subprocess.TimeoutExpired as exc: + raise GenerationError(f"PDF 编译超时:{' '.join(command)}") from exc + if result.returncode != 0: + output = (result.stdout + "\n" + result.stderr).strip() + raise GenerationError( + f"PDF 编译失败(退出码 {result.returncode}):\n{output[-4000:]}" + ) + + +def compile_pdf(tex_path: Path, compiler: str = "auto") -> Path: + """Compile the rendered TeX using XeLaTeX or Tectonic. + + Args: + tex_path: Rendered TeX source. + compiler: ``auto``, ``xelatex``, or ``tectonic``. + + Returns: + Compiled PDF path. + """ + candidates = ("xelatex", "tectonic") if compiler == "auto" else (compiler,) + selected = next( + ((name, shutil.which(name)) for name in candidates if shutil.which(name)), + None, + ) + if selected is None: + expected = " 或 ".join(candidates) + raise GenerationError(f"缺少 PDF 编译器:需要 {expected}") + + name, executable = selected + assert executable is not None + if name == "xelatex": + command = [ + executable, + "-interaction=nonstopmode", + "-halt-on-error", + tex_path.name, + ] + _run_compiler(command, tex_path.parent) + _run_compiler(command, tex_path.parent) + else: + _run_compiler([executable, "--keep-logs", tex_path.name], tex_path.parent) + + pdf_path = tex_path.with_suffix(".pdf") + if not pdf_path.is_file() or pdf_path.stat().st_size == 0: + raise GenerationError(f"编译器未生成非空 PDF:{pdf_path}") + return pdf_path + + +def cleanup_auxiliary_files(tex_path: Path) -> None: + """Remove compiler by-products after a fully verified build.""" + names = [ + tex_path.with_suffix(suffix) + for suffix in (".aux", ".log", ".out", ".toc", ".xdv") + ] + names.append(tex_path.with_name(f"{tex_path.stem}.synctex.gz")) + for path in names: + if path.is_file(): + path.unlink() + + +def _normalize_pdf_text(text: str) -> str: + return re.sub(r"\s+", "", text) + + +def inspect_pdf(pdf_path: Path, source_tex: Path | None = None) -> list[str]: + """Check filename, A4 pages, text layer, headings, and sensitive content. + + Some PDF parsers cannot decode CJK ToUnicode maps produced by every TeX + engine. In that case the compiled source verifies the required headings, + while the PDF parser still verifies that a non-empty text layer exists. + """ + errors: list[str] = [] + if pdf_path.name != "AI 工具使用详情.pdf": + errors.append("最终 PDF 文件名必须完全等于“AI 工具使用详情.pdf”") + if not pdf_path.is_file() or pdf_path.stat().st_size < 1024: + return errors + ["最终 PDF 不存在或文件过小"] + if pdf_path.read_bytes()[:5] != b"%PDF-": + errors.append("最终文件不是有效 PDF") + + pages: list[tuple[float, float, str]] = [] + try: + import fitz # type: ignore[import-unresolved] + + with fitz.open(pdf_path) as document: + pages = [ + (float(page.rect.width), float(page.rect.height), page.get_text("text")) + for page in document + ] + except ImportError: + try: + from pypdf import PdfReader # type: ignore[import-unresolved] + + reader = PdfReader(str(pdf_path)) + pages = [ + ( + float(page.mediabox.width), + float(page.mediabox.height), + page.extract_text() or "", + ) + for page in reader.pages + ] + except ImportError: + errors.append("缺少 PyMuPDF 或 pypdf,无法检查页面尺寸和文本层") + return errors + except Exception as exc: # noqa: BLE001 + errors.append(f"PDF 读取失败:{exc}") + return errors + except Exception as exc: # noqa: BLE001 + errors.append(f"PDF 读取失败:{exc}") + return errors + + if not pages: + return errors + ["最终 PDF 没有页面"] + for index, (width, height, _) in enumerate(pages, start=1): + if abs(width - 595.28) > 5 or abs(height - 841.89) > 5: + errors.append( + f"第 {index} 页不是 A4 纵向页面:{width:.1f} x {height:.1f} pt" + ) + + text = "\n".join(page_text for _, _, page_text in pages) + normalized_pdf = _normalize_pdf_text(text) + if not normalized_pdf: + errors.append("最终 PDF 没有可提取文本层") + heading_text = text + if source_tex is not None and source_tex.is_file(): + heading_text = source_tex.read_text(encoding="utf-8-sig") + normalized_headings = _normalize_pdf_text(heading_text) + for heading in REQUIRED_PDF_HEADINGS: + if heading not in normalized_headings: + errors.append(f"最终 PDF 缺少规定部分:{heading}") + for marker in PENDING_MARKERS: + if marker.casefold() in text.casefold(): + errors.append(f"最终 PDF 仍含待确认或占位内容:{marker}") + for label, pattern in SECRET_PATTERNS.items(): + if pattern.search(text): + errors.append(f"最终 PDF 检测到疑似{label}") + return list(dict.fromkeys(errors)) + + +def main() -> int: + parser = argparse.ArgumentParser( + description="根据已确认的 AI 使用日志生成国赛 AI 工具使用详情 PDF" + ) + parser.add_argument("log_path", type=Path, help="reports/AI_USAGE_LOG.md 路径") + parser.add_argument( + "--output-dir", + type=Path, + default=Path("supporting_materials"), + help="输出目录,默认 supporting_materials", + ) + parser.add_argument( + "--template", + type=Path, + default=Path(__file__).resolve().parents[1] + / "templates" + / "AI工具使用详情模板.tex", + ) + parser.add_argument( + "--compiler", + choices=("auto", "xelatex", "tectonic"), + default="auto", + ) + parser.add_argument( + "--no-compile", + action="store_true", + help="只生成 TeX,不编译;仅用于自动测试", + ) + args = parser.parse_args() + + tex_path = args.output_dir / "AI 工具使用详情.tex" + try: + render_tex(args.log_path, args.template, tex_path) + print(f"TEX GENERATED: {tex_path}") + if args.no_compile: + return 0 + pdf_path = compile_pdf(tex_path, args.compiler) + errors = inspect_pdf(pdf_path, tex_path) + if errors: + raise GenerationError("PDF 验收失败:\n- " + "\n- ".join(errors)) + cleanup_auxiliary_files(tex_path) + print(f"PDF GENERATED AND VERIFIED: {pdf_path}") + return 0 + except GenerationError as exc: + print(f"ERROR: {exc}") + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/skills/7ai-disclosure/scripts/test_ai_disclosure.py b/skills/7ai-disclosure/scripts/test_ai_disclosure.py new file mode 100644 index 00000000..4df57bfb --- /dev/null +++ b/skills/7ai-disclosure/scripts/test_ai_disclosure.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 +"""Regression tests for the 7ai-disclosure validator and renderer.""" + +from __future__ import annotations + +import tempfile +import unittest +from pathlib import Path +from unittest.mock import patch + +from generate_ai_usage_pdf import GenerationError, compile_pdf, parse_log, render_tex +from validate_ai_usage_log import validate + +FIXTURE_PATH = ( + Path(__file__).resolve().parents[1] / "tests" / "fixtures" / "valid_multi_tool.md" +) +VALID_MULTI_TOOL_LOG = FIXTURE_PATH.read_text(encoding="utf-8") + + +class DisclosureGenerationTests(unittest.TestCase): + """Verify stable mapping, safety gates, and LaTeX rendering.""" + + def setUp(self) -> None: + self.temp_dir = tempfile.TemporaryDirectory() + self.addCleanup(self.temp_dir.cleanup) + self.root = Path(self.temp_dir.name) + self.log_path = self.root / "AI_USAGE_LOG.md" + self.log_path.write_text(VALID_MULTI_TOOL_LOG, encoding="utf-8") + self.template = ( + Path(__file__).resolve().parents[1] / "templates" / "AI工具使用详情模板.tex" + ) + + def test_final_log_is_valid_and_ids_map_to_records(self) -> None: + self.assertEqual(validate(self.log_path, "finalize"), []) + data = parse_log(self.log_path) + self.assertEqual([tool.tool_id for tool in data.tools], ["TOOL-01", "TOOL-02"]) + self.assertEqual(data.records[0].tool_ids, ("TOOL-01",)) + self.assertEqual(data.examples[0].record_ids, ("AI-001",)) + + def test_rendered_tex_has_four_sections_and_no_template_markers(self) -> None: + tex_path = self.root / "supporting_materials" / "AI 工具使用详情.tex" + render_tex(self.log_path, self.template, tex_path) + text = tex_path.read_text(encoding="utf-8") + self.assertNotIn("%%__", text) + self.assertNotIn("待队员确认", text) + self.assertIn(r"Claude Code \& MathModelAgent", text) + self.assertIn(r"x\_1 \% 边界", text) + self.assertIn("AI-001", text) + self.assertIn("EX-001", text) + self.assertIn("一、所用 AI 工具名称、版本或型号", text) + self.assertIn("四、对 AI 输出的采纳、人工修改和核验的主要情况", text) + + def test_language_polishing_is_excluded_from_part_four(self) -> None: + tex_path = self.root / "AI 工具使用详情.tex" + render_tex(self.log_path, self.template, tex_path) + part_four = tex_path.read_text(encoding="utf-8").split( + "四、对 AI 输出的采纳、人工修改和核验的主要情况", 1 + )[1] + self.assertIn("AI-001", part_four) + self.assertNotIn("AI-002", part_four) + + def test_pending_confirmation_blocks_generation(self) -> None: + pending = VALID_MULTI_TOOL_LOG.replace( + "- 当前状态:已确认", "- 当前状态:待队员确认", 1 + ) + self.log_path.write_text(pending, encoding="utf-8") + with self.assertRaises(GenerationError): + render_tex(self.log_path, self.template, self.root / "out.tex") + + def test_non_contiguous_tool_ids_fail_validation(self) -> None: + invalid = VALID_MULTI_TOOL_LOG.replace("TOOL-02", "TOOL-03") + self.log_path.write_text(invalid, encoding="utf-8") + errors = validate(self.log_path, "record") + self.assertIn("工具编号必须从 1 开始连续递增", errors) + + def test_missing_compilers_fail_with_actionable_error(self) -> None: + tex_path = self.root / "AI 工具使用详情.tex" + tex_path.write_text("test", encoding="utf-8") + with ( + patch("generate_ai_usage_pdf.shutil.which", return_value=None), + self.assertRaisesRegex(GenerationError, "缺少 PDF 编译器"), + ): + compile_pdf(tex_path) + + +if __name__ == "__main__": + unittest.main() diff --git a/skills/7ai-disclosure/scripts/validate_ai_usage_log.py b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py index 46ebd97e..acf772a4 100644 --- a/skills/7ai-disclosure/scripts/validate_ai_usage_log.py +++ b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py @@ -9,13 +9,12 @@ import tempfile from pathlib import Path - PENDING_MARKERS = ("待队员确认", "请填写", "TODO", "PLACEHOLDER") SECRET_PATTERNS = { "OpenAI 风格密钥": re.compile(r"\bsk-[A-Za-z0-9_-]{12,}\b"), "GitHub 令牌": re.compile(r"\b(?:ghp|github_pat)_[A-Za-z0-9_]{12,}\b"), "Tavily 密钥": re.compile(r"\btvly-[A-Za-z0-9_-]{12,}\b"), - "Bearer 令牌": re.compile(r"\bBearer\s+[A-Za-z0-9._~+/-]{12,}", re.I), + "Bearer 令牌": re.compile(r"\bBearer\s+[A-Za-z0-9._~+/-]{12,}", re.IGNORECASE), "环境变量密钥": re.compile(r"\b[A-Z][A-Z0-9_]*(?:API_KEY|TOKEN|SECRET)\s*=\s*\S+"), } @@ -34,7 +33,9 @@ ) REQUIRED_HUMAN_REVIEW = ("人工修改内容", "人工核验方法与结果") REQUIRED_EXAMPLE = ("对应记录", "代表性提示摘要", "AI 输出摘要", "队员处理") -ID_PATTERN = re.compile(r"^###\s+((?:TOOL-\d{2})|(?:AI-\d{3})|(?:EX-\d{3}))\s*$", re.M) +ID_PATTERN = re.compile( + r"^###\s+((?:TOOL-\d{2})|(?:AI-\d{3})|(?:EX-\d{3}))\s*$", re.MULTILINE +) def parse_fields(text: str) -> dict[str, list[str]]: @@ -55,16 +56,25 @@ def id_sections(text: str) -> list[tuple[str, str]]: return result -def missing_fields(fields: dict[str, list[str]], required: tuple[str, ...]) -> list[str]: +def missing_fields( + fields: dict[str, list[str]], required: tuple[str, ...] +) -> list[str]: return [name for name in required if name not in fields or not any(fields[name])] def is_pending(value: str) -> bool: - return not value.strip() or any(marker.casefold() in value.casefold() for marker in PENDING_MARKERS) or bool( - re.search(r"【[^】]*】", value) + return ( + not value.strip() + or any(marker.casefold() in value.casefold() for marker in PENDING_MARKERS) + or bool(re.search(r"【[^】]*】", value)) ) +def expected_ids(prefix: str, count: int, width: int) -> list[str]: + """Build the required contiguous identifiers for one entry type.""" + return [f"{prefix}-{index:0{width}d}" for index in range(1, count + 1)] + + def validate(path: Path, mode: str) -> list[str]: if not path.is_file(): return [f"日志不存在:{path}"] @@ -73,7 +83,7 @@ def validate(path: Path, mode: str) -> list[str]: errors: list[str] = [] for heading in REQUIRED_HEADINGS: - if not re.search(rf"^##\s+{re.escape(heading)}\s*$", text, flags=re.M): + if not re.search(rf"^##\s+{re.escape(heading)}\s*$", text, flags=re.MULTILINE): errors.append(f"缺少二级标题:{heading}") for label, pattern in SECRET_PATTERNS.items(): @@ -81,9 +91,15 @@ def validate(path: Path, mode: str) -> list[str]: errors.append(f"检测到疑似{label},请删除或脱敏") sections = id_sections(text) - tools = [(item_id, block) for item_id, block in sections if item_id.startswith("TOOL-")] - records = [(item_id, block) for item_id, block in sections if item_id.startswith("AI-")] - examples = [(item_id, block) for item_id, block in sections if item_id.startswith("EX-")] + tools = [ + (item_id, block) for item_id, block in sections if item_id.startswith("TOOL-") + ] + records = [ + (item_id, block) for item_id, block in sections if item_id.startswith("AI-") + ] + examples = [ + (item_id, block) for item_id, block in sections if item_id.startswith("EX-") + ] tool_ids = [item_id for item_id, _ in tools] record_ids = [item_id for item_id, _ in records] example_ids = [item_id for item_id, _ in examples] @@ -92,9 +108,20 @@ def validate(path: Path, mode: str) -> list[str]: errors.append("至少需要一个 TOOL-xx 工具条目") if not records: errors.append("至少需要一个 AI-xxx 使用记录") - for label, ids in (("工具", tool_ids), ("使用记录", record_ids), ("典型交互", example_ids)): + for label, ids in ( + ("工具", tool_ids), + ("使用记录", record_ids), + ("典型交互", example_ids), + ): if len(ids) != len(set(ids)): errors.append(f"{label}编号重复") + for label, ids, prefix, width in ( + ("工具", tool_ids, "TOOL", 2), + ("使用记录", record_ids, "AI", 3), + ("典型交互", example_ids, "EX", 3), + ): + if ids and ids != expected_ids(prefix, len(ids), width): + errors.append(f"{label}编号必须从 1 开始连续递增") for tool_id, block in tools: fields = parse_fields(block) @@ -115,7 +142,9 @@ def validate(path: Path, mode: str) -> list[str]: language_only = " ".join(fields.get("是否仅用于语言润色", [])) if language_only and language_only not in {"是", "否", "待队员确认"}: - errors.append(f"{record_id} “是否仅用于语言润色”只能是“是”“否”或“待队员确认”") + errors.append( + f"{record_id} “是否仅用于语言润色”只能是“是”“否”或“待队员确认”" + ) if language_only != "是": for name in missing_fields(fields, REQUIRED_HUMAN_REVIEW): errors.append(f"{record_id} 非纯语言润色,缺少字段或值:{name}") @@ -176,16 +205,43 @@ def validate(path: Path, mode: str) -> list[str]: def self_test() -> int: - language_sample = VALID_SAMPLE.replace("- 是否仅用于语言润色:否", "- 是否仅用于语言润色:是") - language_sample = language_sample.replace("- 人工修改内容:删除不适用建议并补充测试\n", "") - language_sample = language_sample.replace("- 人工核验方法与结果:运行边界测试,全部通过\n", "") + language_sample = VALID_SAMPLE.replace( + "- 是否仅用于语言润色:否", "- 是否仅用于语言润色:是" + ) + language_sample = language_sample.replace( + "- 人工修改内容:删除不适用建议并补充测试\n", "" + ) + language_sample = language_sample.replace( + "- 人工核验方法与结果:运行边界测试,全部通过\n", "" + ) cases = [ ("valid", VALID_SAMPLE, "finalize", False), ("language_only", language_sample, "finalize", False), - ("pending", VALID_SAMPLE.replace("- 当前状态:已确认", "- 当前状态:待队员确认"), "finalize", True), - ("bad_ref", VALID_SAMPLE.replace("- 工具编号:TOOL-01", "- 工具编号:TOOL-99"), "record", True), - ("secret", VALID_SAMPLE + "\n- 备注:sk-abcdefghijklmnopqrstuvwxyz\n", "record", True), - ("missing_review", VALID_SAMPLE.replace("- 人工核验方法与结果:运行边界测试,全部通过\n", ""), "record", True), + ( + "pending", + VALID_SAMPLE.replace("- 当前状态:已确认", "- 当前状态:待队员确认"), + "finalize", + True, + ), + ( + "bad_ref", + VALID_SAMPLE.replace("- 工具编号:TOOL-01", "- 工具编号:TOOL-99"), + "record", + True, + ), + ( + "secret", + VALID_SAMPLE + "\n- 备注:sk-abcdefghijklmnopqrstuvwxyz\n", + "record", + True, + ), + ( + "missing_review", + VALID_SAMPLE.replace("- 人工核验方法与结果:运行边界测试,全部通过\n", ""), + "record", + True, + ), + ("non_contiguous", VALID_SAMPLE.replace("TOOL-01", "TOOL-02"), "record", True), ] with tempfile.TemporaryDirectory() as tmpdir: for name, content, mode, should_fail in cases: diff --git "a/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" index 647cd5d9..e71e805a 100644 --- "a/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" +++ "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" @@ -1,5 +1,5 @@ % !TeX program = xelatex -% 按真实记录增删工具和使用记录;第二至第四部分统一引用 TOOL-xx。 +% 由 generate_ai_usage_pdf.py 根据已确认日志填充;不要直接提交本源文件。 \documentclass[UTF8,a4paper,11pt]{ctexart} \usepackage[a4paper,top=2.0cm,bottom=2.0cm,left=2.15cm,right=2.15cm]{geometry} \usepackage{array,booktabs,longtable,fancyhdr,lastpage} @@ -11,8 +11,7 @@ \definecolor{tablehead}{HTML}{E4EDF3} \definecolor{rulegray}{HTML}{AAB8C2} \definecolor{bodytext}{HTML}{263746} -\definecolor{placeholder}{HTML}{667580} -\newcommand{\fillin}[1]{\textcolor{placeholder}{【#1】}} +\definecolor{mutedtext}{HTML}{667580} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} \newcommand{\sectiontitle}[1]{% \par\vspace{0.65em}\noindent @@ -35,7 +34,7 @@ \addtolength{\topmargin}{-7pt} \fancyhf{} \fancyhead[L]{\textcolor{accent}{\bfseries AI 工具使用详情}} -\fancyfoot[C]{\textcolor{placeholder}{第 \thepage\ 页,共 \pageref{LastPage} 页}} +\fancyfoot[C]{\textcolor{mutedtext}{第 \thepage\ 页,共 \pageref{LastPage} 页}} \renewcommand{\headrulewidth}{0pt} \renewcommand{\headrule}{\hbox to\headwidth{\color{accent}\leaders\hrule height 0.6pt\hfill}} \renewcommand{\footrulewidth}{0pt} @@ -59,7 +58,7 @@ \rowcolor{tablehead}\textcolor{accent}{\textbf{编号}} & \textcolor{accent}{\textbf{AI 工具名称}} & \textcolor{accent}{\textbf{版本或型号}} \\ \midrule \endhead -TOOL-01 & \fillin{工具名称} & \fillin{版本或型号} \\ +%%__TOOLS_ROWS__%% \bottomrule \end{longtable} @@ -73,31 +72,14 @@ \rowcolor{tablehead}\textcolor{accent}{\textbf{工具编号}} & \textcolor{accent}{\textbf{使用环节}} & \textcolor{accent}{\textbf{具体使用目的}} \\ \midrule \endhead -TOOL-01 & \fillin{使用环节} & \fillin{概括使用该工具解决的具体问题及范围} \\ +%%__PURPOSE_ROWS__%% \bottomrule \end{longtable} \sectiontitle{三、主要提示方式与使用过程说明} -\recordheading{1}{TOOL-01} -\textbf{主要提示方式:}\fillin{概括输入材料、角色要求、约束条件和输出格式}。 - -\textbf{使用过程:}\fillin{概括主要步骤、必要迭代和队员参与过程}。 - -\medskip -\noindent\textbf{典型交互示例(可选)} - -\textbf{代表性提示摘要:}\fillin{只写代表性提示摘要,不复制完整聊天}。 - -\textbf{AI 输出摘要:}\fillin{概括关键建议或结果}。 - -\textbf{队员处理:}\fillin{说明如何判断、筛选或继续验证}。 +%%__PROCESS_BLOCKS__%% \sectiontitle{四、对 AI 输出的采纳、人工修改和核验的主要情况} -\recordheading{1}{TOOL-01} -\textbf{采纳情况:}\fillin{说明完全采纳、部分采纳或未采纳的范围}。 - -\textbf{人工修改:}\fillin{说明队员所作实质修改;仅语言润色可写“不适用”}。 - -\textbf{人工核验:}\fillin{说明复算、测试、交叉验证或文献核查的方法与结果;仅语言润色可写“不适用”}。 +%%__ADOPTION_BLOCKS__%% \end{document} diff --git a/skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md b/skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md new file mode 100644 index 00000000..cd70f40b --- /dev/null +++ b/skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md @@ -0,0 +1,50 @@ +# AI 工具使用过程记录 + +## AI 工具目录 + +### TOOL-01 + +- 工具名称:Claude Code & MathModelAgent +- 版本或型号:Claude 示例型号 + +### TOOL-02 + +- 工具名称:ChatGPT +- 版本或型号:GPT 示例型号 + +## AI 使用记录 + +### AI-001 + +- 工具编号:TOOL-01 +- 使用环节:建模与代码实现 +- 具体使用目的:构造约束并检查 x_1 % 边界 +- 是否仅用于语言润色:否 +- 主要提示方式:提供题面、数据字段与目标函数,要求给出可复现步骤 +- 使用过程说明:先生成基线,再根据 code/result_1.py 的实测结果迭代 +- AI 输出采纳情况:部分采纳模型结构和检查清单 +- 人工修改内容:队员重写约束,并删除不符合题意的假设 +- 人工核验方法与结果:手工复算样例并运行边界测试,结果一致 +- 对应证据文件或产物:code/result_1.py +- 当前状态:已确认 + +### AI-002 + +- 工具编号:TOOL-02 +- 使用环节:摘要语言润色 +- 具体使用目的:压缩摘要并统一术语 +- 是否仅用于语言润色:是 +- 主要提示方式:提供原摘要并限制字数 +- 使用过程说明:比较修改前后文本,保留原有结论和数字 +- AI 输出采纳情况:部分采纳措辞 +- 对应证据文件或产物:paper/abstract.tex +- 当前状态:已确认 + +## 典型交互示例(可选) + +### EX-001 + +- 对应记录:AI-001 +- 代表性提示摘要:检查约束、单位与极端输入 +- AI 输出摘要:给出三类边界风险和测试建议 +- 队员处理:复算后采纳两项测试,拒绝一项不适用建议 diff --git a/skills/doctor/SKILL.md b/skills/doctor/SKILL.md index e8958e18..49ac8b77 100644 --- a/skills/doctor/SKILL.md +++ b/skills/doctor/SKILL.md @@ -16,6 +16,7 @@ allowed-tools: Bash(*), Read, Write | --- | --- | --- | | `typst` | 论文编译(5writing、6verity,Typst 引擎) | `command -v typst` | | `xelatex` | 论文编译(5writing、6verity,LaTeX 引擎,中文模板必需) | `command -v xelatex` | +| `tectonic` | AI 使用详情 PDF 的备用 LaTeX 编译器 | `command -v tectonic` | | `python3` | 数值计算与图表(3coding-visual) | `command -v python3` | | `drawio` / `draw.io` | DrawIO 流程图导出 PDF(4drawio) | `command -v drawio \|\| command -v draw.io` | | `pdftoppm` | PDF 转 PNG 视觉检查(6verity) | `command -v pdftoppm` | @@ -32,6 +33,7 @@ allowed-tools: Bash(*), Read, Write | `matplotlib` | 图表生成 | | `scikit-learn` | 机器学习建模 | | `openpyxl` | 读写 Excel 数据附件 | +| `PyMuPDF`(导入名 `fitz`) | 检查 AI 使用详情 PDF 的页数、A4 尺寸和文本层 | ## 工作流程 @@ -74,6 +76,7 @@ check_cmd() { check_cmd typst check_cmd xelatex +check_cmd tectonic check_cmd python3 || check_cmd python # Windows 上可能是 python command -v drawio >/dev/null 2>&1 || command -v draw.io >/dev/null 2>&1 \ && echo "OK drawio" || echo "MISS drawio" @@ -81,21 +84,27 @@ check_cmd pdftoppm check_cmd mutool check_cmd magick -python3 - <<'PYEOF' +PYTHON_BIN="$(command -v python3 || command -v python)" +if [ -n "$PYTHON_BIN" ]; then +"$PYTHON_BIN" - <<'PYEOF' import importlib -pkgs = ["numpy", "scipy", "pandas", "matplotlib", "sklearn", "openpyxl"] +pkgs = ["numpy", "scipy", "pandas", "matplotlib", "sklearn", "openpyxl", "fitz"] for p in pkgs: try: importlib.import_module(p) import importlib.metadata as meta try: - ver = meta.version(p if p != "sklearn" else "scikit-learn") + dist = {"sklearn": "scikit-learn", "fitz": "PyMuPDF"}.get(p, p) + ver = meta.version(dist) except Exception: ver = "?" print(f"OK {p} ({ver})") except ImportError: print(f"MISS {p}") PYEOF +else + echo "MISS python3/python" +fi ``` ### Step 3:输出检查报告 @@ -112,7 +121,9 @@ PYEOF ... ``` -**必须项:** typst 或 xelatex(至少一个论文编译器)、python3、numpy、pandas、matplotlib +**通用必须项:** typst 或 xelatex(至少一个论文编译器)、python3、numpy、pandas、matplotlib + +**国赛 AI 支撑材料附加必须项:** `7ai-disclosure/SKILL.md` 与其模板、脚本完整,xelatex 或 tectonic 至少一个,PyMuPDF 可导入。 **可选项:** drawio、pdftoppm/mutool/magick 三选一、scipy、scikit-learn、openpyxl ### Step 4:提供安装命令(按平台) @@ -220,6 +231,7 @@ Doctor 检查完成(macOS) 4drawio ⚠ drawio 未安装,PDF 导出将跳过 5writing ✓(typst ✓,xelatex ✓) 6verity ⚠ 无 PDF 转 PNG 工具,视觉检查将跳过 + 7ai-disclosure ✓(python ✓,xelatex ✓,PyMuPDF ✓) ``` ## 注意事项 @@ -228,4 +240,5 @@ Doctor 检查完成(macOS) - Windows 下建议在 PowerShell(管理员)或 Git Bash 中运行,部分命令需要管理员权限。 - Linux 的 `sudo` 命令会请求密码,执行前告知用户。 - drawio 和 PDF 转 PNG 工具缺失不影响核心工作流,仅影响导出质量。 +- 国赛任务缺少 `7ai-disclosure`、xelatex/tectonic 或 PyMuPDF 时,不得报告最终提交包已完成。 - 如平台检测为 unknown,打印所有平台命令供用户手动选择。 diff --git a/skills/skills.sh.json b/skills/skills.sh.json index 58d26a52..b3e7e2ef 100644 --- a/skills/skills.sh.json +++ b/skills/skills.sh.json @@ -10,7 +10,8 @@ "3coding-visual", "4drawio", "5writing", - "6verity" + "6verity", + "7ai-disclosure" ] }, { From 28245b479d9246938d111c63df6b33d7756a53d0 Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 19:54:20 +0800 Subject: [PATCH 09/10] docs: design automatic AI disclosure workflow --- ...26-08-24-automatic-ai-disclosure-design.md | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md diff --git a/docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md b/docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md new file mode 100644 index 00000000..f76bfc8d --- /dev/null +++ b/docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md @@ -0,0 +1,96 @@ +# 国赛 AI 使用详情全自动生成设计 + +## 目标 + +在桌面 Agent 识别到全国大学生数学建模竞赛任务后,全程自动维护 AI 使用记录,并在论文完成时同时生成: + +- `paper/main.pdf` +- `supporting_materials/AI 工具使用详情.pdf` + +流程不再向队员集中询问工具版本、采纳、修改或核验情况。详情 PDF 保持现有四部分结构和简洁版式。 + +## 方案选择 + +本次考虑三种方案: + +1. 自动补写符合常见参赛情形的人工经历。该方案会产生无法核实的竞赛申报内容,不采用。 +2. 保留提交前人工确认。真实性最强,但不满足无人值守生成要求,不采用。 +3. 根据任务证据自动归纳,并对核心建模内容脱敏。该方案兼顾自动化与可核查性,采用。 + +## 真实性边界 + +自动填写只能使用本次任务中可观察的证据,包括会话、运行时模型元数据、文件产物、代码执行结果、测试记录和验收报告。 + +- 不编造队员亲自重写、复算、查阅文献或讨论等人工经历。 +- 不把 Agent 的自动修改、程序测试或审稿过程表述为人工行为。 +- 无法确认的模型版本写为“运行环境未提供具体版本”,不得猜测。 +- 没有可核实人工修改时,最终 PDF 直接省略人工修改句,不输出“未记录到额外人工修改”或同义提示。 +- 采纳情况根据内容是否进入最终产物以及后续是否被替换、删除或修正来归纳。 +- 核验情况仅写实际执行成功并留有结果的检查,不把计划中的检查写成已经完成。 + +## 核心建模信息保护 + +AI 使用详情只说明工具使用方式,不复述参赛作品的核心建模过程。自动归纳时禁止写入: + +- 赛题原始数据、附件内容和具体题目条件; +- 模型结构、公式、算法流程、关键假设和参数值; +- 具体计算结果、敏感性结论、优劣比较和最终答案; +- 可据此复原参赛方案的连续提示词或长交互记录。 + +允许使用阶段级概括,例如“辅助思路梳理”“辅助代码实现与调试”“辅助结果一致性检查”“辅助论文结构和表达优化”。典型交互示例只保留经过脱敏的提示摘要和处理结果。 + +## 数据流 + +1. `1start-mathmodel` 识别国赛任务后加载 `7ai-disclosure`,创建 `reports/AI_USAGE_LOG.md`。 +2. 每个阶段结束时,从本阶段实际输入、输出和执行记录追加或更新工具及使用记录。 +3. `6verity` 完成论文检查并得到 `PAPER_PASS`。 +4. `7ai-disclosure finalize` 自动清理和归纳日志,不触发 `AskUserQuestion`。 +5. 生成器将日志映射到四部分 LaTeX 模板,编译并检查 `AI 工具使用详情.pdf`。 +6. 仅当论文 PDF 与详情 PDF 均通过检查时,最终状态为 `PASS`。 + +## 第四部分生成规则 + +第四部分按非纯语言润色记录生成,最多保留与评审理解直接相关的简要说明: + +- “采纳情况”写选择性采用、经修正采用或未采用,依据最终文件和过程记录判断。 +- “修改情况”只写实际可见的迭代修正,并明确属于自动流程时使用“经运行检查后修正”等中性表达。 +- “核验情况”写实际完成的复现运行、边界测试、异常检查、正文与结果一致性检查等。 +- 没有可核实人工修改时省略对应句,不生成否定性占位说明。 + +示例措辞: + +> 相关输出经程序复现和一致性检查后选择性采用;发现的不一致内容已重新计算或删除,并再次通过结果文件与论文表述核对。 + +只有在日志确有对应执行证据时才能生成上述表述。 + +## 校验与失败处理 + +最终校验必须拒绝: + +- `待队员确认`、模板占位符或空的必填工具信息; +- 未在任务中实际执行却写成已完成的测试或核验; +- 将自动操作写成队员人工操作的措辞; +- 题目条件、公式、参数、结果等核心建模信息; +- 密钥、令牌、完整聊天记录或模型私有思维链; +- 文件名不准确、PDF 为空、非 A4、缺少文本层或缺少四个规定部分。 + +当版本元数据不可得时使用明确的不可得说明,并继续生成;当核心字段无法从证据归纳时采用更抽象但真实的阶段描述,不虚构细节。 + +## 文件修改范围 + +- `skills/1start-mathmodel/SKILL.md`:删除最终人工询问,改为自动归纳并触发生成。 +- `skills/7ai-disclosure/SKILL.md`:定义证据驱动、核心信息脱敏和无人值守终检。 +- `skills/7ai-disclosure/templates/AI_USAGE_LOG.md`:将待确认式模板改为可自动填充结构。 +- `skills/7ai-disclosure/scripts/validate_ai_usage_log.py`:支持自动归纳状态和省略无证据人工修改,同时增加禁写内容检查。 +- `skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py`:省略无证据人工修改句,并保证只生成脱敏概要。 +- `skills/7ai-disclosure/scripts/test_ai_disclosure.py` 与测试夹具:覆盖无人询问、版本不可得、无人工记录、核心信息过滤和双 PDF 门禁。 +- `skills/6verity/SKILL.md`、`README.md`、`README_EN.md`:同步最终行为说明。 + +## 验收标准 + +1. 国赛任务工作流中不存在 AI 使用详情相关的 `AskUserQuestion` 门禁。 +2. 无需用户补充即可生成两个名称正确的 PDF。 +3. 详情 PDF 恰好保留规定的四部分,且第一部分含工具编号、第二部分为表格、第三部分非表格。 +4. 最终 PDF 不包含“未记录到额外人工修改”或同义提示。 +5. 最终 PDF 不声称未经证据支持的人工操作,不泄露核心建模过程。 +6. 实际生成样例通过日志校验、单元测试、PDF 文本检查和逐页视觉检查。 From 5b457b9aa26dc646d23019aa0feac2f4d1e2194c Mon Sep 17 00:00:00 2001 From: chenzifeng743-max Date: Mon, 24 Aug 2026 20:07:15 +0800 Subject: [PATCH 10/10] feat: automate CUMCM AI disclosure generation --- README.md | 4 +- README_EN.md | 2 +- ...26-08-24-automatic-ai-disclosure-design.md | 2 + skills/1start-mathmodel/SKILL.md | 8 +- skills/6verity/SKILL.md | 8 +- skills/7ai-disclosure/SKILL.md | 39 +++-- .../scripts/generate_ai_usage_pdf.py | 61 ++++--- .../scripts/test_ai_disclosure.py | 66 +++++++- .../scripts/validate_ai_usage_log.py | 153 +++++++++++++++--- .../7ai-disclosure/templates/AI_USAGE_LOG.md | 28 ++-- ...6\346\203\205\346\250\241\346\235\277.tex" | 2 +- .../tests/fixtures/valid_multi_tool.md | 34 ++-- 12 files changed, 291 insertions(+), 116 deletions(-) diff --git a/README.md b/README.md index bd9a2e64..c4adcc89 100644 --- a/README.md +++ b/README.md @@ -96,13 +96,13 @@ MathModelAgent SKILL —— 直接在 Harness 中驱动的数学建模自动化 完全开源免费,可接入任何模型。 **🧠 端到端自动化** -从问题分析、建模、编码、绘图到论文排版和验收,一条 `/1start-mathmodel` 命令自动串联;国赛任务仅在最终生成 AI 使用详情前集中进行一次人工确认。 +从问题分析、建模、编码、绘图到论文排版和验收,一条 `/1start-mathmodel` 命令自动串联;国赛任务还会根据全过程证据自动生成 AI 使用详情。 **📄 17 套 Typst 论文模板** 内置中英文主流赛事模板(国赛、华数杯、华为杯、MCM/ICM 等),自动匹配赛事类型,生成排版精良、可直接提交的 PDF 论文。 **🧾 国赛 AI 使用详情** -国赛任务从开始阶段持续记录真实 AI 使用情况;完整论文验收后集中确认一次人工修改与核验信息,同时生成 `paper/main.pdf` 和名称准确的 `supporting_materials/AI 工具使用详情.pdf`,缺少任一文件都不会报告最终完成。 +国赛任务从开始阶段持续记录真实 AI 使用情况;完整论文验收后自动归纳采纳、迭代修正与实际核验,并隐藏核心建模细节,同时生成 `paper/main.pdf` 和名称准确的 `supporting_materials/AI 工具使用详情.pdf`,缺少任一文件都不会报告最终完成。 **📐 内置建模知识库** 包含完整的建模规范、模型选择决策树(AHP、TOPSIS、ARIMA、GA 等)、常见易错模式和 MCM/ICM 评分标准,每个阶段自动参考,降低模型幻觉。 diff --git a/README_EN.md b/README_EN.md index 142eef7a..213d150f 100644 --- a/README_EN.md +++ b/README_EN.md @@ -26,7 +26,7 @@ The desktop app bundles Claude Code and the full set of MathModelAgent SKILLS. No Python / Node.js / Redis installation and no manual SKILL setup — install it, add one model API key, and start modeling. -For CUMCM tasks, the workflow records actual AI use throughout the run, asks the team for one consolidated confirmation after the paper review, and requires both `paper/main.pdf` and `supporting_materials/AI 工具使用详情.pdf` before reporting final completion. +For CUMCM tasks, the workflow records actual AI use throughout the run, automatically summarizes evidence-backed adoption, revisions, and checks without exposing core modeling details, and requires both `paper/main.pdf` and `supporting_materials/AI 工具使用详情.pdf` before reporting final completion. | OS | File | |----|------| diff --git a/docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md b/docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md index f76bfc8d..a828a8ba 100644 --- a/docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md +++ b/docs/superpowers/specs/2026-08-24-automatic-ai-disclosure-design.md @@ -1,5 +1,7 @@ # 国赛 AI 使用详情全自动生成设计 +本设计取代 `2026-08-24-desktop-ai-disclosure-integration-design.md` 中有关提交前人工确认的要求;其他已确认的四部分结构、双 PDF 门禁和版式要求继续有效。 + ## 目标 在桌面 Agent 识别到全国大学生数学建模竞赛任务后,全程自动维护 AI 使用记录,并在论文完成时同时生成: diff --git a/skills/1start-mathmodel/SKILL.md b/skills/1start-mathmodel/SKILL.md index 25ebdf24..eb60f72c 100644 --- a/skills/1start-mathmodel/SKILL.md +++ b/skills/1start-mathmodel/SKILL.md @@ -25,7 +25,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, W - `plan.md`:整体流程方案、建模方向、阶段顺序、预期产物和风险控制。 - `todo.md`:具体待办事项列表,记录每个阶段的任务和状态。 -- 国赛任务的 `reports/AI_USAGE_LOG.md`:赛中持续维护的 AI 工具使用过程记录;未知内容明确标记为“待队员确认”。 +- 国赛任务的 `reports/AI_USAGE_LOG.md`:赛中持续维护并在终检时自动归纳的 AI 工具使用过程记录。 ## 工作流 @@ -136,11 +136,11 @@ workflow: 以下规则只对国赛任务强制执行: -1. 启动时加载 `7ai-disclosure`,从其模板初始化 `reports/AI_USAGE_LOG.md`。优先根据本次任务的真实模型配置创建工具条目;无法确认的版本留到最终一次性确认。 +1. 启动时加载 `7ai-disclosure`,从其模板初始化 `reports/AI_USAGE_LOG.md`。优先根据本次任务的真实模型配置创建工具条目;无法获得版本元数据时写“运行环境未提供具体版本”。 2. `2analysis-modeling`、`3coding-visual`、`4drawio`、`5writing` 和 `6verity` 每个阶段结束后,立即调用 `7ai-disclosure record`,根据真实对话、模型配置和产物追加记录;不得等到赛后凭记忆补造。 3. `6verity` 首先完成论文验收并得到 `PAPER_PASS`。此状态只表示论文通过,不能表示整个国赛提交包已经完成。 -4. 随后调用 `7ai-disclosure finalize`。它必须把工具版本、采纳情况、非语言润色类人工修改和人工核验等全部未知项合并为一条消息,只向队员集中确认一次。 -5. 队员回复后更新日志并运行确定性生成脚本。若回复仍缺少必填信息,应指出缺失项并停止,不得生成带占位符的提交版 PDF。 +4. 随后调用 `7ai-disclosure finalize`。它根据本次会话、文件、运行结果和验收记录自动归纳并脱敏,不为填写详情另行询问队员。 +5. 自动归纳只能陈述有证据的采纳、迭代修正和核验;没有人工修改证据时省略该句,不得补造人工经历。通过最终校验后运行确定性生成脚本。 6. 只有 `paper/main.pdf` 与名称完全一致的 `supporting_materials/AI 工具使用详情.pdf` 都存在并通过检查,才把 `todo.md` 的最后一步标记完成,并在 `reports/VERIFY_REPORT.md` 写最终 `PASS`。 若不是桌面 Agent 参与生成、且队伍能够确认全程未使用任何 AI,才允许不生成空白详情 PDF,并在验收报告中写明确认依据。 diff --git a/skills/6verity/SKILL.md b/skills/6verity/SKILL.md index e3201e85..69df89c6 100644 --- a/skills/6verity/SKILL.md +++ b/skills/6verity/SKILL.md @@ -16,7 +16,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc - 本阶段负责:结构验收、文本质量门禁、图表引用检查、结果一致性检查、Typst/LaTeX 编译检查、PDF 视觉检查、提交清单。 - 本阶段不负责:重新设计模型、重新跑大规模实验、重新组织整篇论文。 -- 本阶段只核对 AI 使用日志和支撑材料状态,不补写、猜测或代替队员确认 AI 使用记录。 +- 本阶段只核对 AI 使用日志和支撑材料状态,不补写或猜测 AI 使用记录;自动归纳由 `7ai-disclosure` 根据实际产物和检查证据完成。 - 发现硬错误时,优先做小范围修复;如果需要回到前序阶段,写入 `reports/VERIFY_REPORT.md` 并标记为未通过。 ## 输入 @@ -192,7 +192,7 @@ fi - 先读取 `plan.md` 的竞赛类型。`CHINA`、国赛、CUMCM 或全国大学生数学建模竞赛均按国赛处理。 - 国赛任务必须能够加载 `7ai-disclosure`,并存在 `reports/AI_USAGE_LOG.md`。桌面 Agent 参与论文生成时,不得写“全程未使用 AI”。 - 首次验收论文时,用 `record` 模式检查日志。论文自身全部通过可以记录为 `PAPER_PASS`,但此状态不是最终提交 `PASS`。 -- `7ai-disclosure` 完成一次性人工确认和 PDF 生成后,再用 `finalize` 模式检查日志,并检查 `supporting_materials/AI 工具使用详情.pdf` 文件名完全一致。 +- `7ai-disclosure` 完成证据驱动的自动归纳、脱敏和 PDF 生成后,再用 `finalize` 模式检查日志,并检查 `supporting_materials/AI 工具使用详情.pdf` 文件名完全一致。 - 检查该 PDF 非空、可提取文本、页面为 A4、包含规定四部分且无占位符或疑似密钥,并逐页查看是否越界、重叠、裁切或乱码。 - 国赛任务只有 `paper/main.pdf` 与 `supporting_materials/AI 工具使用详情.pdf` 均通过检查,整体状态才能写 `PASS`。 - 非国赛任务只有在用户明确要求时才检查该国赛支撑材料。 @@ -228,7 +228,7 @@ PAPER_PASS / PASS / FAIL ## 仍需处理的问题 ``` -论文自身通过、但国赛 AI 支撑材料仍等待一次性人工确认或尚未生成时,只能写 `PAPER_PASS`。只有全部硬错误都修复,且国赛要求的两个 PDF 均通过最终检查时,才写 `PASS`。 +论文自身通过、但国赛 AI 支撑材料尚未完成自动归纳或尚未生成时,只能写 `PAPER_PASS`。只有全部硬错误都修复,且国赛要求的两个 PDF 均通过最终检查时,才写 `PASS`。 ## 硬错误标准 @@ -247,7 +247,7 @@ PAPER_PASS / PASS / FAIL - 编译后的 PDF 为空、缺页、页数异常或页面尺寸异常且无法解释。 - 视觉检查发现正文、表格、图片、公式、页眉页脚、页码等关键元素重叠、裁切、越界或乱码。 - 日志表明使用过 AI,但最终提交缺少名称完全一致的 `AI 工具使用详情.pdf`。 -- AI 使用日志仍有“待队员确认”、未完成逐项人工审查或存在疑似密钥,却将整体提交状态标记为 `PASS`。 +- AI 使用日志仍有待确认或未归纳内容、未经证据支持的人工表述、核心建模细节或疑似密钥,却将整体提交状态标记为 `PASS`。 ## 警告标准 diff --git a/skills/7ai-disclosure/SKILL.md b/skills/7ai-disclosure/SKILL.md index f00e38ab..b7df31fa 100644 --- a/skills/7ai-disclosure/SKILL.md +++ b/skills/7ai-disclosure/SKILL.md @@ -1,12 +1,12 @@ --- name: 7ai-disclosure -description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。国赛论文工作流启动时自动启用,持续记录真实工具、用途、提示过程、采纳修改和人工核验,并在一次性人工确认后生成四部分简版“AI 工具使用详情.pdf”。" -allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, AskUserQuestion +description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。国赛论文工作流启动时自动启用,根据任务证据持续记录并自动归纳工具、用途、提示过程、采纳、修正和核验,在隐藏核心建模细节后生成四部分简版“AI 工具使用详情.pdf”。" +allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob --- # AI 工具使用记录与详情生成 -本 skill 有 `record` 和 `finalize` 两种模式。国赛任务由 `1start-mathmodel` 强制调用;其他赛事只在用户明确要求时使用。它只整理真实发生的 AI 使用,不补造记录,也不自动宣称合规。 +本 skill 有 `record` 和 `finalize` 两种模式。国赛任务由 `1start-mathmodel` 强制调用;其他赛事只在用户明确要求时使用。它只整理本次任务中可观察的 AI 使用,不补造记录,也不自动宣称合规。整个披露流程无人值守,不为填写详情另行询问用户。 桌面 Agent 正在参与国赛论文生成时,视为实际使用了 AI,不得生成“全程未使用 AI”的空记录。 @@ -21,16 +21,20 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, AskUserQuestion 第一部分使用“编号、AI 工具名称、版本或型号”三列表格;第二部分使用“工具编号、使用环节、具体使用目的”三列表格。工具编号采用 `TOOL-01`、`TOOL-02` 等,第二至第四部分必须引用对应编号。禁止写入密钥、密码、完整聊天记录、模型私有思维链或无关个人信息。 +详情 PDF 只写阶段级概括。即使日志或论文中存在,也不得写入赛题条件、原始数据、模型或算法名称、公式、关键假设、参数、数值结果、结论以及足以复原解题方案的连续提示。使用“辅助方案梳理”“辅助代码实现与调试”“辅助结果一致性检查”“辅助论文结构与表达优化”等概括表达。 + ## record:持续记录 1. 若 `reports/AI_USAGE_LOG.md` 不存在,从 `templates/AI_USAGE_LOG.md` 复制创建。 -2. 查看当前阶段的真实对话、运行配置和产物。工具名称与模型优先读取本次任务的真实配置或响应元数据;不可获得时写“待队员确认”,不得根据供应商或界面猜测版本。 +2. 查看当前阶段的真实对话、运行配置、文件差异、运行结果和产物。工具名称与模型优先读取本次任务的真实配置或响应元数据;不可获得时写“运行环境未提供具体版本”,不得根据供应商或界面猜测版本。 3. 复用已有 `TOOL-xx`;新工具使用下一个连续编号,编号必须从 `TOOL-01` 开始连续递增。 -4. 追加一个连续编号的 `AI-xxx` 记录,写明工具编号、使用环节、具体目的、提示方式、使用过程、采纳情况、人工修改、人工核验和证据文件。 -5. 仅用于语言润色时,将“是否仅用于语言润色”写为“是”,人工修改和核验字段可以删除或写“不适用(仅语言润色)”。 -6. 典型交互为可选项;如记录,只保留代表性提示、输出和队员处理摘要,不复制全部对话。 -7. 无法确认的内容写 `待队员确认`,不得推断队员已经审核。 -8. 每个国赛阶段结束后立即运行记录校验: +4. 追加一个连续编号的 `AI-xxx` 记录,写明工具编号、使用环节、具体目的、提示方式、使用过程、采纳情况、迭代修正、核验方法、证据文件和记录状态。 +5. 采纳情况根据内容是否进入最终文件以及后续是否被替换、删除或修正归纳。迭代修正只写文件差异或重新运行能够支持的事实;核验只写实际执行成功并有结果记录的检查。 +6. 只有会话中存在队员明确修改指令时,才可增加“人工修改内容”和“人工修改依据”。没有此类证据时直接省略这两个字段,不写任何“未记录人工修改”的提示。 +7. 仅用于语言润色时,将“是否仅用于语言润色”写为“是”,迭代修正和核验字段可以省略。 +8. 典型交互为可选项;如记录,只保留脱敏的提示、输出和处理结果摘要,不复制全部对话。 +9. 阶段处理中使用“记录中”;阶段证据归纳完成后使用“已归纳”。不得推断队员完成了未留下证据的人工操作。 +10. 每个国赛阶段结束后立即运行记录校验: ```bash PYTHON_BIN="$(command -v python3 || command -v python)" @@ -39,18 +43,19 @@ PYTHON_BIN="$(command -v python3 || command -v python)" ## finalize:生成支撑材料 -1. 先检查日志,将所有 `待队员确认` 和只能由队员确认的内容合并为一条消息。只询问一次,集中确认工具版本、AI 输出采纳情况、非语言润色类人工修改和人工核验方法与结果。 -2. 根据队员的一次回复更新相应字段和 `当前状态`。若回复仍缺少必填信息,列出缺项并停止;不得连续拆成多轮零散问题,也不得自行补造。 -3. 运行最终校验: +1. 自动读取运行时元数据、各阶段报告、最终文件、代码执行结果和 `reports/VERIFY_REPORT.md`,逐条归纳工具版本、采纳、迭代修正和核验情况,不向用户发起确认或补充提问。 +2. 将所有公开描述改写为阶段级概括,删除核心建模细节。没有版本元数据时使用“运行环境未提供具体版本”;没有人工修改证据时删除人工修改字段,不输出否定性说明。 +3. 若缺少核验证据,先执行安全、可复现的轻量检查并保存结果,再填写实际结果;不得把计划中的检查写成已经完成。完成后把记录状态更新为“已归纳”。 +4. 运行最终校验: ```bash PYTHON_BIN="$(command -v python3 || command -v python)" "$PYTHON_BIN" "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode finalize ``` -存在待确认、缺项、无效工具引用、未确认记录或疑似密钥时停止生成。 +存在待确认、缺项、无效工具引用、未归纳记录、疑似密钥、未经证据支持的人工表述或核心建模细节时停止生成。 -4. 最终校验通过后,必须调用确定性生成脚本,不再让模型自由复制或手填模板: +5. 最终校验通过后,必须调用确定性生成脚本,不再让模型自由复制或手填模板: ```bash "$PYTHON_BIN" "<本 skill 目录>/scripts/generate_ai_usage_pdf.py" \ @@ -60,8 +65,8 @@ PYTHON_BIN="$(command -v python3 || command -v python)" 生成脚本负责日志到四部分模板的映射、LaTeX 转义、XeLaTeX 两遍编译、Tectonic 回退,以及文件名、非空、A4、文本层、规定部分、占位符和疑似密钥检查。典型交互使用正文段落,不使用表格;证据文件和内部状态只用于校验,不写入最终 PDF。 -5. 必须得到名称完全一致的 `supporting_materials/AI 工具使用详情.pdf`,再逐页检查是否存在越界、重叠、裁切或乱码。 -6. 在 `reports/VERIFY_REPORT.md` 记录一次性确认、日志校验、编译、程序化 PDF 检查和逐页视觉检查结果。 -7. 只有 `paper/main.pdf` 与 `supporting_materials/AI 工具使用详情.pdf` 均通过检查,国赛提交包才能标记最终 `PASS`。 +6. 必须得到名称完全一致的 `supporting_materials/AI 工具使用详情.pdf`,再逐页检查是否存在越界、重叠、裁切或乱码。 +7. 在 `reports/VERIFY_REPORT.md` 记录自动归纳、日志校验、编译、程序化 PDF 检查和逐页视觉检查结果。 +8. 只有 `paper/main.pdf` 与 `supporting_materials/AI 工具使用详情.pdf` 均通过检查,国赛提交包才能标记最终 `PASS`。 仅当本任务并非由桌面 Agent 生成、且队伍确认全程未使用任何 AI 时,不生成空白详情 PDF,并在验收报告中记录确认依据。 diff --git a/skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py b/skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py index cf4d7429..df98a3e1 100644 --- a/skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py +++ b/skills/7ai-disclosure/scripts/generate_ai_usage_pdf.py @@ -12,6 +12,7 @@ from pathlib import Path from validate_ai_usage_log import ( + NO_HUMAN_RECORD_PHRASES, PENDING_MARKERS, SECRET_PATTERNS, id_sections, @@ -58,8 +59,9 @@ class UsageRecord: prompt_method: str process: str adoption: str + iteration: str + verification: str human_edit: str - human_check: str @dataclass(frozen=True) @@ -70,7 +72,7 @@ class InteractionExample: record_ids: tuple[str, ...] prompt_summary: str output_summary: str - team_action: str + process_result: str @dataclass(frozen=True) @@ -126,12 +128,9 @@ def parse_log(path: Path) -> DisclosureLog: prompt_method=_field(fields, "主要提示方式"), process=_field(fields, "使用过程说明"), adoption=_field(fields, "AI 输出采纳情况"), - human_edit=_field(fields, "人工修改内容", "不适用(仅语言润色)"), - human_check=_field( - fields, - "人工核验方法与结果", - "不适用(仅语言润色)", - ), + iteration=_field(fields, "迭代修正情况"), + verification=_field(fields, "核验方法与结果"), + human_edit=_field(fields, "人工修改内容"), ) ) elif item_id.startswith("EX-"): @@ -144,7 +143,7 @@ def parse_log(path: Path) -> DisclosureLog: record_ids=record_ids, prompt_summary=_field(fields, "代表性提示摘要"), output_summary=_field(fields, "AI 输出摘要"), - team_action=_field(fields, "队员处理"), + process_result=_field(fields, "处理结果"), ) ) @@ -155,7 +154,7 @@ def latex_escape(value: str) -> str: """Escape untrusted log text for LaTeX text mode. Args: - value: Plain text from the confirmed usage log. + value: Plain text from the automatically summarized usage log. Returns: A single-line LaTeX-safe string. @@ -217,7 +216,7 @@ def _process_blocks(data: DisclosureLog) -> str: "", rf"\textbf{{AI 输出摘要:}}{latex_escape(example.output_summary)}。", "", - rf"\textbf{{队员处理:}}{latex_escape(example.team_action)}。", + rf"\textbf{{处理结果:}}{latex_escape(example.process_result)}。", ] ) blocks.append("\n".join(lines)) @@ -230,20 +229,25 @@ def _adoption_blocks(data: DisclosureLog) -> str: if record.language_only: continue tool_ids = "、".join(record.tool_ids) - blocks.append( - "\n".join( - [ - rf"\recordheading{{{record.record_id}}}{{{latex_escape(tool_ids)}}}", - rf"\textbf{{采纳情况:}}{latex_escape(record.adoption)}。", - "", - rf"\textbf{{人工修改:}}{latex_escape(record.human_edit)}。", - "", - rf"\textbf{{人工核验:}}{latex_escape(record.human_check)}。", - ] + lines = [ + rf"\recordheading{{{record.record_id}}}{{{latex_escape(tool_ids)}}}", + rf"\textbf{{采纳情况:}}{latex_escape(record.adoption)}。", + ] + if record.human_edit: + lines.extend( + ["", rf"\textbf{{人工修改:}}{latex_escape(record.human_edit)}。"] ) - ) + if record.iteration: + lines.extend( + ["", rf"\textbf{{迭代修正:}}{latex_escape(record.iteration)}。"] + ) + if record.verification: + lines.extend( + ["", rf"\textbf{{核验情况:}}{latex_escape(record.verification)}。"] + ) + blocks.append("\n".join(lines)) if not blocks: - return "除语言润色外,无其他需说明的 AI 输出采纳、人工修改和核验记录。" + return "本次记录仅涉及语言表达辅助,第四部分不作展开。" return "\n\n".join(blocks) @@ -288,6 +292,9 @@ def render_tex(log_path: Path, template_path: Path, tex_path: Path) -> Path: for marker in PENDING_MARKERS: if marker.casefold() in rendered.casefold(): raise GenerationError(f"生成后的 TeX 仍含待确认或占位内容:{marker}") + for phrase in NO_HUMAN_RECORD_PHRASES: + if phrase in rendered: + raise GenerationError(f"生成后的 TeX 含禁止的无人工记录提示:{phrase}") for label, pattern in SECRET_PATTERNS.items(): if pattern.search(rendered): raise GenerationError(f"生成后的 TeX 检测到疑似{label}") @@ -444,6 +451,12 @@ def inspect_pdf(pdf_path: Path, source_tex: Path | None = None) -> list[str]: for marker in PENDING_MARKERS: if marker.casefold() in text.casefold(): errors.append(f"最终 PDF 仍含待确认或占位内容:{marker}") + inspection_text = text + if source_tex is not None and source_tex.is_file(): + inspection_text += "\n" + source_tex.read_text(encoding="utf-8-sig") + for phrase in NO_HUMAN_RECORD_PHRASES: + if phrase in inspection_text: + errors.append(f"最终 PDF 含禁止的无人工记录提示:{phrase}") for label, pattern in SECRET_PATTERNS.items(): if pattern.search(text): errors.append(f"最终 PDF 检测到疑似{label}") @@ -452,7 +465,7 @@ def inspect_pdf(pdf_path: Path, source_tex: Path | None = None) -> list[str]: def main() -> int: parser = argparse.ArgumentParser( - description="根据已确认的 AI 使用日志生成国赛 AI 工具使用详情 PDF" + description="根据自动归纳的 AI 使用日志生成国赛 AI 工具使用详情 PDF" ) parser.add_argument("log_path", type=Path, help="reports/AI_USAGE_LOG.md 路径") parser.add_argument( diff --git a/skills/7ai-disclosure/scripts/test_ai_disclosure.py b/skills/7ai-disclosure/scripts/test_ai_disclosure.py index 4df57bfb..c37a535f 100644 --- a/skills/7ai-disclosure/scripts/test_ai_disclosure.py +++ b/skills/7ai-disclosure/scripts/test_ai_disclosure.py @@ -5,6 +5,7 @@ import tempfile import unittest +from contextlib import ExitStack from pathlib import Path from unittest.mock import patch @@ -14,6 +15,9 @@ FIXTURE_PATH = ( Path(__file__).resolve().parents[1] / "tests" / "fixtures" / "valid_multi_tool.md" ) +TEMPLATE_LOG_PATH = ( + Path(__file__).resolve().parents[1] / "templates" / "AI_USAGE_LOG.md" +) VALID_MULTI_TOOL_LOG = FIXTURE_PATH.read_text(encoding="utf-8") @@ -37,16 +41,28 @@ def test_final_log_is_valid_and_ids_map_to_records(self) -> None: self.assertEqual(data.records[0].tool_ids, ("TOOL-01",)) self.assertEqual(data.examples[0].record_ids, ("AI-001",)) + def test_initial_template_passes_record_mode_only(self) -> None: + record_errors = validate(TEMPLATE_LOG_PATH, "record") + final_errors = validate(TEMPLATE_LOG_PATH, "finalize") + self.assertEqual(record_errors, []) + self.assertTrue(any("占位内容" in error for error in final_errors)) + self.assertTrue(any("尚未标记为“已归纳”" in error for error in final_errors)) + def test_rendered_tex_has_four_sections_and_no_template_markers(self) -> None: tex_path = self.root / "supporting_materials" / "AI 工具使用详情.tex" render_tex(self.log_path, self.template, tex_path) text = tex_path.read_text(encoding="utf-8") self.assertNotIn("%%__", text) self.assertNotIn("待队员确认", text) - self.assertIn(r"Claude Code \& MathModelAgent", text) - self.assertIn(r"x\_1 \% 边界", text) + self.assertIn("MathModelAgent 桌面 Agent", text) + self.assertIn("运行环境未提供具体版本", text) self.assertIn("AI-001", text) self.assertIn("EX-001", text) + self.assertIn("迭代修正:", text) + self.assertIn("核验情况:", text) + self.assertNotIn("人工修改:", text) + self.assertNotIn("人工核验:", text) + self.assertNotIn("未记录到额外人工修改", text) self.assertIn("一、所用 AI 工具名称、版本或型号", text) self.assertIn("四、对 AI 输出的采纳、人工修改和核验的主要情况", text) @@ -59,14 +75,45 @@ def test_language_polishing_is_excluded_from_part_four(self) -> None: self.assertIn("AI-001", part_four) self.assertNotIn("AI-002", part_four) - def test_pending_confirmation_blocks_generation(self) -> None: + def test_in_progress_record_blocks_generation(self) -> None: pending = VALID_MULTI_TOOL_LOG.replace( - "- 当前状态:已确认", "- 当前状态:待队员确认", 1 + "- 当前状态:已归纳", "- 当前状态:记录中", 1 ) self.log_path.write_text(pending, encoding="utf-8") with self.assertRaises(GenerationError): render_tex(self.log_path, self.template, self.root / "out.tex") + def test_core_model_detail_is_rejected(self) -> None: + unsafe = VALID_MULTI_TOOL_LOG.replace( + "检查实现完整性", "检查 ARIMA 参数为 0.8 的实现完整性" + ) + self.log_path.write_text(unsafe, encoding="utf-8") + errors = validate(self.log_path, "finalize") + self.assertTrue(any("核心建模过程" in error for error in errors)) + + def test_optional_evidenced_human_edit_is_rendered(self) -> None: + with_human_edit = VALID_MULTI_TOOL_LOG.replace( + "- 对应证据文件或产物:reports/VERIFY_REPORT.md", + "- 人工修改内容:根据明确反馈调整了章节顺序\n" + "- 人工修改依据:当前会话中的明确修改要求\n" + "- 对应证据文件或产物:reports/VERIFY_REPORT.md", + ) + self.log_path.write_text(with_human_edit, encoding="utf-8") + tex_path = self.root / "AI 工具使用详情.tex" + render_tex(self.log_path, self.template, tex_path) + text = tex_path.read_text(encoding="utf-8") + self.assertIn("人工修改:", text) + self.assertIn("根据明确反馈调整了章节顺序", text) + + def test_forbidden_no_human_record_phrase_is_rejected(self) -> None: + unsafe = VALID_MULTI_TOOL_LOG.replace( + "程序运行发现的问题已修正,并重新生成相关产物", + "未记录到额外人工修改", + ) + self.log_path.write_text(unsafe, encoding="utf-8") + errors = validate(self.log_path, "finalize") + self.assertTrue(any("禁止的无人工记录提示" in error for error in errors)) + def test_non_contiguous_tool_ids_fail_validation(self) -> None: invalid = VALID_MULTI_TOOL_LOG.replace("TOOL-02", "TOOL-03") self.log_path.write_text(invalid, encoding="utf-8") @@ -76,10 +123,13 @@ def test_non_contiguous_tool_ids_fail_validation(self) -> None: def test_missing_compilers_fail_with_actionable_error(self) -> None: tex_path = self.root / "AI 工具使用详情.tex" tex_path.write_text("test", encoding="utf-8") - with ( - patch("generate_ai_usage_pdf.shutil.which", return_value=None), - self.assertRaisesRegex(GenerationError, "缺少 PDF 编译器"), - ): + with ExitStack() as stack: + stack.enter_context( + patch("generate_ai_usage_pdf.shutil.which", return_value=None) + ) + stack.enter_context( + self.assertRaisesRegex(GenerationError, "缺少 PDF 编译器") + ) compile_pdf(tex_path) diff --git a/skills/7ai-disclosure/scripts/validate_ai_usage_log.py b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py index acf772a4..f6cb804d 100644 --- a/skills/7ai-disclosure/scripts/validate_ai_usage_log.py +++ b/skills/7ai-disclosure/scripts/validate_ai_usage_log.py @@ -9,7 +9,22 @@ import tempfile from pathlib import Path -PENDING_MARKERS = ("待队员确认", "请填写", "TODO", "PLACEHOLDER") +PENDING_MARKERS = ( + "待队员确认", + "请填写", + "TODO", + "PLACEHOLDER", + "示例工具", + "示例模型", + "示例型号", +) +NO_HUMAN_RECORD_PHRASES = ( + "未记录到额外人工修改", + "未记录人工修改", + "无人工修改记录", + "没有人工修改记录", + "未发现人工修改", +) SECRET_PATTERNS = { "OpenAI 风格密钥": re.compile(r"\bsk-[A-Za-z0-9_-]{12,}\b"), "GitHub 令牌": re.compile(r"\b(?:ghp|github_pat)_[A-Za-z0-9_]{12,}\b"), @@ -17,6 +32,29 @@ "Bearer 令牌": re.compile(r"\bBearer\s+[A-Za-z0-9._~+/-]{12,}", re.IGNORECASE), "环境变量密钥": re.compile(r"\b[A-Z][A-Z0-9_]*(?:API_KEY|TOKEN|SECRET)\s*=\s*\S+"), } +CORE_DETAIL_PATTERNS = { + "公式或变量表达式": re.compile( + r"(?:\\(?:frac|sum|int|begin)\b|\$[^$\n]+\$|\b[A-Za-z]\w*_\d+\b|" + r"\b[A-Za-z][A-Za-z0-9_]*\s*=\s*-?\d)" + ), + "具体数值结果": re.compile( + r"(?:最终结果|最优值|预测值|权重|参数|误差|准确率|目标函数值)" + r"[^。;\n]{0,16}-?\d+(?:\.\d+)?" + ), + "特定模型或算法名称": re.compile( + r"(?:AHP|TOPSIS|ARIMA|LSTM|XGBoost|NSGA(?:-?II)?|" + r"随机森林|层次分析法|熵权法|遗传算法|模拟退火|微分方程|" + r"线性规划|整数规划)", + re.IGNORECASE, + ), + "内部项目路径": re.compile( + r"(?:^|[\s((])(?:code|results|paper|figures|reports)[/\\][^\s,。;))]+", + re.IGNORECASE, + ), +} +HUMAN_CLAIM_PATTERN = re.compile( + r"(?:队员|手工|参赛者|团队成员|人工(?:复算|检查|核验|修改|审阅|调整|确认|验证))" +) REQUIRED_HEADINGS = ("AI 工具目录", "AI 使用记录") REQUIRED_TOOL = ("工具名称", "版本或型号") @@ -31,8 +69,22 @@ "对应证据文件或产物", "当前状态", ) -REQUIRED_HUMAN_REVIEW = ("人工修改内容", "人工核验方法与结果") -REQUIRED_EXAMPLE = ("对应记录", "代表性提示摘要", "AI 输出摘要", "队员处理") +REQUIRED_REVIEW = ("迭代修正情况", "核验方法与结果") +OPTIONAL_HUMAN = ("人工修改内容", "人工修改依据") +REQUIRED_EXAMPLE = ("对应记录", "代表性提示摘要", "AI 输出摘要", "处理结果") +PUBLIC_DISCLOSURE_FIELDS = ( + "使用环节", + "具体使用目的", + "主要提示方式", + "使用过程说明", + "AI 输出采纳情况", + "迭代修正情况", + "核验方法与结果", + "人工修改内容", + "代表性提示摘要", + "AI 输出摘要", + "处理结果", +) ID_PATTERN = re.compile( r"^###\s+((?:TOOL-\d{2})|(?:AI-\d{3})|(?:EX-\d{3}))\s*$", re.MULTILINE ) @@ -75,6 +127,29 @@ def expected_ids(prefix: str, count: int, width: int) -> list[str]: return [f"{prefix}-{index:0{width}d}" for index in range(1, count + 1)] +def validate_public_content( + owner: str, fields: dict[str, list[str]], errors: list[str] +) -> None: + """Reject details or claims that must not enter the public disclosure.""" + for field_name in PUBLIC_DISCLOSURE_FIELDS: + for value in fields.get(field_name, []): + for phrase in NO_HUMAN_RECORD_PHRASES: + if phrase in value: + errors.append( + f"{owner} {field_name} 含禁止的无人工记录提示:{phrase}" + ) + if field_name not in OPTIONAL_HUMAN and HUMAN_CLAIM_PATTERN.search(value): + errors.append( + f"{owner} {field_name} 将过程表述为人工行为;仅有明确会话依据时" + "才可使用人工修改专用字段" + ) + for label, pattern in CORE_DETAIL_PATTERNS.items(): + if pattern.search(value): + errors.append( + f"{owner} {field_name} 含{label},请改为不泄露核心建模过程的阶段概括" + ) + + def validate(path: Path, mode: str) -> list[str]: if not path.is_file(): return [f"日志不存在:{path}"] @@ -141,17 +216,23 @@ def validate(path: Path, mode: str) -> list[str]: errors.append(f"{record_id} 引用了不存在的工具:{reference}") language_only = " ".join(fields.get("是否仅用于语言润色", [])) - if language_only and language_only not in {"是", "否", "待队员确认"}: - errors.append( - f"{record_id} “是否仅用于语言润色”只能是“是”“否”或“待队员确认”" - ) + if language_only and language_only not in {"是", "否"}: + errors.append(f"{record_id} “是否仅用于语言润色”只能是“是”或“否”") if language_only != "是": - for name in missing_fields(fields, REQUIRED_HUMAN_REVIEW): + for name in missing_fields(fields, REQUIRED_REVIEW): errors.append(f"{record_id} 非纯语言润色,缺少字段或值:{name}") + human_edit = " ".join(fields.get("人工修改内容", [])).strip() + human_basis = " ".join(fields.get("人工修改依据", [])).strip() + if bool(human_edit) != bool(human_basis): + errors.append( + f"{record_id} 人工修改内容与人工修改依据必须同时填写或同时省略" + ) + status = " ".join(fields.get("当前状态", [])) - if status and status not in {"已确认", "待队员确认"}: - errors.append(f"{record_id} 当前状态只能是“已确认”或“待队员确认”") + if status and status not in {"记录中", "已归纳"}: + errors.append(f"{record_id} 当前状态只能是“记录中”或“已归纳”") + validate_public_content(record_id, fields, errors) for example_id, block in examples: fields = parse_fields(block) @@ -163,6 +244,7 @@ def validate(path: Path, mode: str) -> list[str]: for reference in references: if reference not in record_ids: errors.append(f"{example_id} 引用了不存在的记录:{reference}") + validate_public_content(example_id, fields, errors) if mode == "finalize": for field_name, values in parse_fields(text).items(): @@ -171,8 +253,8 @@ def validate(path: Path, mode: str) -> list[str]: errors.append(f"最终生成前仍有待确认或占位内容:{field_name}") for record_id, block in records: fields = parse_fields(block) - if " ".join(fields.get("当前状态", [])) != "已确认": - errors.append(f"{record_id} 尚未标记为“已确认”") + if " ".join(fields.get("当前状态", [])) != "已归纳": + errors.append(f"{record_id} 尚未标记为“已归纳”") return list(dict.fromkeys(errors)) @@ -180,8 +262,8 @@ def validate(path: Path, mode: str) -> list[str]: VALID_SAMPLE = """# AI 工具使用过程记录 ## AI 工具目录 ### TOOL-01 -- 工具名称:示例工具 -- 版本或型号:示例模型 1 +- 工具名称:MathModelAgent 桌面 Agent +- 版本或型号:运行环境未提供具体版本 ## AI 使用记录 ### AI-001 - 工具编号:TOOL-01 @@ -189,18 +271,18 @@ def validate(path: Path, mode: str) -> list[str]: - 具体使用目的:检查边界条件 - 是否仅用于语言润色:否 - 主要提示方式:提供代码和约束,请列出边界风险 -- 使用过程说明:模型给出检查清单,队员逐项验证 -- AI 输出采纳情况:部分采纳 -- 人工修改内容:删除不适用建议并补充测试 -- 人工核验方法与结果:运行边界测试,全部通过 +- 使用过程说明:生成检查清单后与实际产物逐项对照 +- AI 输出采纳情况:经文件对照后选择性纳入最终稿 +- 迭代修正情况:程序运行发现的问题已修正并重新生成相关产物 +- 核验方法与结果:完成代码复现、异常检查和正文结果一致性核对,检查通过 - 对应证据文件或产物:tests/test_boundary.py -- 当前状态:已确认 +- 当前状态:已归纳 ## 典型交互示例(可选) ### EX-001 - 对应记录:AI-001 - 代表性提示摘要:检查边界条件 - AI 输出摘要:列出三类风险 -- 队员处理:逐项测试后采纳两项 +- 处理结果:与现有产物对照后,仅保留有运行记录支持的建议 """ @@ -209,17 +291,19 @@ def self_test() -> int: "- 是否仅用于语言润色:否", "- 是否仅用于语言润色:是" ) language_sample = language_sample.replace( - "- 人工修改内容:删除不适用建议并补充测试\n", "" + "- 迭代修正情况:程序运行发现的问题已修正并重新生成相关产物\n", + "", ) language_sample = language_sample.replace( - "- 人工核验方法与结果:运行边界测试,全部通过\n", "" + "- 核验方法与结果:完成代码复现、异常检查和正文结果一致性核对,检查通过\n", + "", ) cases = [ ("valid", VALID_SAMPLE, "finalize", False), ("language_only", language_sample, "finalize", False), ( "pending", - VALID_SAMPLE.replace("- 当前状态:已确认", "- 当前状态:待队员确认"), + VALID_SAMPLE.replace("- 当前状态:已归纳", "- 当前状态:记录中"), "finalize", True, ), @@ -237,7 +321,28 @@ def self_test() -> int: ), ( "missing_review", - VALID_SAMPLE.replace("- 人工核验方法与结果:运行边界测试,全部通过\n", ""), + VALID_SAMPLE.replace( + "- 核验方法与结果:完成代码复现、异常检查和正文结果一致性核对,检查通过\n", + "", + ), + "record", + True, + ), + ( + "fabricated_human_claim", + VALID_SAMPLE.replace("完成代码复现", "队员手工复算并完成代码复现"), + "record", + True, + ), + ( + "core_detail", + VALID_SAMPLE.replace("检查边界条件", "检查 ARIMA 参数为 0.8 的结果"), + "record", + True, + ), + ( + "no_human_record_phrase", + VALID_SAMPLE.replace("程序运行发现的问题已修正", "未记录到额外人工修改"), "record", True, ), diff --git a/skills/7ai-disclosure/templates/AI_USAGE_LOG.md b/skills/7ai-disclosure/templates/AI_USAGE_LOG.md index d2d4d75e..e46ebbd3 100644 --- a/skills/7ai-disclosure/templates/AI_USAGE_LOG.md +++ b/skills/7ai-disclosure/templates/AI_USAGE_LOG.md @@ -1,30 +1,30 @@ # AI 工具使用过程记录 -> 只记录真实发生的使用。未知内容写“待队员确认”;不要写入密钥、密码、完整聊天记录或模型私有思维链。 +> 本记录由工作流根据会话、运行时元数据、文件产物和检查结果自动维护。只记录实际发生且可由任务证据支持的使用,不写入密钥、完整聊天记录、核心建模细节或模型私有思维链。 ## AI 工具目录 ### TOOL-01 -- 工具名称:待队员确认 -- 版本或型号:待队员确认 +- 工具名称:MathModelAgent 桌面 Agent +- 版本或型号:运行环境未提供具体版本 ## AI 使用记录 ### AI-001 - 工具编号:TOOL-01 -- 使用环节:待队员确认 -- 具体使用目的:待队员确认 -- 是否仅用于语言润色:待队员确认 -- 主要提示方式:待队员确认 -- 使用过程说明:待队员确认 -- AI 输出采纳情况:待队员确认 -- 人工修改内容:待队员确认 -- 人工核验方法与结果:待队员确认 -- 对应证据文件或产物:待队员确认 -- 当前状态:待队员确认 +- 使用环节:任务启动与全流程编排 +- 具体使用目的:建立任务计划、组织阶段产物并维护检查记录 +- 是否仅用于语言润色:否 +- 主要提示方式:【自动概括本次任务的输入类型和输出要求,不写题目细节】 +- 使用过程说明:【自动概括实际执行阶段,不写模型、公式、参数或结果】 +- AI 输出采纳情况:【根据最终文件和修改记录自动归纳】 +- 迭代修正情况:【根据重新运行和文件修改证据自动归纳】 +- 核验方法与结果:【根据实际检查记录自动归纳】 +- 对应证据文件或产物:plan.md;todo.md +- 当前状态:记录中 ## 典型交互示例(可选) - + diff --git "a/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" index e71e805a..9ec9f32e 100644 --- "a/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" +++ "b/skills/7ai-disclosure/templates/AI\345\267\245\345\205\267\344\275\277\347\224\250\350\257\246\346\203\205\346\250\241\346\235\277.tex" @@ -1,5 +1,5 @@ % !TeX program = xelatex -% 由 generate_ai_usage_pdf.py 根据已确认日志填充;不要直接提交本源文件。 +% 由 generate_ai_usage_pdf.py 根据自动归纳日志填充;不要直接提交本源文件。 \documentclass[UTF8,a4paper,11pt]{ctexart} \usepackage[a4paper,top=2.0cm,bottom=2.0cm,left=2.15cm,right=2.15cm]{geometry} \usepackage{array,booktabs,longtable,fancyhdr,lastpage} diff --git a/skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md b/skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md index cd70f40b..83bbb880 100644 --- a/skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md +++ b/skills/7ai-disclosure/tests/fixtures/valid_multi_tool.md @@ -4,29 +4,29 @@ ### TOOL-01 -- 工具名称:Claude Code & MathModelAgent -- 版本或型号:Claude 示例型号 +- 工具名称:MathModelAgent 桌面 Agent +- 版本或型号:运行环境未提供具体版本 ### TOOL-02 - 工具名称:ChatGPT -- 版本或型号:GPT 示例型号 +- 版本或型号:运行环境未提供具体版本 ## AI 使用记录 ### AI-001 - 工具编号:TOOL-01 -- 使用环节:建模与代码实现 -- 具体使用目的:构造约束并检查 x_1 % 边界 +- 使用环节:方案梳理与实现检查 +- 具体使用目的:辅助梳理任务结构并检查实现完整性 - 是否仅用于语言润色:否 -- 主要提示方式:提供题面、数据字段与目标函数,要求给出可复现步骤 -- 使用过程说明:先生成基线,再根据 code/result_1.py 的实测结果迭代 -- AI 输出采纳情况:部分采纳模型结构和检查清单 -- 人工修改内容:队员重写约束,并删除不符合题意的假设 -- 人工核验方法与结果:手工复算样例并运行边界测试,结果一致 -- 对应证据文件或产物:code/result_1.py -- 当前状态:已确认 +- 主要提示方式:提供任务材料类型与交付要求,要求给出可复现的阶段建议 +- 使用过程说明:先形成阶段草稿,再根据程序运行和文件检查结果迭代 +- AI 输出采纳情况:经文件对照后选择性纳入最终稿 +- 迭代修正情况:程序运行发现的问题已修正,并重新生成相关产物 +- 核验方法与结果:完成代码复现、异常检查和正文结果一致性核对,检查通过 +- 对应证据文件或产物:reports/VERIFY_REPORT.md +- 当前状态:已归纳 ### AI-002 @@ -35,16 +35,16 @@ - 具体使用目的:压缩摘要并统一术语 - 是否仅用于语言润色:是 - 主要提示方式:提供原摘要并限制字数 -- 使用过程说明:比较修改前后文本,保留原有结论和数字 +- 使用过程说明:比较修改前后文本,保持原有信息范围不变 - AI 输出采纳情况:部分采纳措辞 - 对应证据文件或产物:paper/abstract.tex -- 当前状态:已确认 +- 当前状态:已归纳 ## 典型交互示例(可选) ### EX-001 - 对应记录:AI-001 -- 代表性提示摘要:检查约束、单位与极端输入 -- AI 输出摘要:给出三类边界风险和测试建议 -- 队员处理:复算后采纳两项测试,拒绝一项不适用建议 +- 代表性提示摘要:检查实现完整性、结果一致性和表达缺漏 +- AI 输出摘要:给出风险项和修订建议摘要 +- 处理结果:与现有产物对照后,仅保留有运行记录支持的建议