Skip to content

feat: Windows 验证码中断保活与原会话自动恢复 - #29

Draft
iiijiashu wants to merge 1 commit into
pjpv:mainfrom
iiijiashu:feat/windows-keepalive
Draft

iiijiashu wants to merge 1 commit into
pjpv:mainfrom
iiijiashu:feat/windows-keepalive

Conversation

@iiijiashu

Copy link
Copy Markdown

长任务遇到阿里云验证码后可能停在失败状态,用户离开电脑时无法继续。本 PR 在 Windows 工具栏增加默认关闭的「保活」开关:观察新产生的验证码失败,在同账号下重启当前 ZCode,并向本轮捕获的原会话发送「继续」。

行为

  • 从开启时的日志末尾开始,只匹配结构化验证码错误链及其 session/turn ID;不会因普通停顿或历史错误唤醒任务。
  • 首次故障立即恢复,连续失败按 15 秒至 5 分钟退避,不设总尝试次数上限。
  • 重新核实会话与工作区,排除完成、暂停、等待回答/权限批准以及用户已经开启新轮次的任务。连带恢复仅限开启后观察到活动、重启前索引仍为 running 的任务。
  • 稳定命令 ID、丢失回执后的状态观察、实际执行进展计数;不把“消息已提交”视为已恢复。
  • 限定可执行路径、当前 Windows 用户/会话、PID/启动时间及监听端口。手动换号、启停和修改路径优先,并关闭保活。
  • 恢复启动使用随机的 loopback 调试端口,不修改 ZCode 安装包,不换账号。启用说明明确提示本机其他程序也可能访问该调试接口。

实现包含中英文界面、兼容性说明、日志读取和状态机测试、会话适配测试,以及 CI 中的前端/适配检查。用户无需安装 Python、Node.js 或验证码插件;这些均不是打包功能的运行依赖。

验证

  • cargo test --lib:17 passed,2 个必须显式选择隔离实例的运行测试默认 ignored。
  • npm run test:keepalive:17 passed。
  • npm run check:i18n、npm run build、git diff --check:通过。
  • 上述两个运行测试已单独执行通过:真实 Windows 进程归属/随机端口/CDP 连接,以及隔离安装的停止、重新启动和就绪检查。
  • ZCode 3.14.4.7912,隔离数据目录及隐藏桌面:本地模拟模型失败 → 原进程退出 → 冷启动 → 同一 session ID 恢复 → 发送「继续」→ 新轮次完成。重复恢复命令没有产生额外模型请求。没有使用真实账号或外部模型服务。
  • 界面在 680×820 尺寸检查了开关、状态行和启用确认框;独立代码审查发现的生命周期问题已修复并补充回归测试。

草稿状态与边界

真实阿里云再次发出挑战后的完整自动恢复尚未现场复现,所以先提交 Draft,不能把本地模拟模型验收当作外部服务验收。会话控制复用 ZCode 内部桌面服务,并非稳定公开 API;升级后的兼容性需通过现有能力/状态检查,必要时更新适配。

当前只支持 Windows 和本地工作区。恢复集合保存在当前切换器进程内,退出后不重放旧命令;启用偏好持久化。关闭保活停止续跑,已经提交的重启会继续尝试完成启动,用户手动生命周期操作始终优先。调试接口在下一次普通 ZCode 启动后关闭。

详细设计、使用与验证边界见 docs/keepalive.md。

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