Hosted Workspace 运维恢复
为原始 Linux durable worker 释放残留工作区租约,保留原 Shell 不确定性。
This page has not been translated into English yet. The original Chinese version is shown below.
此流程仅用于原主机上的 Linux durable local-process worker:Hosted Shell capture 不完整,且 Workspace lease 仍被占用。恢复只让物理工作区可供新 Session 使用,不会完成、重放或认证原 Shell 调用。
维护进程前提
使用 qwen-managed-agent-server-*-operator-recovery.jar,以服务 OS 账号在原 worker 主机运行,使用原服务数据库、Runtime credential key 和 QWEN_MANAGED_AGENT_RUNTIME_STATE_DIRECTORY。先应用服务数据库迁移。
维护环境需设置 QWEN_MANAGED_AGENT_RUNTIME_DURABLE_LOCAL_PROCESS=true、QWEN_MANAGED_AGENT_RUNTIME_PROVISIONER=local-process、QWEN_MANAGED_AGENT_RUNTIME_OPERATOR_RECOVERY_ENABLED=true。该进程不启动 HTTP listener、scheduler 或 worker;凭据与数据库环境不对外公开。
Inspect 与 Prepare
从 run 记录取得 runtimeBindingId 和 generation;记录不可用时,由有权限 DBA 只读查询 qwen_runtime_binding,按 tenant/workspace 核对匹配的 binding 和 lease,不创造替代身份。
java -jar qwen-managed-agent-server-*-operator-recovery.jar inspect <bindingId> <generation>
java -jar qwen-managed-agent-server-*-operator-recovery.jar prepare <bindingId> <generation> <holderKey> '<incident reason>'Inspect 后保存 holderKey、Runtime Session、Shell call、captureStatus/reason。要求已保存 producer_lost Shell 结果和精确仍持有的 lease。Prepare 返回 recoveryId,设 OPERATOR_RECOVERY fence;原本 LOST 保持 LOST,不释放工作区。
相同服务 OS 账号和原因可重复 prepare,不同账号、原因、generation 或 holder 会拒绝。operator_id 记录 OS 账号,真人操作员另记事故记录。
隔离所有写入者
停止原 worker,检查分离子进程和外部 supervisor,阻止自动重启并验证。进程组已死、管道 EOF、时间流逝或父 PID 消失都不够;prepare 到 complete 之间重启主机也不能免除此检查。
不能建立该事实时保留 fence。软件可检查注册身份和 SQL holder,却不能证明任意逃逸后代都已停止,操作员声明承担这部分证明责任。
提交证据文件
在私有 Runtime state 目录的直接子级创建普通非符号链接 UTF-8 JSON 文件,最多 8KiB、权限 0600,精确字段为 version、recoveryId、verifiedAt、method、actions、restartPrevention。
version 为 1,restartPrevention 为 true;verifiedAt 必须是实际 UTC 核验时间,不早于 prepare,且不能超过维护主机时钟未来五分钟。actions 写实际完成的停止和防重启步骤,不能先填一份“已检查”模板。
java -jar qwen-managed-agent-server-*-operator-recovery.jar complete <recoveryId> <absoluteEvidenceFile>Complete 校验精确保存的身份;同 boot 检查 worker 不存在,跨重启检查 boot 变化,然后写 tombstone、保存不可变声明并仅回收原 holder。崩溃或临时数据库失败可用同一文件重试,改声明会拒绝。成功输出 completed。
恢复后验证
启动新 Session 验证工作区可用,原轮次单独检查,其部分输出和未知影响仍未知。不能清 SQL 表或注册文件绕过拒绝;缺失/损坏注册或旧 ephemeral worker 不支持此流程,需保留证据交维护者。