4f80e81b0b
P0-1 统一审批: 高风险工具在 spawn 前统一走审批,与后续消息类型
(result/http/db) 无关,堵住 stdio→result 绕过审批的漏洞。
移除 http/db 分支内重复审批(入口已授权)。
P0-4 env 白名单: spawn 前 cmd.env_clear(),仅注入 PATH + spec 声明
的 env 变量,避免工具读取宿主全部 API key/数据库密码。
tool_manager spec 补充 HOME/CARGO_HOME/RUSTUP_HOME 供 cargo 使用。
P1-10 结构化结果: 引入 ToolRunOutcome{Ok,Err{kind,message}} 与
ToolErrorKind 枚举,executor/registry dispatch 返回结构化结果。
daemon 与 CLI 据此判断成败,删除脆弱的 is_tool_error 字符串前缀
匹配;失败时记录 kind 便于追踪。
37 lines
1.2 KiB
YAML
37 lines
1.2 KiB
YAML
name: tool_manager
|
|
desc: 创建、修改和构建本地能力工具。用于给助手新增或更新 tools 目录下的 stdio Rust 工具;高风险操作,执行前需要用户确认。
|
|
type: stdio
|
|
tool: tool_manager
|
|
path: /target/release/tool_manager
|
|
risk_level: high
|
|
timeout_secs: 300
|
|
env:
|
|
- HOME
|
|
- CARGO_HOME
|
|
- RUSTUP_HOME
|
|
params:
|
|
- name: action
|
|
required: true
|
|
desc: 操作类型:create_tool、update_tool 或 build_tool
|
|
- name: tool_name
|
|
required: true
|
|
desc: 工具名称,只允许字母、数字、下划线和短横线
|
|
- name: description
|
|
required: false
|
|
desc: 工具说明,创建或更新 spec 时使用
|
|
- name: rust_code
|
|
required: false
|
|
desc: 完整的 src/main.rs Rust 源码;省略时 create_tool 会生成默认模板
|
|
- name: params
|
|
required: false
|
|
desc: 参数列表数组,每项包含 name、required、desc
|
|
- name: risk_level
|
|
required: false
|
|
desc: 已弃用,tool_manager 创建/更新的工具一律强制 high risk,传入值将被忽略
|
|
- name: timeout_secs
|
|
required: false
|
|
desc: 新工具超时时间秒数,默认 30
|
|
- name: overwrite
|
|
required: false
|
|
desc: create_tool 目标已存在时是否覆盖,默认 false
|