页面断了,但任务可能仍在;会话还在,但任务也可能已经死了。
最快解法:先保全工作区和日志,再核对 Mac、Harness 进程、子进程与产物状态。只有进程仍在且任务副作用可验证时才继续等待;状态不明时停止自动续跑。
这篇文章适合 3 类人:
- 本地 Mac 合盖或空闲后,发现任务页面消失的个人开发者。
- 通过远程连接运行长构建、测试和后台任务的 Agent 工程师。
- 负责持续在线 Mac 环境、进程恢复和重启验收的运维人员。
先判断:页面断开,还是任务真的停止?
Web UI 断开,不等于 DeepSeek Harness 已停止。浏览器标签页、远程桌面或 SSH 连接都可能单独失效,但 Mac 上的进程仍在运行。反过来,页面重新连上,也不代表原任务还活着。
公开的 Harness 实现通常会区分会话、运行记录、工作区和后台执行状态;但公开文档没有承诺所有任务都能跨越休眠、退出用户、进程退出或系统重启自动续跑。你不能只看“会话还在”这个信号。应先从另一条连接验证机器和进程,再检查日志是否继续产生、工作区是否出现受控变化、产物是否符合任务阶段。
| 观察到的现象 | 可能原因 | 第一核验动作 | 停止条件 |
|---|---|---|---|
| 页面转圈或重新登录 | 浏览器或远程连接断开 | 通过 SSH 或另一远程通道检查 Mac 可达性 | Mac 不可达,先恢复主机连接 |
| 页面显示旧状态 | UI 缓存或会话未刷新 | 查看 Harness 进程、日志更新时间和子进程 | 进程不存在且无新日志 |
| 日志继续追加 | 任务可能仍在执行 | 核对日志内容和工作区差异 | 日志重复、锁异常或产物损坏 |
| 会话可见但没有新事件 | 记录仍在,执行体可能已死 | 检查父进程、子进程、锁文件和退出码 | 无进程、无心跳、无可验证副作用 |
如果你使用的是带有会话持久化或批处理记录的实现,可以先查看其 README 与会话代码说明,确认当前版本到底保存了什么,而不是凭界面名称猜测恢复能力:公开 Harness 的运行与会话说明 和 会话持久化实现。
第一轮核验:只读,不恢复
先执行只读检查,避免恢复动作本身制造第二个任务:
date
who
uptime
ps aux | grep -i 'deepseek\|harness' | grep -v grep
pgrep -alf 'deepseek|harness'
然后进入原工作区,记录当前差异和最新文件:
git status --short
git diff --stat
find . -type f -mmin -30 -print | head -50
日志、锁文件、数据库或任务目录的位置以你的 Harness 配置为准。不要为了“确认一下”删除锁文件,也不要直接再次提交同一个任务。只有当任务具备明确幂等键、阶段检查点和可重复执行边界时,才考虑重跑。
注意: 当前公开资料不能替你证明某个具体版本在唤醒后一定会续跑。恢复结论必须来自同一版本、同一运行模式和同一工作区的实测。
Mac 休眠后 DeepSeek Harness 中断,怎样区分电源问题?
macOS 休眠会改变 CPU、磁盘和网络的可用状态。即使任务没有立即退出,网络请求、子进程推进、文件写入和图形权限也可能出现间隔或失败。系统支持查看电源管理配置、睡眠计划和电源断言,pmset 也能显示当前设置与睡眠唤醒相关信息;但这些信息只能说明系统发生了什么,不能单独证明 Harness 任务能否续跑。
先记录休眠前后的时间关系:
pmset -g custom
pmset -g assertions
pmset -g sched
pmset -g log | tail -100
可参考 macOS 电源管理命令说明。如果任务使用 caffeinate 防止空闲休眠,也要检查该命令绑定的 PID 是否仍然存在。caffeinate -w PID 会把电源断言与指定进程的生命周期关联起来;进程退出后,防休眠断言也会释放,具体行为见 caffeinate 命令手册。
合盖进入休眠后,任务的推进状态应如何确认?
不能直接回答“会”或“不会”。合盖后可能出现 3 种结果:
- Mac 没有真正进入系统休眠,任务继续推进。
- Mac 进入普通休眠,部分进程暂停,唤醒后继续或报错。
- Mac 进一步进入更深的电源状态,网络、凭据访问或子进程恢复失败。
“显示器关闭”与“系统休眠”不是同一件事。接通电源时,你可以在系统设置中检查是否允许显示器关闭后阻止自动休眠;也可以使用有明确生命周期的 caffeinate 包裹任务。相关设置说明见 macOS 睡眠与唤醒设置。
恢复标准不是“终端窗口还在”,而是以下 4 项同时成立:
- Harness 主进程仍有有效 PID。
- 子进程没有持续僵死或反复拉起。
- 日志在唤醒后出现合理的新事件。
- 工作区和产物变化符合当前阶段,且没有重复副作用。
只满足第 1 项,不足以继续等待。
用户退出、远程断线和系统重启,为什么不能混为一谈?
关闭浏览器、断开远程桌面、退出 macOS 用户、系统重启,是四个不同的生命周期事件。它们对用户环境、环境变量、Keychain、图形权限和用户级后台服务的影响不同。
| 行为 | 通常保留什么 | 常见风险 | 恢复判断 |
|---|---|---|---|
| 关闭浏览器 | Mac 和后台进程 | UI 失联,被误判为停止 | 另行检查进程与日志 |
| 断开 SSH 或远程桌面 | 机器与部分终端进程 | 前台进程收到挂断或输入通道消失 | 检查进程父子关系和终端归属 |
| 退出 macOS 用户 | 系统本身 | 用户级 LaunchAgent、Keychain、图形会话变化 | 确认运行身份与凭据可用性 |
| 系统重启 | 磁盘上的文件 | 未提交状态、锁文件、服务未自动启动 | 先验收工作区,再决定重建 |
用户级后台进程如果依赖 LaunchAgent,其加载位置和生命周期与登录用户有关。系统提供的 launchd 后台任务说明明确区分了系统级和用户级启动项。你不能因为任务文件仍然存在,就假定原进程、环境变量和凭据已经恢复。
重启后的远程 Mac,原有会话能否直接接着用?
除非当前版本和你的启动配置明确实现了自动恢复,否则不要默认会。会话记录可能恢复,进程可能没有;进程可能恢复,子进程工作目录、密钥访问或图形权限也可能不同。
重启后的检查顺序应是:
- 确认系统启动时间和当前登录用户。
- 确认 Harness 是否由
launchd、终端脚本或人工命令启动。 - 检查进程、日志、锁文件和工作区差异。
- 验证凭据是否能读取,但不要把凭据打印到日志。
- 对最后一个已知完成阶段执行最小测试。
- 只有满足恢复标准,才继续未完成阶段。
如果已经出现部分文件修改、测试报告缺失、发布动作状态不明,立即停止自动继续。用版本控制差异、产物哈希、任务日志和外部系统记录建立可信基线。不要让 Agent 自己推断“上一阶段大概已经完成”。
第二步:按任务幂等性决定等待、恢复还是重建
你可以把任务分为 3 类:
- 允许中断重跑:纯检查、只读分析、可覆盖生成的临时文件。确认旧进程已死后,可以清理临时目录再重跑。
- 必须保留进程:长时间编译、持续流式调用、依赖本地缓存或交互式工具的任务。优先防止休眠,并使用明确的进程监督。
- 需要人工审批:发布、写入外部系统、修改生产配置、发送不可撤销请求。状态不明时必须人工接管。
优点与缺点要同时看:
✅ 继续等待:不重复消耗、不覆盖中间结果。前提是进程、日志和副作用都可验证。
✅ 从检查点恢复:比整任务重建更快。前提是检查点包含输入、阶段和产物校验。
❌ 直接重提任务:操作简单,但可能重复提交、重复发布或覆盖人工修改。
❌ 只恢复 Web UI:界面恢复不代表执行上下文恢复,最容易造成误判。
建议为每个长任务保留一个最小状态文件,至少记录任务 ID、工作区提交、当前阶段、最后成功产物、外部副作用和人工审批点。这样唤醒后核验的是事实,而不是聊天记录里的自然语言描述。
用这份清单验收一次真正可持续的后台任务
不要只测试“页面刷新后能不能看到任务”。你需要覆盖断线、休眠、进程退出和重启四类故障。下面的清单可以直接作为验收记录:
- [ ] 记录任务 ID、工作区提交、启动命令和运行用户。
- [ ] 断开 Web UI,等待一段任务事件后,从另一条连接核对进程和日志。
- [ ] 让 Mac 进入一次受控休眠,唤醒后检查最后事件、子进程和产物。
- [ ] 手动终止 Harness 主进程,确认会话记录不会被误判为正在执行。
- [ ] 重启 Mac,确认启动服务、用户会话、凭据和工作区都能被单独验收。
- [ ] 对可恢复任务验证检查点;对不可恢复任务验证安全失败。
- [ ] 检查重复提交、重复发布、锁文件残留和半写入文件。
- [ ] 明确任务的停止条件、人工审批点和重建命令。
- [ ] 将一次完整测试记录保存到项目运维文档,而不是只留在聊天窗口。
跨工作时段运行的 Agent 任务,不能只依赖“平时没出过问题”。短期任务可以在接通电源时使用受控的 caffeinate,并让命令结束时自动释放断言。不要永久关闭所有电源管理,也不要把“防休眠”当成进程恢复方案。它只能降低系统休眠概率,不能解决用户退出、网络断开、凭据失效或进程崩溃。
如果任务要跨越工作时段运行,采购时应关注的不只是 Mac 型号,而是 4 个交付条件:是否明确保持在线、是否允许独立用户运行、是否能保留日志和工作区、是否能在重启后执行验收。你可以先阅读 KVMNODE 的 Mac 远程使用入口,再根据使用区域查看 Mac mini M4 租赁与交付说明。
本地 Mac 的优点是数据和物理环境可控,适合短时开发、需要本地接口或必须人工观察的任务。缺点是合盖、断电、用户退出和个人网络都可能打断后台执行。临时远程桌面也不是独立运行环境:连接断开不一定停任务,但无法确认状态时,你仍然要承担重复执行风险。
当任务已经通过四项中断测试,并且每次恢复都有明确证据,继续使用现有 Mac 是合理的。若任务必须跨工作时段持续运行,且不能接受休眠、用户会话变化或重启后的不确定性,就应考虑迁移到具备持续在线、独立进程责任和重启验收流程的远程 Mac 环境。KVMNODE 的 Mac 方案更适合把“机器在线”与“任务可恢复”分开管理,但最终是否租赁,仍应以你的任务是否需要长期占用、物理接口或人工审批为准。