Skip to content

场景系统

场景(Scene)定义 agent 的工作上下文。每个场景是一个独立的工作目录,包含场景专属的配置、知识和成员。

目录结构

scenes/
└── {scene_name}/
    ├── CONTEXT.md              # 场景描述(供 LLM 读取)
    ├── mounted_kbs.json        # 挂载的知识库
    ├── roster.json             # 场景成员列表
    ├── skills/
    │   ├── manifest.json       # 本场景启用的技能
    │   └── {skill_name}.md     # 技能说明
    ├── entries.json            # 通道入口注册
    └── chat/
        └── {scene_id}.jsonl    # 场景聊天记录

CONTEXT.md

场景的"自述"文件,由管理员编写,描述场景的目标、规则、风格等。

示例:

markdown
# 客服场景

## 目标
为用户提供产品咨询和问题解答。

## 规则
- 响应必须在 30 秒内开始
- 使用礼貌用语
- 不回答与技术无关的问题

roster.json

定义哪些 agent 属于本场景:

json
[
  {"agent_id": "alice", "role": "leader"},
  {"agent_id": "bob", "role": "employee"},
  {"agent_id": "carol", "role": "employee"}
]

场景隔离模型

每个场景是独立的上下文环境:

维度隔离方式
文件系统场景目录独立,不共享
知识库mounted_kbs.json 控制可见性
聊天场景内消息只在本场景可见
AgentAgent 可属于多个场景,但每次对话只在一个场景中
记忆全局 MEMORY.md 共享,但场景对话上下文隔离

Agent 分配

Agent 在 agents/config.toml 中通过 scene 字段分配到场景:

toml
[[agents]]
id = "alice"
name = "Alice"
interpreter = "python"

enabled = true
role = "leader"
scene = "default"

每个 agent 启动时通过 --scene 参数知道自己所属场景。

场景生命周期

创建场景 → 编写 CONTEXT.md
         → 配置 roster.json
         → 挂载知识库
         → 注册通道入口
         → 分配 agent

运行中 → 场景对话
       → 动态调整成员

销毁 → 归档场景目录
     → agent 回到未分配状态

基于 MIT 协议开源