CodeWhale 断网后如何恢复:用 /queue 查看并重新发送离线队列
【免费下载链接】CodewhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/Codewhale
Codewhale 是一个运行在终端里的开源编码代理。当 TUI 会话断网或进入降级/离线状态时,你输入的新提示不会丢失,而是被排入离线队列并持续写到磁盘。这篇文章说明如何在断网恢复后,用/queue命令查看队列内容、逐条重新发送,并确认队列文件被正常清除。适用环境是本地 Codewhale CLI/TUI 会话,依据来自项目运维手册 docs/OPERATIONS_RUNBOOK.md 的 “Incident: Network Outage / Offline Behavior” 一节。
断网期间会发生什么
根据 docs/OPERATIONS_RUNBOOK.md 对离线场景的预期行为描述:
- 离线模式激活期间,新提示词会被排队(queued),而不是直接发送失败;
- 队列状态会持久化到
~/.codewhale/sessions/checkpoints/offline_queue.json; - 队列的每次编辑(
/queue ...)都会持续落盘,因此草稿和已排队提示在重启后仍然存在(见 docs/ARCHITECTURE.md 的 Crash Recovery + Offline Queue 一节)。
这意味着恢复操作的目标很明确:确认队列里到底排了什么,然后把它重新发出去,最后确认持久化文件随之清空。
第一步:用 /queue list 查看离线队列
在 Codewhale TUI 的输入框中直接输入:
/queue listTUI 会以Queued messages ({count}):的标题列出已排队的消息;如果没有任何条目,显示No queued messages。/queue支持的子命令为list、send <n>、edit <n>、drop <n>、clear,<n>是队列条目的编号,从 1 开始。
在另一个终端中,用运维手册 “Quick Triage” 一节给出的方式确认持久化文件确实存在、时间戳在更新:
ls ~/.codewhale/sessions/checkpoints队列文件存在且随排队/编辑动作刷新,说明队列状态没有丢,可以进入下一步。
第二步:恢复连接
运维手册给恢复动作定的顺序是:先恢复连通性,再重发队列(见 docs/OPERATIONS_RUNBOOK.md)。
如果怀疑不是本机网络问题,而是端点本身不可达,可以参考手册 “Turn Hangs or Stream Stops” 一节中的连通性检查命令,以 DeepSeek 端点为例:
curl -sS https://api.deepseek.com/beta/models -H "Authorization: Bearer $DEEPSEEK_API_KEY"其中$DEEPSEEK_API_KEY是环境中已配置的 API key 变量名,来自文档原文;该命令只是验证端点可达,不会修改任何本地状态。
第三步:重新发送队列条目
连通性恢复后,按队列编号逐条重发。运维手册给出的主路径是:
- 输入
/queue edit <n>打开第n条排队消息的编辑,然后按 Enter 发送; - 或者通过正常输入流程把这条提示重新发出去。
TUI 在队列提示中还会给出这两条命令的用法提示:/queue send <n>立即发送第n条,/queue drop <n>删除第n条。如果整批排队内容都不需要了,用/queue clear清空队列。
验证恢复完成
按运维手册的检查项确认两件事:
- 再执行一次
/queue list,确认队列已空(显示No queued messages); - 队列清空后,持久化的队列文件应当被清除。再次执行
ls ~/.codewhale/sessions/checkpoints,确认offline_queue.json已不在。
两个条件都满足,说明离线队列已完整重发并被正常回收。
残留旧队列文件时的清理
如果队列已经清空、但 checkpoints 目录里仍留着旧的offline_queue.json(例如旧版本遗留),可以用 setup 的--clean标志处理(见 docs/CONFIGURATION.md):
codewhale setup --clean它会先列出~/.codewhale/sessions/checkpoints/latest.json和offline_queue.json(若存在);加上--force才会实际删除匹配文件。该操作只针对可再生的检查点文件,不会触碰真实会话历史或任务队列。副作用是删除 checkpoints 目录中的检查点文件,因此只应在确认队列已重发完毕、且你接受放弃这些检查点后使用。对于旧版~/.deepseek/sessions/checkpoints/下的文件不会自动扫描,需要一次性清理时设置CODEWHALE_HOME=~/.deepseek再执行。
如果重发时连接仍然失败,或断网伴随流式输出中断等其他症状,回到 docs/OPERATIONS_RUNBOOK.md 中的 “Turn Hangs or Stream Stops” 与 “Crash Recovery Needed” 两节继续排查。
【免费下载链接】CodewhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/Codewhale
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考