# 定时驱动的 Muse 闭环 当前范围:同一主会话、定时推进、持久记忆、静默反思、值得说才开口。其他对话的接入和外部事件触发暂缓。 持续改进这个体验使用 [演进框架](evolution/README.md) 与 [单轮合同](evolution/loop.md)。框架复用此处的原生授权、目标与 routine,不额外创建执行器;账本和文档不构成授权。 ## 使用 在装载 muse + tool-muse 的主会话直接说: ```text 请自主持续推进这个项目。每 30 分钟完成一个可验证的工作单元,最多运行 24 次。 没变化就保持安静;出现新成果、新阻塞或需要我决定的事再告诉我。 保留进展与下一步,等待条件不满足时放慢检查,完成后停止。 ``` 模型在这个直接人类 turn 调用 `muse_autonomy {autonomy:true}`,然后: ```json { "operation": "create", "title": "项目推进", "prompt": "检查当前待办,完成一个已经授权且可验证的工作单元,保存结果与下一步。", "every_seconds": 1800, "max_runs": 24 } ``` 工具名是 `muse_routine`。`list` 查看状态、最近结果、下一步、下次检查和剩余预算;`pause`/`resume` 需要直接人类请求。创建和恢复不能由自动续跑或想法授权。预算耗尽后不会自动扩充。 每个自动轮次通过 `muse_routine_result` 写入 `progress`、`waiting` 或 `done`。waiting 可以指定等待时间(不短于用户节奏,最长一天);done 会停用任务;直接人类请求可在剩余预算内恢复,并保留上次结果。结果工具只能记录当前投递的结果,不能授权新任务。 ## 行为 - 每个会话每次巡检最多接纳一个工作单元。多条任务按最早到期顺序轮转。 - 忙碌或已有用户输入时延后;待办不被提前消费。 - 错过多个周期只补一个单元,下一次仍对齐原来的时间锚点。 - 宿主重启后,原生插件从已授权任务索引找回同一会话;核对原始人类消息与最新授权后运行。 - 人类暂停、撤销和运行预算始终优先。绑定目标的任务是 review,不能替代 goal-round-driver 或绕过 paused/blocked/disarmed/轮数上限。 - 入队后先完成宿主持久化检查点,再保存任务计数;投递标识支持检查点失败后的去重重试。 执行任务会留下活动记录;无到期任务的巡检不创建模型 turn。反思输入没变时不调用模型;没有值得提议的事时不投递主线。 ## 授权与消息来源 新自治授权保存在 `$DSH_HOME/muse/intents/` 的 owner-only 文件,绑定不可变会话日志中的人类消息 ID 与序号。写入前必须通过 live root、当前 driver、当前 turn 的人类来源检查;先刷盘人类输入,再保存授权。 这样新会话不会包含宿主无法识别的必需 `muse/intent` 事件。旧事件仍可在可加载的日志中折叠读取;已经因旧事件被宿主拒绝的会话不会被自动改写或删除。 gate/reflect 先写本地持久 mailbox;插件用 `source.kind=muse` 投递,绝不调用会伪装成人类来源的 `session/prompt`。idea turn 的工具执行被硬性拒绝,只有实际人类输入才能进一步行动。宿主未加载新版插件时,消息保留待投递,不能把 queued 说成 delivered。 这是本机权限模型,尚不具备 Sentinel 的进程隔离和统一出站控制。 ## 反思与记忆 反思读取真实会话尾部、当前目标、全局及当前项目记忆。读取失败就延期,禁止凭空生成事实。结构化输出必须通过类型和敏感内容验证;同内容想法按会话去重。 共享记忆写入只追加新条目,使用写锁;读取不会重写文件。维护脚本支持只读 dry-run,归档事实/教训时先保存归档再更新主文件;稳定偏好和 persona 不因年龄被移除。 ## 验证 ```bash pnpm install pnpm build pnpm -r test pnpm test:timers ``` 测试覆盖真实 AgentLoop + JSONL 冷恢复、第二轮目标推进、迟到合并、忙碌延后、撤销、预算停止、失败重试、完成/等待状态、idea 工具门禁,以及命令行敏感/正常双分支、dry-run、反思尾游标与不变输入的静默分支。 保留的缺口:宿主进程必须在运行;系统休眠时不能运行。普通任务的通知分寸目前仍部分依赖模型遵守提示;需要继续用实际任务评估少打扰和少漏报。未接外部事件、其他会话和外部发送渠道。 ## 真实体感验收 源码测试不代表已经达到 Muse 的长期体感。下一轮在实际 DSH 主会话直接授权一个有限任务,跑 24 小时;三个场景分别检验完成、等待和静默: 1. 有明确输出文件的任务:每轮保存证据和下一步,完成后必须停止。 2. 依赖尚未到达的文件:进入 waiting 后退避,同一阻塞不重复汇报;人类提供条件后能继续。 3. 反思输入无变化:不调用模型;自己的 proposal 及其呈现不能作为新反思材料。 记录可验证工作单元、有效通知、重复通知、缺失通知、模型调用和重启后的重复执行。首先要求零越权、零预算绕过、零重复执行,再判断成果和打扰是否值得。通知分寸目前仍部分依赖模型,不应给未经实跑的体感打百分比。 现有长驻进程已经加载的模块不会因源码重建自动切换;使用新版前需要重新加载插件或重启宿主。验证过的是干净 `muse-scratch` profile 的实际加载,未替正在运行的其他会话重启宿主,也没有用脚本伪造人类授权。