这是「GSD 全景代码解析」专题的第 42 篇。
一、GSD Tools 架构
interface ToolRegistry {
register(tool: ToolDefinition): void;
unregister(name: string): void;
get(name: string): ToolDefinition | undefined;
list(): ToolDefinition[];
}
interface ToolDefinition {
name: string;
description: string;
parameters: JSONSchema;
handler: ToolHandler;
}二、内置工具集
| 工具名 | 功能 | 使用场景 |
|---|---|---|
readFile | 读取文件内容 | 代码审查 |
writeFile | 写入文件 | 代码生成 |
executeCommand | 执行 Shell 命令 | 构建测试 |
searchCode | 代码搜索 | 依赖分析 |
queryState | 查询项目状态 | 状态检查 |
三、状态管理
class StateManager {
private state: Map<string, any> = new Map();
// 基于文件系统的持久化
async persist(path: string): Promise<void> {
const data = Object.fromEntries(this.state);
await fs.writeFile(path, JSON.stringify(data, null, 2));
}
async load(path: string): Promise<void> {
const data = JSON.parse(await fs.readFile(path, 'utf-8'));
this.state = new Map(Object.entries(data));
}
}四、工具与 Agent 集成
graph TD
A[Agent] --> B[Tool Registry]
B --> C[readFile]
B --> D[writeFile]
B --> E[executeCommand]
C --> F[文件系统]
D --> F
E --> G[操作系统]
A --> H[StateManager]
H --> I[.planning/state.json]五、自定义工具开发
// 注册自定义工具
registry.register({
name: 'customAnalysis',
description: '执行自定义代码分析',
parameters: {
type: 'object',
properties: {
filePath: { type: 'string' },
depth: { type: 'number', default: 3 }
},
required: ['filePath']
},
handler: async (params) => {
// 实现逻辑
return analysisResult;
}
});下一篇预告: 第 43 篇《查询层与事件流》