# 持续自主运行 连接页的「持续自主运行」默认开启。有配置目标时,在同一会话、同一原目标中持续观察、拆解、执行与验证,不再因累计 30 次模型请求或 40 轮停止。首次目标留空仍只连接游戏,不启动推理。整个目标完成、用户暂停或断开仍会停止继续执行,不会把旧的已完成目标重开。 原生 DSH 的目标日志必须使用有限整数窗口。本插件通过公开 GoalService 按需延长下一窗口,保留原 goalId、sessionId、roundsStarted、目标进度、记忆与工具回执。不是写一个很大的伪无限次数,也不重置计数或更换会话。生命周期把累计上限标为 null,将原生 windowLimit 单独展示。 配置目标及之后从 DSH 原生会话创建并明确激活的新目标都适用。仅采用当前身体所属 Agent 的原生 active/armed 目标作为续跑授权;游戏消息不能替主人创建目标,也不会因此恢复用户的暂停或未知阻塞。 单个 ReAct 回合默认在 30 个模型步骤后的下一安全准入点让出控制,短暂等待后继续同一目标;不取消已受理身体动作,也不截断生成。连续张望、原地走动或没有游戏动作时,先提示改进,再在边界休整并自主恢复。休整只写元数据,10–60 秒内有界等待;危险、私聊或点名可以提前唤醒。未知动作结果仍读取原任务,不重复提交。有效进展时不应用这个等待;它不代替模型做游戏决策。 高级配置: ```json { "goal": "自主生存,逐步建立营地并记录真实发现", "autonomy": { "mode": "continuous", "roundWindow": 40, "stepWindow": 30 } } ``` 显式 continuous 模式覆盖旧 maxGoalCalls / maxGoalRounds 的累计限制。高级旧配置显式写了这些字段时仍按 bounded 解释,迁移需添加上面的 autonomy.mode;不会偷偷放宽用户明确配置的成本限额。需要有限预算时,关闭界面开关,或设置 `autonomy.mode: "bounded"` 后使用 maxGoalCalls / maxGoalRounds。 只自动恢复本插件持有的短暂休整和原生 `round-limit`,不替用户恢复其明确暂停,不越过权限、未知阻塞或持久化错误。窗口编辑和休整之间有可恢复准备记录,恢复时核对原目标和 revision;原会话历史不删。已被旧版暂停、且没有归属证据的目标仍需用户在 DSH 原生目标面板明确恢复一次,随后按新模式继续;不能把所有暂停都当旧版次数限制。 验证包含 1200 个累计轮次的窗口延长、100 轮原生 DSH 目标日志回放与恢复、30 步安全让出、休整恢复、危险唤醒、用户暂停/替换、后续原生目标、编辑后崩溃及持久化中途断开。全部是零外部模型、零 Minecraft 登录的隔离验证,不能据此声称已验证长期实服自主收益。共享核心和可视化修复分别锁定构建,不重载现役 Cortico 或角色。 ## 持续目标的结束权限 `preview.63` 起,continuous 模式的模型只声明宿主目标读取,阶段操作仍走游戏能力;主人保留原生 UI/API 控制。重复权限拒绝的恢复和加载边界见[持续目标权限](continuous-goal-authority.md)。 continuous 模式下,游戏内一个阶段的完成不会结束宿主的长期目标,原始游戏回执保持不变。模型工具 `update_goal complete` 不能自行结束长期目标;主人仍可使用 DSH 原生目标面板结束目标,或明确要求暂停。bounded 模式保留普通完成行为。 DSH goal service rc.4 的 `resume` 无法恢复已经 `complete` 的目标;编辑也不改变阶段,新建会改变身份和计数。本适配器不会通过删除重建或改写历史假称原目标已恢复。恢复同一个已完结目标需要框架提供公开的主人恢复接口,当前缺少该能力时应明确报告。源码修复与现役恢复分别验收。 ## 原始历史读取 `dsh_history` 先等待原生会话刷新,再通过 SessionPersistence 的只读句柄按原始 offset/limit 取完整记录,默认 5 条、最多 20 条。取消信号同时传给打开和读取过程,结束或失败后关闭本次句柄。记录内容、序号、冻结状态与缺失信息都由原生持久层提供;适配器不维护第二份历史缓存。冷读取与重复读取的成本由持久层实现决定,优化提供者需要单独加载,单独更新本插件不会替换已加载的原生持久层代码。