状态与长期运行

本阶段解释 nanobot 如何跨越一次 Turn 保留信息,以及长任务、定时任务和后台 Subagent 如何重新进入核心 Agent 流程。

对应源码

主题源码
Session 和回放nanobot/session/manager.py、nanobot/session/keys.py
Compaction、Memory 和 Dreamnanobot/agent/memory.py、nanobot/agent/autocompact.py、nanobot/templates/agent/dream.md
Goal 和 Continuationnanobot/session/goal_state.py、nanobot/session/turn_continuation.py
Cron 和 Heartbeatnanobot/cron/、nanobot/agent/cron_turns.py
Subagentnanobot/agent/subagent.py、nanobot/agent/tools/spawn.py

学习目标

完成本阶段后,你应当能够区分:

  • Session 消息;
  • Session metadata;
  • ContextBuilder 的本轮上下文;
  • memory/history.jsonl;
  • memory/MEMORY.md;
  • AutoCompact;
  • Token Consolidation;
  • Dream;
  • Goal;
  • Continuation;
  • Cron;
  • Subagent。

阅读顺序

  1. Session 文件与回放边界
  2. Compaction、Memory 与 Dream
  3. Goal 与 Continuation
  4. Cron 与 Heartbeat
  5. Subagent 生命周期

总体关系

flowchart TD
    T["一次 Turn"] --> S["Session JSONL"]
    S --> H["下一次 Turn 的 Session history"]
    S --> C["Consolidator"]
    C --> J["memory/history.jsonl"]
    J --> D["Dream"]
    D --> M["SOUL.md / USER.md / MEMORY.md"]
    M --> CTX["ContextBuilder"]
    H --> CTX

    G["Goal state<br/>Session metadata"] --> CTX
    G --> CONT["Internal Continuation"]
    CONT --> T

    CR["Cron / Heartbeat"] --> IN["InboundMessage"]
    IN --> T

    SA["Subagent"] --> R["独立 AgentRunner"]
    R --> ANN["结果 InboundMessage"]
    ANN --> T

最重要的边界

“长期运行”不是一个大模块

Goal、Cron 和 Subagent 使用不同机制:Goal 是 Session metadata;Continuation 是内部入站消息;Cron 是持久化调度;Subagent 是后台 AgentRunner。不要把它们统一描述成“多 Agent 调度器”。

下一步

阅读 Session 文件与回放边界。