Session 会话
Session 的定位
Session 是用户与 Agent 交互的独立工作空间。每个 Session 是一颗完整的树:
- 对话历史(消息流)
- 输入资料(上传的文件 / 引用的知识库片段)
- 产出工件(生成的文档 / 报告 / 代码)
- Ledger(Orchestrator 的执行账本,逐步记录 action / result / confidence)
- 技能激活列表(当前启用的 Skill)
- 协作成员(谁能读、谁能写、谁能触发工具)
生命周期
Rendering diagram…
| 状态 | 说明 |
|---|---|
| Create | 用户手动创建或通过 Event Trigger 自动创建 |
| Active | 正在交互 |
| Compacted | 长对话被智能压缩,核心信息保留 |
| Pruned | 不活跃,旧消息被修剪(数据仍保留,不进上下文) |
| Archived | 归档,不再推进 |
Ledger:Session 的"心跳账本"
Ledger 附着在 Session 上,逐 Round 记录:
- action — Agent 下一步决策(调工具 / 委派 / 请求用户)
- result — 这一步的结果(含 token 成本)
- confidence — 系统自评的置信度(0–1)
- trace_id — 关联到 Observability 的 trace
低置信度会触发自动回溯或人工介入提示,而不是强行往下跑。详见 Agent 双循环。
上下文压缩(Compaction)
长对话会顶到模型 context 上限(32K / 128K 不等)。Compaction 把旧的"流水对话"压缩成结构化摘要,核心事实 / 决策 / 未完成项不丢:
Rendering diagram…
压力分级(Token Budget):
| 级别 | 含义 | 行为 |
|---|---|---|
| 🟢 GREEN | < 50% 上下文 | 正常 |
| 🟡 YELLOW | 50–75% | 开始启动 Compaction |
| 🟠 ORANGE | 75–90% | 激进压缩,丢弃低价值消息 |
| 🔴 RED | > 90% | 强制压缩 + 用户告警 |
并行 Session
同一用户可以同时打开多个 Session,分别处理不同任务。各 Session独立隔离:
- 独立的 Agent 状态
- 独立的输入资料与产出
- 独立的技能激活列表
- 独立的 token budget
例:专利代理师同时处理 3 个案件,每个案件一个 Session,互不影响。
跨 Session 能力
Graft 嫁接(跨 Session 引用成果)
新 Session 可以把另一个 Session 的产出"嫁接"进来,避免重复工作。典型:变更影响分析会话嫁接追溯建立会话的全链数据。详见 Graft。
Memory 共享(通过 MemoryOS)
Session 结束时,系统自动提取 fact / preference / error_pattern 沉淀到 LTM,其他 Session 自动享受。详见 Memory。
Hook 协同
跨 Session 的 Hook 可以让一个 Session 的某个动作触发另一个 Session 的行为。详见 Hook。
安全与隔离
- 租户隔离:不同租户的 Session 物理隔离,跨租户一律不可见
- 用户隔离:同一租户下用户间 Session 默认不可见,除非显式分享
- 权限模型:Session 所有者 + 协作者 + 只读成员三级权限
- 审计:每次 Session 操作(打开、修改、分享、归档)都进审计日志
相关文档
- 📖 Agent 与多代理 — Orchestrator 执行于 Session 之上
- 📖 Memory 记忆 — Session 结束后的记忆沉淀
- 📖 Graft 跨会话嫁接
- 📖 Storage 存储与隔离 — Session 文件的物理落地
- 🧩 源码入口:
AgentFlow/src/session/·api/apps/conversation_app.py