工具全景

wescode 的 Agent 通过工具(Tool)与代码库交互。工具不是插件——它们是 Agent 的手和眼,决定了 Agent 能做什么、做得多好。

三层架构

工具三层架构

wescode 的工具来自三个层次,由近到远:

Layer A:Device Agent(IDE 能力)

这些是 VS Code 编辑器自身提供的能力,通过 wescode 的 Device Agent 暴露给引擎。模型看不到它们的存在——它们透明地增强了标准工具。

能力实现方式模型是否感知
Buffer Overlay拦截 read → 返回编辑器内存内容❌ 透明
Exec 三分类拦截 exec → 按命令类型分流到不同终端❌ 透明
Editor 状态注入焦点文件 / 光标位置到上下文❌ 透明
Diff 预览编辑后在编辑器中显示 inline diff❌ UI 层

零 tool schema footprint——这些能力不增加模型的工具列表,不消耗额外的 schema token。

Layer B:wesgine Tier E(引擎内置)

wesgine 引擎编译时内置的标准工具,所有 Cell 可用:

工具用途
read读取文件内容
edit编辑文件(精确替换)
write写入新文件
apply_patch应用多行 patch
exec执行终端命令
grep / search_files搜索文件内容
glob / find_files按模式查找文件
web_search网络搜索
memory读写跨会话记忆
plan任务规划与跟踪
delegate_task委派子任务给子 Agent

Layer C:wescode 专属工具

wescode 自己注册到 Cell 的工具,服务于编程特有的场景:

类别工具用途
CKGckg_query查询调用图、符号引用
CKGckg_impact分析修改的影响范围
CKGckg_orphans发现未被调用的死代码
验证verify_build触发编译验证
验证verify_test运行指定测试

这些工具通过 cell.Tools().Register() 装配到 workspace Cell,不同工作区独立。

工具设计原则

wescode 的工具遵循几个不成文但重要的规则:

1. description 是给模型看的

工具的 description 字段不是文档注释——它是模型决定"用不用这个工具"的唯一依据。好的 description 应该:

2. 参数越少越好

每个参数都增加模型犯错的概率。能从上下文推断的信息不要让模型填。

3. 探索与行动分离

只读工具(read、grep、ckg_query)和写入工具(edit、write、exec)有不同的 CycleDetector 阈值。探索性调用允许更多次数,因为大仓里需要读很多文件才能定位问题。

exec 三分类路由

exec 三分类路由

终端命令不是一视同仁。wescode 根据命令性质自动路由到不同执行方式:

分类路由用户可见典型命令
检索 / 探索Go os/exec 静默执行不可见rg、git status、ls、cat
验证 / 构建只读终端 tab [AI] ...可查看go build、npm test、cargo test
服务 / 交互VS Code 集成终端完整交互npm start、docker compose up

路由自动判定:user_visible=true → 交互;isVerificationCommand() → 验证;默认 → 静默。你不需要手动指定。

下一步