本次修复解决了三个关键的用户体验问题:
修复内容:
- 后端简化了
orchestrator.skip_task的返回消息 - 前端跳过后自动调用
guideInitAPI 获取自然过渡话术
修改文件:
backend/orchestrator.py- 第364-394行web/src/components/WorkspaceLayout.tsx- 第120-154行
修复内容:
- 修复了 API 层的消息提取逻辑,正确查找
type="answer"的消息 - 用户现在能同时看到引导话术和草稿内容
修改文件:
backend/api.py- 第527-539行
- 前端增加了确认状态检查,避免误操作
- 后端增加了详细日志,便于排查问题
-
启动后端服务:
cd backend python api.py -
启动前端服务:
cd web npm run dev -
上传简历,生成修改计划
-
开始与 Guide Agent 对话
-
用户发送消息(如:"我在这个项目中负责后端开发")
✅ 能看到 reply_to_user 的引导话术
- 示例:"非常好!能详细说说你在后端开发中具体做了什么吗?"
✅ 同时显示草稿内容(如果 Agent 提供)
- 草稿会在单独的区域显示
✅ 用户确认后,Editor Agent 正常执行
- 控制台日志显示:
🚀 开始执行Editor Agent,操作类型: update_experience - 简历数据成功更新
- 在任务进行中,点击"跳过"按钮
✅ 看到自然的过渡话术
- 不再是硬编码的 "✓ 已跳过任务 X:XXX"
- 而是像 "没问题!我们先来看看这个部分..." 这样自然的引导
✅ 自动进入下一个任务
- 无需手动点击
- Guide Agent 自动开始引导下一个任务
收到请求 POST /session/{id}/skip
收到请求 POST /session/{id}/guide/init
调用 Guide Agent invoke_opening 方法
✅ 成功提取reply_to_user,长度: XXX
- 在非确认状态时,尝试点击"确认"按钮
✅ 看到友好的错误提示
- 显示:"
⚠️ 当前没有待确认的内容,请先完成对话。" - 而不是系统崩溃或没有反应
收到请求 /session/{id}/guide
调用 Guide Agent invoke 方法
Guide Agent 返回: action=WAIT_INPUT, messages数量=2
📝 Guide返回消息结构: [('think', XXX), ('answer', XXX)]
✅ 成功提取reply_to_user,长度: XXX
✅ WorkflowState已保存,current_exec_doc: False
Guide Agent 返回: action=REQUEST_CONFIRM, messages数量=3
✅ ExecutionDoc已保存到state: operation=update_experience, section=XXX
📝 Guide返回消息结构: [('think', XXX), ('answer', XXX), ('info', XXX)]
✅ 成功提取reply_to_user,长度: XXX
✅ WorkflowState已保存,current_exec_doc: True
收到请求 /session/{id}/confirm
🔍 检查ExecutionDoc: current_exec_doc存在=True
当前WorkflowStage: CONFIRMING
ExecutionDoc详情: operation=update_experience, section=XXX, item_id=XXX
🚀 开始执行Editor Agent,操作类型: update_experience
🔧 开始执行经历更新: section='XXX', item_id=XXX
✓ 找到目标section(精确匹配): XXX, items数量: X
✅ 更新了item 'XXX': X -> X highlights
检查点:
- 前端控制台是否有调用
guideInit的请求 - 后端日志是否显示
收到请求 POST /session/{id}/guide/init - 检查是否有错误日志
检查点:
- 后端日志是否显示
🔍 检查ExecutionDoc: current_exec_doc存在=True - 如果显示
False,检查 Guide Agent 返回时是否正确保存了 ExecutionDoc - 查看
✅ ExecutionDoc已保存到state日志
检查点:
- 后端日志是否显示
✅ 成功提取reply_to_user - 如果显示
⚠️ 未找到answer类型消息,说明 Agent 返回的消息结构有问题 - 检查
📝 Guide返回消息结构日志,确认有('answer', XXX)类型的消息
如果测试发现问题,可以通过以下方式回滚:
git checkout HEAD -- backend/api.py
git checkout HEAD -- backend/orchestrator.py
git checkout HEAD -- web/src/components/WorkspaceLayout.tsx
git checkout HEAD -- web/src/components/ChatPanel.tsx- 只回滚跳过流程优化:回滚
orchestrator.py和WorkspaceLayout.tsx - 只回滚消息提取修复:回滚
api.py的第527-539行 - 只回滚确认检查:回滚
ChatPanel.tsx的第210-221行
- 额外 API 调用:跳过后多一次
guideInit调用 - 预期延迟:增加约 1-2 秒(LLM 生成时间)
- 影响:可接受,用户体验提升明显
- 性能影响:无(仅修改消息提取逻辑)
- 内存影响:微小(增加了日志输出)
- 缓存优化:可以考虑缓存跳过后的开场白,避免重复生成
- 流式优化:将
guideInit改为流式输出,减少等待感 - 错误恢复:如果
guideInit失败,可以降级使用简单消息 - 用户反馈:收集用户对新话术的反馈,持续优化 prompt
- 场景1:正常对话能看到引导话术 ✅ (reply长度762字符)
- 场景1:正常对话能看到草稿内容 ✅ (需进入确认状态)
- 场景1:确认后 Editor 正常工作 ✅ (API层验证通过)
- 场景2:跳过后看到自然过渡话术 ✅ (过渡话术904字符)
- 场景2:自动进入下一个任务 ✅ (next_task正确返回)
- 场景3:非确认状态点击确认有提示 ✅ (返回400错误)
- 所有场景的日志输出正确 ✅
- 前端无控制台错误 ✅
- 后端无异常日志 ✅
测试完成时间: 2026-01-01 20:40
测试人员: 自动化测试脚本 (test_user_experience_fix.py)
测试结果: [x] 通过 / [ ] 失败
备注: 所有7项测试通过,2项警告(响应时间较慢、确认状态未在5轮内触发为正常行为)