Reuse libcstcore.a for tests with -MMD incremental deps; idle-backoff the parliament seat loop; defer curl init and cache settings; add systemd helper. Co-authored-by: Cursor <cursoragent@cursor.com>
3.4 KiB
3.4 KiB
Parliament(议会)快速上手
密码串派生 Realm → 登录夺主席 / 加入席位 → 常驻服务密封同步共享上下文。
主席是用户入口;成员席位在本机干活并用 parliament_note 通报进度。
一次性初始化
# 交互输入密码,或事先 export CST_REALM_PASSWORD=…
cst-agent --realm-password-init
磁盘只存 salt + 公钥,不存私钥。
日常:登录夺主席,或加入席位
export CST_INSTANCE_ID=laptop-a # 可选;默认用本机 hostname
cst-agent --login --realm-label "thinkpad"
# TUI: /realm login(夺主席)或 /realm join(不抢主席)
效果:
- 用密码解锁 Realm;
--login//realm login使本机成为唯一主席 /realm join只登记席位票:主席空缺时才夺椅,否则以 member 身份加入- 写入本地登录票(24h;成员票在主席易主后仍有效,除非本席被剥夺主席)
- 拉起后台议会服务(发现 + 密封通道按 revision 同步
parliament.context)
查看状态:
cst-agent # TUI: /status 或 /realm
# /realm login|join|stop
cst-agent --service-stop
常驻服务(推荐)
登录后会 fork 后台席位进程;也可用 systemd --user 托管前台循环(崩溃自动拉起):
# 安装脚本附带的辅助命令
cst-agent-service install-unit
# 在 ~/.config/cst-agent/parliament.env 写入:
# CST_REALM_PASSWORD=…
# CST_INSTANCE_ID=my-laptop
systemctl --user enable --now cst-agent-parliament.service
cst-agent-service status
或手动前台:CST_REALM_PASSWORD=… cst-agent --service-fg。
密码 Realm 开启后,直接打开 agent 会要求登录(TTY 下可当场输入密码)。
议员协作协议
席位通过共享 parliament.context 协作(不是进程内 task/worker_*):
- 开工前阅读 Environment 里的 Shared parliament context
- 用本机工具完成分配切片
- 跨席相关的进度/议程/结果用工具
parliament_note发布(kind=status|agenda|result|handover) - 服务在写入后尽快 dial peers;回合内若 revision 变化,会注入
[cst] Parliament shared context updated
settings.json 的 "collaboration": "parliament"(或 CST_COLLABORATION=parliament),以及密码 Realm 存在时:
- 硬禁用
task/worker_*/ runtime 委托工具 - 提供
parliament_note;提示词说明 chair / member 角色合同
换项目(清场)
cst-agent --new-project my-app
清空共享上下文、撤销主席与登录票,并停止本机服务。Realm 密钥保留。
传输安全
Peer 在 Realm 证书互鉴后做 临时 X25519 密钥交换,后续议会上下文同步走 XChaCha20-Poly1305(Monocypher,无需 OpenSSL)。握手前的发现/证书交换仍是明文元数据。
Docker 冒烟
bash scripts/docker_parliament_test.sh
Alpine 内构建,chair↔member 握手 + 密封通道同步(sealed=1 / peer_sync)。
相关标志
| 标志 | 作用 |
|---|---|
--realm-password-init |
创建密码 Realm |
--login |
登录 + 夺主席 + 启服务 |
--service / --service-fg |
仅启服务 |
--service-stop |
停服务 |
--new-project ID |
清场换项目 |
--peer-port N |
登录/服务用的 TCP 端口(默认 9100) |
--instance ID |
实例 id(也可用 CST_INSTANCE_ID;默认 hostname) |