8.3 KiB
8.3 KiB
WiseGrade 目录、摘要与正文证据治理:Codex Goal 模式提示词
将下方提示词完整复制到 Codex Goal 模式,在本仓库执行。本提示词授权新任务修改仓库源码和隔离测试环境;不授权改写当前业务数据库、批次 3 或会话 6。
你是 WiseGrade(智评)项目的开发代理。请在 /home/sky/files/Agent/WiseGrade 完整实现“区分报告目录、摘要与正文的证据检索和评分”功能,完成迁移、测试、界面衔接及文档更新。持续推进到下列验收条件全部满足,不要只提交设计方案。
## 先了解现状
先检查工作区状态,阅读:
- /home/sky/files/Agent/WiseGrade/README.md
- /home/sky/files/Agent/WiseGrade/HANDOFF.md
- /home/sky/files/Agent/WiseGrade/docs/GUIDE.md
重点检查 backend/wisegrade 下的 parsing.py、rag.py、models.py、scoring.py、llm.py、indexing.py、services.py、agent_tools.py、chat_api.py、exports.py、actions.py,以及 frontend/src/App.tsx、frontend/src/Chat.tsx、数据库迁移和相关测试。以当前代码为准,保留工作区已有修改。
当前问题已通过只读检查确认:批次 3 的 77 条评分引文中有 14 条来自目录页,涉及 9 个评分项;会话 6 保存的 20 条引用中有 5 条指向阶段报告 1 的目录页。目录既被当作正文证据,也挤占候选位置,使实际存在的正文难以检索到。上述数字是诊断基线,不是要求修改这些历史记录。
## 已确定的业务规则
1. 目录可以证明章节和报告结构,也可以帮助定位正文;不能证明章节的具体内容、完成质量、测试结果或分析。
2. 摘要可以用于“摘要称……”这类明确归属的概述,不能单独证明方法已实现、实验已完成或指标已达标。
3. 内容性评分必须使用正文中的实质段落、数据、表格或适用的附录。正文页上的单独章节标题也不能充当内容证据。
4. 经过针对性正文补检后,若内容性评分目标仍只有目录或摘要命中,该评分项进入“待教师复核”:模型分为 null,总分保持待处理;不得自动给低分或断言“学生未写”。
5. 教师已录入的复核分、评语和修改历史必须保留。不要自动改写批次 3 的既有分数或会话 6 的历史消息。
## 页面标注
以文档实际页码或 PPT 幻灯片编号为主要标注单位,至少区分 cover、abstract、toc、body、references、unknown。普通知识片段继承所在页面类型。允许 mixed 页面:当目录和正文确实共处一页时,仅对该页按文本块进一步区分,不把整页正文排除。
识别目录时结合页首标题、章节条目密度、点线与末尾页码,并识别跨页续目录;摘要、参考文献也要识别连续页面。不能只凭“目录”一词或固定页号判定。清理重复页眉页脚,保留判定依据和识别版本。对有疑义的页面标为 unknown,不强行认作正文。
设计统一的页面级持久化结构,让学生材料和公共课程资料都能查询页面类型;知识片段关联其来源页。另行提取真正的正文章节路径,不要直接把当前“页面第一行”字段当成章节。
## 证据政策与检索
把“必备证据的用途”纳入可版本化的评分规则,并随批次保存快照;对既有字符串形式的 required_evidence 做兼容处理。结构目标允许封面、目录或参考文献等对应页面;内容目标只允许正文及有实质内容的附录。不要只在 Prompt 中写规则,也不要仅按评分项 ID 临时硬编码。
每个必备证据目标分别检索。先限定课程版本、学生项目、材料类别和允许的页面类型,再取候选;页面过滤必须发生在候选数量限制之前。扩大初始候选池,让语义匹配和关键词匹配分别有召回机会,再合并去重。评估现有 PostgreSQL simple 全文检索对中文材料的表现,采用适合当前语料的关键词召回方式。融合排序时避免直接相加未经归一化的语义分与关键词分,可采用基于排名的融合,并用回归样本调整参数。
第一轮优先分散到不同页面;有可靠章节路径后,再对同一章节设置软上限。名额不足时可回填同页或同节的其他正文片段,但不能放宽证据类型。评分最终给模型的片段数量保持受控,Agent 搜索也保持受控。宽泛的跨报告问题适度覆盖不同文档;明确指定某一报告时不要强制跨文档。
若某个内容目标未找到正文,利用目录标题匹配实际正文标题,补检该章节及相邻正文页。目录只作导航,最终内容引文必须落在实际正文页。评分发送给模型的页面图像也应优先选择相关的不同正文页,而非目录页。
## 评分与 Agent 出口
扩展评分输出及校验,使每条引文关联它要支持的评分目标。除现有原文与页码校验外,还须校验证据来源类型是否获准;内容性判断不能仅由目录、摘要或单独标题支撑。LLM 负责理解证据、判断评分要求和提出补检目标;页面权限及状态转换由代码执行,LLM 不能绕过。
新增清晰的“待教师复核”评分状态,与材料缺失、解析失败和模型调用失败区分。补检仍不足时记录缺少的正文证据目标和检索范围,模型分保持 null。同步更新批次完成状态、仪表盘待处理数、API 与 Agent 状态筛选、评分详情、导出及教师复核流程。待复核项的教师评分输入框不能预填 0;教师复核后应能正常形成最终分,同时保留原始检索问题记录。
项目事实抽取也要遵循来源类型,避免从目录标题推断实现结果。
Agent 的内容搜索和结构/目录查询使用相同的证据政策;可调整现有工具参数或增加清晰区分的只读工具,但保持原有项目范围隔离。工具返回页面类型和稳定的引用标识。最终回答仅附上实际使用、能对应回答判断的引用,而不是汇总所有工具命中。旧批次评分证据若来自目录,展示为“历史评分引用”,不能自动当作报告正文证据。
## 迁移与历史数据
增加必要的 Alembic 迁移和索引版本升级。优先利用已保存的学生材料解析页面重新分类和建索引;公共课程资料按现有入库路径处理。旧版索引在完成升级前不得被默默当作已分类正文使用。迁移和重建过程应可重试、可审计,保留原始文件、评分批次、教师复核及会话历史。
本任务只可在隔离测试数据库和测试材料上执行迁移、重建索引及评分验证。不要对当前业务数据库运行迁移、重建索引、重新评分或修改批次 3/会话 6。提供业务环境应用步骤和批次 3 的复核清单,但不执行这些业务数据操作。
## 有意义的回归验证
使用现有报告的已知页面及必要的合成混合页作为回归样本,至少覆盖:
1. 阶段报告 1 的目录页与第 6–7 页文献调研正文正确区分;stage1.literature 能召回正文分析。
2. 阶段报告 3 的目录页与第 11–12 页测试正文正确区分;stage3.data 能召回测试描述。不要把“找到了这些页”直接等同于“应得某个分数”。
3. 最终报告的摘要页、跨页目录和正文正确区分;目录仍可支持章节完整性评分。
4. 混合页、目录续页、重复页眉和识别不确定页面不会被静默当作普通正文。
5. 内容性评分不得引用目录、摘要或单独标题;结构性评分仍能合理使用目录。
6. 正文补检仍不足时,模型分为 null、状态为待教师复核、总分待处理;教师能够正常复核,界面不预填 0。
7. Agent 最终引用只包含回答实际使用且通过校验的来源;历史评分引文不会被误用作正文证据。
8. 学生项目隔离、课程版本隔离、已有评分与导出功能保持可用。
优先运行针对性后端测试、隔离 PostgreSQL 集成测试、前端类型检查和生产构建。需要真实模型才能验证的部分单独说明,不要把未运行的验证写成通过。更新必要的项目文档,最后报告修改内容、实际测试结果、批次 3 建议复核的项目,以及尚待业务环境执行的步骤。