diff --git a/internal/room/tools/definitions.go b/internal/room/tools/definitions.go new file mode 100644 index 0000000..5144a67 --- /dev/null +++ b/internal/room/tools/definitions.go @@ -0,0 +1,130 @@ +package tools + +import "github.com/sashabaranov/go-openai" + +var FileTools = []openai.Tool{ + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "glob", + Description: "模式匹配查找文件,支持 * ** ? 等通配符", + Parameters: `{ + "type": "object", + "properties": { + "pattern": { + "type": "string", + "description": "glob 模式,如 **/*.go, *.ts" + } + }, + "required": ["pattern"] + }`, + }, + }, + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "grep", + Description: "在文件中搜索内容,支持正则表达式", + Parameters: `{ + "type": "object", + "properties": { + "pattern": { + "type": "string", + "description": "正则表达式搜索模式" + }, + "path": { + "type": "string", + "description": "搜索目录路径" + }, + "include": { + "type": "string", + "description": "文件过滤,如 *.go, *.ts" + } + }, + "required": ["pattern"] + }`, + }, + }, + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "read_file", + Description: "读取文件内容,支持大文件分段读取", + Parameters: `{ + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "文件名(相对于 workspace)" + }, + "offset": { + "type": "integer", + "description": "起始行号(从 0 开始)" + }, + "limit": { + "type": "integer", + "description": "读取行数,默认 100" + } + }, + "required": ["filename"] + }`, + }, + }, + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "edit_file", + Description: "编辑文件内容,使用字符串替换", + Parameters: `{ + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "文件名(相对于 workspace)" + }, + "old_string": { + "type": "string", + "description": "要替换的原始内容" + }, + "new_string": { + "type": "string", + "description": "替换后的新内容" + } + }, + "required": ["filename", "old_string", "new_string"] + }`, + }, + }, + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "write_file", + Description: "写入或创建文件", + Parameters: `{ + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "文件名(相对于 workspace)" + }, + "content": { + "type": "string", + "description": "文件内容" + } + }, + "required": ["filename", "content"] + }`, + }, + }, + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "list_workspace", + Description: "列出工作区的所有文件", + Parameters: `{ + "type": "object", + "properties": {} + }`, + }, + }, +}