feat: parliament seat collaboration loop (0.9.19)
Seats publish via parliament_note, sync pushes on write, member join without stealing the chair, and worker tools are hard-gated when parliament is active. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+21
-15
@@ -1,6 +1,7 @@
|
||||
# Parliament(议会)快速上手
|
||||
|
||||
密码串派生 Realm → 登录夺主席 → 常驻服务同步上下文。同一时刻只有一个主席;换项目清空全部议会上下文。
|
||||
密码串派生 Realm → 登录夺主席 / 加入席位 → 常驻服务密封同步共享上下文。
|
||||
主席是用户入口;成员席位在本机干活并用 `parliament_note` 通报进度。
|
||||
|
||||
## 一次性初始化
|
||||
|
||||
@@ -11,39 +12,44 @@ cst-agent --realm-password-init
|
||||
|
||||
磁盘只存 salt + 公钥,**不存私钥**。
|
||||
|
||||
## 日常:登录即夺主席
|
||||
## 日常:登录夺主席,或加入席位
|
||||
|
||||
```bash
|
||||
export CST_INSTANCE_ID=laptop-a # 可选;默认 chair-local
|
||||
export CST_INSTANCE_ID=laptop-a # 可选;默认用本机 hostname
|
||||
cst-agent --login --realm-label "thinkpad"
|
||||
# 也可:CST_REALM_PASSWORD=… cst-agent --login
|
||||
# TUI: /realm login(夺主席)或 /realm join(不抢主席)
|
||||
```
|
||||
|
||||
效果:
|
||||
|
||||
1. 用密码解锁 Realm,本机成为**唯一主席**(上一主席被交接)
|
||||
2. 写入本地登录票(24h)
|
||||
3. 拉起后台议会服务(发现 + 按 revision 同步 `parliament.context`)
|
||||
1. 用密码解锁 Realm;`--login` / `/realm login` 使本机成为**唯一主席**
|
||||
2. `/realm join` 只登记席位票:主席空缺时才夺椅,否则以 **member** 身份加入
|
||||
3. 写入本地登录票(24h;成员票在主席易主后仍有效,除非本席被剥夺主席)
|
||||
4. 拉起后台议会服务(发现 + 密封通道按 revision 同步 `parliament.context`)
|
||||
|
||||
查看状态:
|
||||
|
||||
```bash
|
||||
cst-agent # TUI: /status 或 /realm
|
||||
# /realm login # TUI 内登录并启服务
|
||||
# /realm stop # 停服务
|
||||
# /realm login|join|stop
|
||||
cst-agent --service-stop
|
||||
```
|
||||
|
||||
密码 Realm 开启后,直接打开 agent 会要求登录(TTY 下可当场输入密码)。
|
||||
|
||||
## 协作模式
|
||||
## 议员协作协议
|
||||
|
||||
`settings.json` 里 `"collaboration": "parliament"`(或环境变量 `CST_COLLABORATION=parliament`)时:
|
||||
席位通过共享 `parliament.context` 协作(不是进程内 `task`/`worker_*`):
|
||||
|
||||
- 提示词不再鼓动 `task` / `worker_start`
|
||||
- 本机用工具直接干活;跨设备靠 Realm peer 席位,而不是进程内子 agent
|
||||
1. 开工前阅读 Environment 里的 Shared parliament context
|
||||
2. 用本机工具完成分配切片
|
||||
3. 跨席相关的进度/议程/结果用工具 **`parliament_note`** 发布(`kind=status|agenda|result|handover`)
|
||||
4. 服务在写入后尽快 dial peers;回合内若 revision 变化,会注入 `[cst] Parliament shared context updated`
|
||||
|
||||
密码 Realm 存在时也会按议会模式注入 Environment(chair / 共享 context / 设备席位)。
|
||||
`settings.json` 的 `"collaboration": "parliament"`(或 `CST_COLLABORATION=parliament`),以及密码 Realm 存在时:
|
||||
|
||||
- **硬禁用** `task` / `worker_*` / runtime 委托工具
|
||||
- 提供 `parliament_note`;提示词说明 chair / member 角色合同
|
||||
|
||||
## 换项目(清场)
|
||||
|
||||
@@ -76,4 +82,4 @@ Alpine 内构建,chair↔member 握手 + 密封通道同步(`sealed=1` / `pe
|
||||
| `--service-stop` | 停服务 |
|
||||
| `--new-project ID` | 清场换项目 |
|
||||
| `--peer-port N` | 登录/服务用的 TCP 端口(默认 9100) |
|
||||
| `--instance ID` | 实例 id(也可用 `CST_INSTANCE_ID`) |
|
||||
| `--instance ID` | 实例 id(也可用 `CST_INSTANCE_ID`;默认 hostname) |
|
||||
|
||||
Reference in New Issue
Block a user