工具基类
源码:
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. 工具分类
| 类别 | 工具数 | 示例 |
|---|---|---|
| 文件操作 | 5 | FileRead, FileWrite, FileEdit, NotebookEdit |
| 搜索 | 2 | Grep, Glob |
| 命令执行 | 3 | Bash, PowerShell, REPL |
| Agent | 5 | Agent, Task*, Skill |
| MCP | 3 | MCP, ListMcpResources, ReadMcpResource |
| 交互 | 2 | AskUserQuestion, WebFetch |
| 系统 | 3 | Config, Sleep, SyntheticOutput |