# 气旋 Cyclone · 工作室

气旋是 4torm 的**常驻工作室**模式。它把一批 Agent 安置成固定「工位」长期协作,既有对流会议的群聊能力,又有季风私聊的延续性——合二为一。

> **会议 vs 工作室**:[对流](./convection)是一次性会议(开完即走);气旋是常设工作室(固定角色工位、可单独私聊、可同时开多个群聊房间、共享一块工作区)。

## 核心概念

| 概念 | 说明 |
|------|------|
| **工位 Seat** | 岗位抽象(不是 Agent 本身):绑定一个 Agent + 角色提示词 + 一句职责名片。同一个 Agent 可同时坐多个工位,各自独立互不串味。 |
| **工位私聊** | 每个工位都有独立、常驻的 1:1 私聊会话,随时单独对话。 |
| **群聊房间 Room** | 工作室内按需开多个房间,选 `build`(可读写工具)或 `plan`(只读工具)模式,指定参与工位及发言顺序。 |
| **会长 Chair** | 工作室指定的参谋 Agent,**不占工位、不发言**。在**每个群聊房间**的右侧抽屉里,作为该房间的场外参谋单独和你对话——纯文本、不调用工具,只看当前这个房间的近期讨论。 |
| **工位互联 Contact** | 工位之间可用 `contact` 工具直接喊话协作(带环路检测与深度上限)。 |

工作室可指定一个会长 Agent;进入任一群聊房间后,右侧会有可折叠的「会长 · 参谋」抽屉(也可在抽屉里随时设置 / 更换会长)。

## 创建工作室

1. 侧栏切换到 **气旋 · 工作室**
2. 新建工作室,填写名称
3. (可选)指定**会长 Agent**——它不占工位、不发言,只在群聊房间的会长抽屉里给你参谋(也可之后再设)
4. 创建后进入工作室布局:左侧导航(工位 / 群聊房间)、中间主面板;进入群聊房间后,右侧有可折叠的会长抽屉

## 工位 Seat

工位是「岗位」,不是 Agent 本身。一个工位 = 一个 Agent + 一段角色提示词覆盖 + 一句职责名片(duty)。

- **添加工位** —— 选一个已注册 Agent,填职责名片(如「技术方案设计」),可覆盖该工位下的角色提示词
- **同一 Agent 多工位** —— 同一个 Agent 可同时坐多个工位,各工位记忆与角色独立,互不串味
- **工位配置** —— 工位面板可改职责、角色覆盖、参与设置

### 工位私聊

每个工位都有独立、常驻的 1:1 私聊会话:

- 点击某工位 → 进入它的私聊面板,像季风一样多轮对话
- 工位私聊有自己的记忆,不与群聊混合
- 私聊流式输出;切到别的工位再切回,内容不丢(前端流式注册表在后台续接)

## 群聊房间 Room

工作室内可按需开多个群聊房间,每个房间独立:

1. 新建房间,填名称
2. 选**模式**:
   - `build` —— 参与者可用可读写工具
   - `plan` —— 参与者仅可用只读工具(适合只讨论不动手的规划)
3. 指定**参与工位**及**发言顺序**
4. 进入房间面板:人类发言 → 参与工位按序串行回复(每个工位独立 ReAct 循环)

房间共享工作室的一块工作区,工具调用过程在气泡中折叠展示。

### 工位互联 Contact

群聊中的参与工位可用 `contact` 工具直接喊话工作室里的其他工位:

- 用于把讨论结论同步给某个工位,或向其索取进展
- 联络过程以工具调用卡片形式展示
- 带**环路检测与深度上限**,防止工位之间无限互相喊话

## 会长私聊

会长是你的场外参谋,**不占工位、不在群里发言**:

- 在群聊房间里,右侧的「会长 · 参谋」抽屉可展开 / 收起;抽屉头部可设置 / 更换 / 清空会长 Agent(工作室级设置)
- 会长**纯文本、不调用任何工具**(不写文件、不 `contact`),只给文字建议
- 会长**只读当前这个房间**的近期讨论快照——看不到别的房间,也看不到工位私聊
- 每个房间有各自独立的会长对话,**按房间隔离**,换房间不串台;切走不掐流

> 典型用法:几个工位在某个房间里推进方案,你随时展开该房间的会长抽屉问「他们这思路有没有坑」「下一步该让谁动手」,会长基于这个房间的讨论给你出主意。

## 数据存储

工作室 / 工位 / 房间 / 会长会话均在 `data/cyclone/` 下,**不入仓库**(已 gitignore):

```
data/cyclone/
└── {workshopId}/
    ├── meta.json         ← 工作室元数据(含会长 Agent 设置)
    ├── workspace/        ← 共享工作区(所有工位 / 房间共用)
    ├── seats/            ← 各工位(私聊记忆 + 角色覆盖 + 职责)
    └── rooms/            ← 各群聊房间(公共消息流 + 参与工位 + 模式 + 会长对话)
```

## 注意点

- **没指定会长的工作室**——房间里的会长抽屉会引导你去设置,设不设都不影响其他功能
- **同一 Agent 多工位**——记忆与角色相互独立,放心复用
- **房间模式** `plan` 与 `build` 决定参与工位能否动手写文件,按议题性质选
