工具执行系统

wesgine 的工具执行系统管理 Agent 可用工具的注册、发现、分类与调用。


工具六源四层归属

来源归属层生命周期
Tier E 内置工具(read/write/exec/grep…)Layer 2 Kernel编译时固定
Tier C SDK 闭包(cell.Tools().Register)Layer 3 Cell随 Cell
MCP proxy(cell.MCPs().Upsert)Layer 3 Cell随 Cell
Adapter 派生(kb/email/cron/headless-browser…)Layer 3 Cell随 Cell
Sub-agent as ToolLayer 3 Cell随 Cell
Per-run 临时 Tool(RunParams.Tools)Layer 4 Actor单次 Run

Exec 工具

前台执行

输出读取

超时清理


进程安全(INV-EXEC-PROC-01)

一个原语生成子进程:proc.Command(ctx, ...)

// 正确
cmd := proc.Command(ctx, "go", "build", "./...")

// 禁止
cmd := exec.Command("go", "build", "./...")
cmd := exec.CommandContext(ctx, "go", "build", "./...")

proc.Command 确保:


治理链

三步管道

Hardline → Sandbox → Zone
步骤职责
Hardline灾难命令拦截(18 条正则,不可覆盖)
Sandbox数据边界(DenyPaths / NetworkPolicy)
Zone效果分类 + GovernMode 决策

Zone 分类

Zone含义
Green纯读取 → Allow
Yellow写入 → GovernMode 决策
Red危险 → 条件审批

Hardline 不限于 exec

对所有工具检查 command/cmd/script/shell JSON 字段(INV-GOV-01),覆盖 MCP 代理工具。

网络命令检测

NetworkPolicy=deny/internal_only 时按命令位置检测 curl/wget/nc/ssh 等(INV-GOV-02)。


工具 Handle API

cell.Tools() → ToolHandle
  .Register(tool)      // SDK 闭包注册
  .List()              // 工具列表(JSON Schema)
  .Descriptions()      // 工具描述(纯文本)

反模式

禁止正确做法
裸 exec.Commandproc.Command(ctx, ...)
bufio.Scanner 读命令输出ReadSlice 循环 + cappedWriter
改写 proc.Command 返回的 Cancel/WaitDelay不要碰
Hardline 只检查 exec 工具所有工具检查 command 字段