GSD Tools 与状态管理

📑 目录

这是「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 篇《查询层与事件流》