Files
WiseGrade/docs/prompts/CODEX_SESSION_UI_GOAL_PROMPT.md
T

30 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WiseGrade“会话”界面更新:Codex Goal 模式提示词
在本仓库根目录启动 Codex Goal 模式,将下方代码块完整粘贴为目标。本提示词针对已有对话功能做增量更新。
```text
你是 WiseGrade 项目的开发代理。请直接在当前仓库完成“对话”界面的增量更新,包含必要的前后端、数据库迁移、测试和文档修改,直到下面的验收条件全部满足。不要只给出方案或界面样例。
先检查 git 工作区状态,阅读 README.md、HANDOFF.md、docs/GUIDE.md,并查看 frontend/src/App.tsx、Chat.tsx、style.css、api.ts,backend/wisegrade/chat_api.py、actions.py、models.py,相关 Alembic 迁移及 backend/tests/test_chat_agent.py。保留已有用户修改;沿用当前 React/TypeScript/Ant Design、FastAPI/SQLAlchemy、SSE 和业务 Agent 架构。旧的 docs/prompts/CODEX_CHAT_AGENT_GOAL_PROMPT.md 是上一阶段的实现提示词,本次以当前代码和以下需求为准。
## 产品行为
1. 将界面中面向用户的“对话”名称统一改为“会话”,包括左侧导航、页面标题、新建入口、空状态、提示和相关文档;保留现有路由、接口和历史数据的兼容性,不因显示名称变化破坏旧链接。
2. 每次打开“会话”界面,默认进入一个新的空白会话草稿,不自动选中上次或列表中的历史会话。草稿只存在前端状态,不能因为进入页面、刷新页面或点击“新建”而写入数据库。历史会话仍在列表中,可点击查看和继续;再次进入界面仍默认展示新的空白草稿。
3. 点击“新建”立即切换到一个无课程版本、评分批次、学生项目限定范围的空白草稿,不弹窗,也不发创建接口。输入区和范围选择在空白草稿中直接可用。已有会话若尚无第一条用户消息,其范围也可修改。用户发送第一条非空消息时,才持久化该会话和该消息;确保重复点击、请求失败或并发请求不会留下意外的空会话或创建多个会话。首次提交成功后切换到真实 ID,并继续现有 SSE 回答流程。模型回答失败时,已经成功提交的用户消息和会话仍应可恢复。
4. 限定范围在第一条消息提交前可反复修改、清除;第一条消息一旦成功提交就固定,并在界面上明确展示为只读。后端也必须拒绝已开始会话的范围修改,不能仅靠前端禁用。沿用并复核现有课程版本、批次、学生项目之间的一致性校验;选择批次或项目时正确处理其所属课程版本,清除上级范围时避免残留冲突值。历史遗留的空会话也按“未发送第一条消息”处理。
5. 会话列表增加删除操作,并有清晰的二次确认。提供后端删除接口,处理该会话的消息、Agent 运行记录、待确认操作等关联数据,防止外键错误和悬空记录;删除会话不能撤销已经确认执行的评分、导入、导出等业务操作,也不能抹掉必要的业务审计。运行中的会话应安全处理并给出明确反馈。删除当前会话后切换到新的空白草稿,列表、详情和本地缓存保持一致;删除其他会话不打断当前编辑。失败时显示错误,不假装删除成功。
6. 助手的历史回答和正在生成的回答都渲染 Markdown,至少正确显示标题、段落、列表、链接、引用块、表格和代码块,并有适合聊天框的排版、换行和长内容处理。将模型内容视为不可信输入:禁止原始 HTML 注入,限制危险链接协议,避免 XSS。教师消息仍清楚可辨。
7. 整理回答下方的“引用”:按结构化 citation 数据显示紧凑、易读的资料名、页码或幻灯片号、原文摘录和可打开的页面/图像链接;处理缺失字段、重复引用、长摘录与窄屏布局,避免原始对象、重复标题或错乱换行堆叠。引用本身应易于找到,不要被工具调用折叠区遮住。保持既有来源和证据链接的准确性。
8. 将一次回答中的工具调用过程做成类似 Codex 的可展开区:默认折叠,仅显示工具名称、执行状态和简短摘要;展开后分别查看调用参数与调用结果/错误。流式执行时可见进行中、成功、失败状态;历史消息刷新后仍可查看对应工具调用与结果。使用稳定的调用标识关联事件,不要把多个同名调用混在一起。后端若需补充 SSE 事件或持久化字段,应做有界、必要的改动,限制结果大小并避免泄露密钥、敏感配置或不必要的学生原文。待确认操作卡片继续独立可见,不能被折叠或绕过确认。
9. 一个会话正在生成回答或调用工具时,教师点击切换到其他会话,该会话必须继续在后台运行,切换回去能看到正确的实时进度和最终结果。允许多个不同会话同时运行,互不阻塞、互不串流;每个会话的输入禁用状态、运行标识、工具事件、错误和回答都按会话 ID 独立管理。会话列表显示各自的运行状态。不要让 React 组件卸载、当前选中会话变化或 SSE 客户端断开取消后端运行;刷新后应能恢复正在运行的状态,并通过重连、订阅或轮询继续取得结果。同一会话内重复发送仍按现有并发保护处理。不要把会话切换误认为停止命令。
## 实现与验证
优先复用现有接口与组件;为“首次发送才入库”、范围编辑、删除、并行会话运行及工具记录增加必要的 API、事务和 Alembic 迁移。明确失败重试及刷新后的状态:空草稿不出现在会话列表;有用户消息但模型失败的会话应出现并可继续;删除后不能继续访问其详情或确认其旧操作。不要改变 Agent 工具权限、业务写入确认边界、评分计算及检索范围隔离。
补充有意义的后端测试,覆盖首次发送的持久化时机与幂等/并发、范围修改与锁定、关联数据删除、运行中删除、历史会话兼容、工具记录恢复、切换或断开连接后原会话继续运行,以及不同会话并行且事件不串流。前端至少完成 TypeScript 与生产构建,并实际检查新建无弹窗、范围选择、历史切换、删除确认、Markdown、引用、工具折叠、运行时切换会话、多会话同时运行及移动端布局;若具备浏览器测试工具,执行交互验证。按项目现有方式运行适用测试;环境无法验证的项目说明具体原因,不把未运行的测试写成通过。
同步更新 README.md、docs/GUIDE.md 和必要的 HANDOFF.md 描述。完成后报告主要改动、实际验证命令及结果、仍有的限制。不要提交 .env、API Key、运行数据或学生原件。除确实无法从代码和本目标推断的业务矛盾外,自主完成实现,不停在普通实现选择上征求确认。
```