跳到主要内容

工具基类

源码: Tool.ts (30KB)

1. 工具抽象接口

所有工具实现统一的 Tool 接口:

// source/src/Tool.ts
export type Tool<Input, Output, Progress> = {
// 基础属性
readonly name: string
readonly description: string
inputSchema: InputSchema

// 核心方法
call(
input: Input,
callbacks: ToolCallbacks,
abortSignal: AbortSignal
): Promise<ToolResult<Output>>

// 权限与验证
validateInput?(input: Input): Promise<ValidationResult>
checkPermissions?(input: Input): Promise<PermissionResult>

// 可选特性
outputSchema?: z.ZodType<unknown>
isReadOnly?: boolean
}

2. 工具结果类型

type ToolResult<Output> = {
content: Array<TextContent | ImageContent | ErrorContent>
isError?: boolean
}

3. 工具注册总表

tools.ts (17KB) 是所有工具的注册中心:

// source/src/tools.ts
export function getAllTools(): Tool[] {
return [
bashTool(),
fileReadTool(),
fileWriteTool(),
fileEditTool(),
grepTool(),
globTool(),
agentTool(),
mcpTool(),
// ... 45 个工具
]
}

4. 工具分类

类别工具数示例
文件操作5FileRead, FileWrite, FileEdit, NotebookEdit
搜索2Grep, Glob
命令执行3Bash, PowerShell, REPL
Agent5Agent, Task*, Skill
MCP3MCP, ListMcpResources, ReadMcpResource
交互2AskUserQuestion, WebFetch
系统3Config, Sleep, SyntheticOutput

上一节:03 核心引擎 | 下一节:工具注册