# 配置目标与会话重置 修复适配器 rc.20 的两个独立生命周期问题,通用 Minecraft 身体和 Cortico 主框架无需改动。 - 原来 `goals.get()` 返回已完成目标,`!goal` 永远不成立。现在仅在连接/重载时,没有目标,或原目标为 complete / blocked / paused 且与配置目标不同时,创建并持久化新目标。目标创建沿用官方 DSH GoalService,初始为 active / armed,原目标留在会话日志中。paused / blocked 必须先走官方 `goals.clear` 并持久化清除记录;complete 可直接替换。均不更换 Agent、会话或 `sessionKey`。 - `newSession: true` 每次明确提交都生成新 `sessionKey`,不依赖能力预设变化或已有会话文件。普通保存、重连及恢复保留当前 key。 - 连接页始终提供独立的新会话选项;已有会话显示“重置会话并保存配置”。运行中先使用“停止并修改配置”,不会在运行的推理或身体动作中途切换会话。仅保存不连接、不创建 Agent、不调用模型。 重置通过切换会话目录实现,不删除旧会话。服务器、账号、人格、皮肤、登录凭据和服务器笔记仍在同一个账号目录。新会话不继承旧目标与旧对话;后续连接使用当前配置目标。更换已有能力预设时的原有保护仍保留,需要明确新会话并清空旧任务。 相同文案的已完成、暂停或受阻目标不会被自动重建,active 目标也不被不同配置替换。游戏聊天或其他世界事件不能触发本配置变更,也不获得创建目标的主人权限。该检查不放到轮询或模型工具回调中。原有有限轮数、空转防护和同一目标的显式预算恢复不变。 ## 隔离验证 `test/configured-goal-native.test.mjs` 使用未修改的官方 DSH GoalService、SessionStore 和投影注册器:先完成“和玩家互动”,再激活配置“自主生存”,保存后由原生日志恢复并重新激活同一目标;日志保留两个目标。完成同一个配置目标后重连不重复创建。另实际复现 paused / blocked 无法直接 create,再验证 clear → create 在原会话完成。 `test/goal-control.test.mjs` 覆盖不同已完成目标、相同已完成目标、暂停、受阻、未完成目标、默认轮数、持久化失败及原有显式预算恢复。 `test/quick-setup.test.mjs` 覆盖不换预设的会话轮换、没有旧文件时的轮换、普通保存与重启稳定性,以及账号、人格、凭据、笔记和旧会话保留。 `test/session-reset-ui.test.mjs` 执行打包后的前端事件处理器,核对按钮与独立复选框发送新会话保存请求、成功后清除复选状态,并在运行时禁止重置。 这些验证不调用游戏模型、不连接真实游戏服务器,不修改现役 Agent。它们证明目标与会话契约,不能当成长期自主游戏效果或存活率的测量。 ## 回滚 停止本插件拥有的 Agent 后切回此前的插件版本。重置没有删除旧目录;需要回到旧会话时,可在停用状态恢复备份的 `quick-setup.json`(保留原 `sessionKey`,旧格式可能没有此字段)。不要复制其他账号的会话或凭据。重新连接前核对原动作结果,避免重复执行。