3.0 KiB
3.0 KiB
PROXY_PC_EXEC
背景
新增一个可代理执行的安全命令工具,整体行为尽量保持与现有 pcexec 一致,但允许在受控条件下以指定的代理身份注入 AGENT_ID。
开发想法整理
1. 新建工具 proxy-pcexec
- 新增一个工具:
proxy-pcexec - 目标是复用或对齐现有
pcexec的能力与行为 - 预期执行语义与安全边界尽量和
pcexec保持一致,避免出现两套不同标准
2. 扩展 openclaw.plugin.json
需要在 openclaw.plugin.json 中新增配置字段:
config.proxyAllowlist
兼容性说明:
- 如有需要,也可兼容读取
proxy-allowlist作为别名
用途:
- 用于声明哪些 agent 允许调用
proxy-pcexec - 只有在该 allowlist 中的 agent,才具备调用该工具的权限
建议约束:
config.proxyAllowlist应为 agent 标识列表allowlist仅支持精确匹配,不支持通配、分组或模糊匹配- 若调用方不在 allowlist 中,应直接拒绝调用
- 默认配置应偏保守;未配置时建议视为不允许任何 agent 调用
- 一旦调用方 agent 在 allowlist 中,则允许其代理任意
proxy-for值
3. proxy-pcexec 与 pcexec 的关键区别
proxy-pcexec 的功能与 pcexec 基本一致,核心差异如下:
pcexec
- 直接将调用者的
agent-id注入环境变量AGENT_ID
proxy-pcexec
- 不直接使用调用者的
agent-id作为AGENT_ID - 增加一个必填工具参数:
proxy-for - 实际注入到环境变量
AGENT_ID中的值,取自proxy-for
建议的行为规则
调用参数
proxy-pcexec 至少包含:
commandproxy-for(必填)- 其他参数可尽量与
pcexec保持一致
权限校验
调用 proxy-pcexec 时应至少进行以下校验:
- 校验调用方 agent 是否在
config.proxyAllowlist中(精确匹配) - 校验
proxy-for是否存在且非空 - 不要求
proxy-for必须是已注册或已知 agent-id,可自由填写 - 通过校验后,再执行与
pcexec等价的命令执行流程
说明:
- allowlist 控制的是“谁可以发起代理执行”
- 只要调用方 agent 在 allowlist 中,就允许其代理任意 agent
环境变量注入
AGENT_ID=proxy-forPROXY_PCEXEC_EXECUTOR= 调用方真实agent-idPCEXEC_PROXIED=true- 不应再把原始调用者的
agent-id直接写入AGENT_ID
设计目标
- 保持与
pcexec尽可能一致,降低维护成本 - 通过 allowlist 控制谁可以发起代理执行
- 通过显式
proxy-for参数,避免隐式身份继承 - 让代理身份切换是显式、可审计、可配置的
日志与审计
建议日志至少记录:
executor(调用方真实 agent-id)proxy-for- 最终执行命令
已明确的设计结论
proxy-for可以随意填写,不要求必须是已注册 agent- 日志需要记录
executor和proxy-for config.proxyAllowlist仅支持精确匹配- allowlist 中的 agent 可以代理任意 agent,不需要额外的
proxy-for限制