v3.0.7 安全架构说明 最后更新: 2026-05-24
RoundTable 是一个本地运行的子代理编排系统。所有专家 Agent 通过 OpenClaw Gateway 的 sessions_spawn 机制创建,在 clean context 中执行。讨论主题和上下文由用户主动提供,不向外部第三方服务传输。
- 实现:
roundtable_engine.py中_execute_agent()使用sessions_spawn(runtime="subagent", mode="run") - 效果: 每个专家 Agent 在独立上下文中执行,不继承主 session 历史,降低信息泄露面
- 超时控制: 每个子 agent 有
timeoutSeconds限制,防止无限挂起 - 工具范围: 子 agent 继承 Gateway 默认工具集。RoundTable 讨论 Agent 仅需要文本生成能力,不调用 exec/browser 等系统级工具
- 安全承诺: 讨论 Agent 的 task 内容为纯文本提示词,不含用户原始数据或敏感路径
- 实现:
model_selector.py从 gateway config 动态加载可用模型 - 策略: 不硬编码 provider/model 名称,用户通过 gateway 配置控制模型选择
- 配置文件路径:
~/.enhance-claw/或~/.openclaw/(Windows/Linux/macOS 自动适配)
- 本版本不涉及: RoundTable 不使用
subprocess、eval()、exec()— 所有交互通过sessions_spawn/sessions_send完成 - 通知模块:
roundtable_notifier.py仅发送进度通知摘要,不传输讨论内容
- 提示词模板:
prompts/目录下的模板均为本地静态文件,不包含可执行代码 - 专家人格:
agent_selector.py加载的专家配置不包含隐藏指令或 prompt injection
- 读取:
agent_selector.py读取本地prompts/模板和专家配置文件;model_selector.py读取 gateway model config — 均为本地固定路径 - 写入:
roundtable_engine.py:363将讨论报告写入self.output_dir(由调用方设定,默认./roundtable_output/) - 路径安全: 所有文件路径经
pathlib.Path处理,写入前_sanitize_topic()去除特殊字符 - 权限: 子 agent 继承父进程文件权限,不扩大
- _meta.json: ClawHub 发布时自动生成的版本元数据(含
ownerId、publishedAt),非本 skill 源文件
| 依赖 | 用途 | 风险 |
|---|---|---|
asyncio |
异步编排 | 低 — Python 标准库 |
pathlib |
路径处理 | 低 — Python 标准库 |
os |
环境变量/文件系统 | 低 — 仅读配置文件 |
json |
配置文件解析 | 低 — Python 标准库 |
re |
文本处理 | 低 — Python 标准库 |
datetime |
时间记录 | 低 — Python 标准库 |
dataclasses / enum |
数据结构 | 低 — Python 标准库 |
本 skill 不依赖任何第三方网络请求库或数据外传服务。仅与 OpenClaw Gateway(本地)交互。
| 变量 | 文件 | 用途 | 是否必需 |
|---|---|---|---|
ROUNDTable_MODELS |
model_selector.py:74 |
手动指定模型列表,格式 "model1:tag1,tag2;model2:tag3" |
可选 |
OPENCLAW_STATE_DIR |
model_selector.py:222 |
覆盖 OpenClaw 状态目录路径 | 可选 |
- 所有环境变量均为可选配置,不影响基本功能
- 模型路由默认从 gateway config 自动加载
- 通知功能通过
roundtable_notifier.py的可选钩子实现
如遇到安全问题:
-
停止所有子 agent
openclaw gateway stop
-
更新到最新版本
clawhub update claw-roundtable-skill
版本: v3.0.7 — 安全说明与代码实现一一对应