Skip to content

fix(agent): diagnose empty replies and harden ask lifecycle - #170

Merged
Yangshifu1024 merged 1 commit into
mainfrom
codex/empty-response-and-ask-recovery
Oct 16, 2026
Merged

Yangshifu1024 merged 1 commit into
mainfrom
codex/empty-response-and-ask-recovery

Conversation

@Yangshifu1024

Copy link
Copy Markdown
Owner

概要

补齐空响应诊断,区分上游未返回内容、内容未被组装及未知响应结构,并按实际原因显示重试提示。修复工具参数缺失及询问跳过后的运行生命周期,让用户重新发送消息时能够沿用已有进度。

关联文档

类型

  • fix

变更内容

  • 三种 provider 协议记录空响应的请求标识、事件与内容计数、结束状态及组装结果;日志不包含正文、思考内容或工具参数。重试提示按空响应、流停滞等实际原因展示。
  • read 仅将字段明确的单文件参数补成 files;ask 仅生成缺失的中性 ID,拒绝无效或重复的显式 ID。补齐后的询问仅认用户所选选项的显式 mode,不推断审批选项或权限档位。
  • 询问按钮改为“跳过”:提交明确的 skip 动作,保留已完成的工具结果并停止当前运行,子代理跳过按运行身份停止所属主运行。
  • 清理等待回答与运行状态,阻止旧运行迟到的询问重新打开面板;重新发送消息沿用保存的文件、计划和历史进度。

验证

  • 完整执行 pnpm prepr(macOS;退出码 0)。
  • cargo test --workspace:1469 通过、3 个既有忽略;Rust fmt / clippy 通过,无 warning。
  • 前端测试 137 个文件、1927 个用例通过;lint / build 通过。
  • Node 脚本测试:34 通过、1 项因当前平台缺少 PowerShell 跳过;git diff --check 通过。
  • 事件面 / IPC 契约测试通过;事件键名保持不变。
  • 已完成 code-reviewer 跨层审查,无未解决问题。
  • GUI 手动验收(尚未执行,不以单元测试代替):
    1. 在多页询问的任意一页点击“跳过”,确认停止任务且不提交默认推荐答案、不切换权限档位。
    2. 确认会话不残留“运行中”或“等待回答”,排队消息不自动续跑。
    3. 重新发送“继续”,确认从已有文件和计划进度继续,旧询问不重新出现,新询问可以正常回答。
    4. 分别触发空响应与流停滞,确认界面重试原因准确,诊断日志能够区分内容缺失与组装问题。

风险与迁移说明

run:retry.reason、ask:opened.explicit_mode_only 为可选字段;旧完整参数继续兼容。跳过为独立动作,在审批判定前处理;不会生成批准语义或提升权限。无需数据迁移。

3 个忽略项为现有真实额度探测、macOS 通知探测及技能缓存失效回归。前端构建仍有现有 @tauri-apps/api/window 同时静态/动态导入的 Vite 提示。当前本地验证只覆盖 macOS;Windows/Linux 由 CI 复核。

@Yangshifu1024
Yangshifu1024 merged commit 1138aec into main Oct 16, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant