Traycer AI 计划模式工具综述
这个文档定义了Traycer AI在Plan Mode(计划模式)下可用的工具集合。这些工具专注于代码库分析、文件操作和实现计划制定,帮助AI深入理解代码库并生成详细的实施计划。
核心工具分类
文件操作工具
read_file: 读取指定路径文件的内容,支持大文件的结构化摘要read_partial_file: 读取文件的特定行范围,提高大文件处理效率list_dir: 列出目录内容,用于发现和理解文件结构
搜索工具
file_search: 基于文件路径的模糊搜索grep_search: 基于正则表达式的快速文本搜索file_outlines: 获取指定目录中所有文件的符号大纲
代码导航工具
find_references: 查找函数、方法、类等的引用位置go_to_definition: 跳转到符号的定义位置go_to_implementations: 查找抽象类或函数符号的实现
分析和诊断工具
get_diagnostics: 获取文件的诊断信息,包括错误、警告和建议web_search: 执行网络搜索获取外部知识和文档think: 用于复杂推理或头脑风暴的思考工具
计划制定工具
agent: 创建专门用于特定任务的代理hand_over_to_approach_agent: 将任务移交给方法代理以编写高层次方法explanation_response: 提供清晰的解释和可选的Mermaid图表
与Phase Mode的区别
Plan Mode工具集与Phase Mode类似,但有以下关键区别:
- 增加了
think工具用于复杂推理 - 增加了
agent和hand_over_to_approach_agent工具用于计划制定和任务分配 - 部分工具的参数要求更加严格
这些工具帮助Traycer AI在Plan Mode下深入分析代码库,制定详细的实施计划,并创建专门的代理来执行具体任务。
plan_mode_tools.json
json
{
"list_dir": {
"description": "列出目录的内容。这是用于发现的快速工具,在使更有针对性的工具(如代码库搜索或文件读取)之前使用。有助于在深入研究特定文件之前了解文件结构。可用于探索代码库。",
"parameters": {
"path": {
"description": "要列出其内容的目录的路径。使用绝对路径。",
"sanitizePath": true,
"type": "string"
},
"recursive": {
"description": "是否递归列出文件。使用'true'进行递归列出,'false'或省略则仅列出顶层。",
"type": "boolean"
}
},
"required": [
"path",
"recursive"
]
},
"file_search": {
"description": "基于文件路径的模糊匹配进行快速文件搜索。如果您知道部分文件路径但不知道其确切位置,请使用此工具。响应将限制为10个结果。如果需要进一步筛选结果,请使您的查询更具体。推测性地批量执行多个可能有用的搜索总是更好的选择。",
"parameters": {
"pattern": {
"description": "要搜索的模糊文件名",
"type": "string"
}
},
"required": [
"pattern"
]
},
"web_search": {
"description": "执行网络搜索以查找给定查询的相关信息和文档。此工具有助于收集对解决任务有用的外部知识,特别是用于获取最新信息或文档。",
"parameters": {
"query": {
"description": "要在网络上查找的搜索查询。",
"type": "string"
}
},
"required": [
"query"
]
},
"grep_search": {
"description": "快速的基于文本的正则表达式搜索,可在文件或目录中查找精确的模式匹配,利用ripgrep命令进行高效搜索。结果将以ripgrep的样式格式化,并可配置为包含行号和内容。为避免输出过多,结果上限为50个匹配项。使用包含模式按文件类型或特定路径筛选搜索范围。这最适合查找精确的文本匹配或正则表达式模式。在查找特定字符串或模式方面比代码库搜索更精确。当我们需要在某组目录/文件类型中搜索确切的符号/函数名等时,首选此工具而不是代码库搜索。",
"parameters": {
"includePattern": {
"anyOf": [
{
"description": "要包含的文件的Glob模式(例如,'*.ts'用于TypeScript文件)。如果未提供,将搜索所有文件(*)。",
"type": "string"
},
{
"type": "null"
}
]
},
"regex": {
"description": "要搜索的正则表达式模式。",
"type": "string"
}
},
"required": [
"regex",
"includePattern"
]
},
"think": {
"description": "使用此工具来思考某事。它不会获取新信息或对存储库进行任何更改,只是记录想法。当需要复杂推理或头脑风暴时使用它。",
"parameters": {
"thought": {
"description": "您的想法。",
"type": "string"
}
},
"required": [
"thought"
]
},
"read_file": {
"description": "读取指定路径文件的内容。当您需要检查任何现有文件的内容时使用此工具,例如分析代码、审查文本文件或从配置文件中提取信息。对于大文件,系统将提供结构化摘要,包含行范围和每个部分的简要描述,而不是完整内容。您可以在审阅摘要后使用 read_partial_file 工具请求特定行范围。自动从 PDF 和 DOCX 文件中提取原始文本。可能不适用于其他类型的二进制文件,因为它将原始内容作为字符串返回。推测性地批量读取多个可能有用的文件总是更好的选择。",
"parameters": {
"paths": {
"description": "要读取的文件路径。使用绝对路径。",
"items": {
"additionalProperties": false,
"properties": {
"includeDiagnostics": {
"default": false,
"description": "是否通过内置LSP分析代码来收集诊断信息,包括错误、警告和lint建议。仅当需要识别和解决特定问题时返回true。",
"type": "boolean"
},
"path": {
"sanitizePath": true,
"type": "string"
}
},
"required": [
"path",
"includeDiagnostics"
],
"type": "object"
},
"jsonParse": true,
"type": "array"
}
},
"required": [
"paths"
]
},
"read_partial_file": {
"description": "从指定路径的文件中读取特定的行范围。当您只需要检查文件的部分内容而不是全部内容时使用此工具,这对于只需要关注代码、配置文件或文本文档的特定部分非常有用。为每个路径指定startLine和numberOfLines属性,以精确控制要读取的文件部分。当您只需要特定部分时,这比读取整个文件更有效率。",
"parameters": {
"paths": {
"description": "要读取的文件的路径。每个项目都是一个对象,包含路径以及可选的startLine和endLine属性以指定行范围。",
"items": {
"additionalProperties": false,
"properties": {
"includeDiagnostics": {
"default": false,
"description": "是否通过内置LSP分析代码来收集诊断信息,包括错误、警告和lint建议。仅当需要识别和解决特定问题时返回true。",
"type": "boolean"
},
"numberOfLines": {
"description": "从起始行开始读取的行数。允许值为300、500、700或900",
"type": "number"
},
"path": {
"description": "要读取的文件的路径。使用绝对路径。",
"sanitizePath": true,
"type": "string"
},
"startLine": {
"description": "开始读取的行号(从1开始)。可选 - 如果省略,则从第1行开始。",
"type": "number"
}
},
"required": [
"path",
"numberOfLines",
"startLine",
"includeDiagnostics"
],
"type": "object"
},
"jsonParse": true,
"type": "array"
}
},
"required": [
"paths"
]
},
"file_outlines": {
"description": "获取指定目录顶层所有文件的符号大纲。当您需要从高层次了解多个文件中的代码时,这尤其有用。",
"parameters": {
"path": {
"description": "要获取其文件大纲的目录的路径。使用绝对路径。",
"sanitizePath": true,
"type": "string"
}
},
"required": [
"path"
]
},
"find_references": {
"description": "查找函数、方法、类、接口等的引用(用法、提及等)。使用此工具可以跳转到代码库中给定符号被使用的所有位置。软件开发人员广泛使用此功能以精确地探索大型代码库。当您需要查找符号(LSP跟踪的任何内容)的引用时,请优先使用此工具而不是codebase_search。您需要提供符号被提及的任何地方的文件和行号。查找引用工具将自动将您带到相关位置。这适用于项目内部或外部的位置。",
"parameters": {
"line": {
"anyOf": [
{
"description": "符号被提及的行号。此字段是可选的。如果省略,它将匹配文件中此符号的第一次出现。",
"type": "number"
},
{
"type": "null"
}
]
},
"path": {
"anyOf": [
{
"description": "符号被提及的文件的路径。如果省略,它将匹配聊天中带有此符号的最后一个文件。使用绝对路径。",
"sanitizePath": true,
"type": "string"
},
{
"type": "null"
}
]
},
"symbol": {
"description": "您要为其查找引用的符号的名称。",
"type": "string"
}
},
"required": [
"symbol",
"path",
"line"
]
},
"go_to_definition": {
"description": "转到函数、方法、类、接口等的定义。使用此工具可以跳转到符号的定义。软件开发人员广泛使用此功能以精确地探索大型代码库。当您需要查找符号(LSP跟踪的任何内容)的定义时,请优先使用此工具而不是codebase_search。您可以提供符号被提及的任何地方的文件和行号。此工具也可以仅对符号起作用,尽管提供文件和符号会给出更精确的结果。转到定义工具将自动将您带到相关位置。这适用于项目内部或外部的位置。",
"parameters": {
"line": {
"anyOf": [
{
"description": "符号被提及的行号。此字段是可选的。如果省略,它将匹配文件中此符号的第一次出现。",
"type": "number"
},
{
"type": "null"
}
]
},
"path": {
"anyOf": [
{
"description": "符号被提及的文件的路径。如果省略,它将匹配聊天中带有此符号的最后一个文件。使用绝对路径。",
"sanitizePath": true,
"type": "string"
},
{
"type": "null"
}
]
},
"symbol": {
"description": "您要为其查找定义的符号的名称。",
"type": "string"
}
},
"required": [
"symbol",
"path",
"line"
]
},
"go_to_implementations": {
"description": "使用内置LSP‘转到实现’给定的抽象类或函数符号。",
"parameters": {
"line": {
"anyOf": [
{
"description": "符号被提及的行号。此字段是可选的。如果省略,它将匹配文件中此符号的第一次出现。",
"type": "number"
},
{
"type": "null"
}
]
},
"path": {
"anyOf": [
{
"description": "符号被提及的文件的路径。如果省略,它将匹配聊天中带有此符号的最后一个文件。使用绝对路径。",
"sanitizePath": true,
"type": "string"
},
{
"type": "null"
}
]
},
"symbol": {
"description": "您要为其查找实现的符号的名称。",
"type": "string"
}
},
"required": [
"symbol",
"path",
"line"
]
},
"get_diagnostics": {
"description": "通过使用内置LSP分析代码,检索与glob模式匹配的多个文件的诊断信息,包括错误、警告和lint建议。使用此功能可以识别和解决跨多个匹配特定模式的文件的问题。",
"parameters": {
"directories": {
"description": "要从中检索诊断信息的目录。使用绝对路径。如果您想搜索工作区中的所有文件,请提供打开的工作区目录。",
"items": {
"description": "要搜索文件的目录。使用绝对路径。",
"type": "string"
},
"type": "array"
},
"includePattern": {
"anyOf": [
{
"description": "要包含的文件的Glob模式(例如,'*.ts'用于TypeScript文件)。如果未提供,将搜索所有文件(*)。",
"type": "string"
},
{
"type": "null"
}
]
},
"severity": {
"anyOf": [
{
"description": "要检索的诊断信息的严重性级别。",
"enum": [
"Error",
"Warning",
"Information",
"Hint"
],
"type": "string"
},
{
"description": "如果未提供,则返回所有严重性级别。",
"type": "null"
}
]
}
},
"required": [
"directories",
"includePattern",
"severity"
]
},
"agent": {
"description": "为特定任务创建专门的代理",
"parameters": {
"description": {
"description": "任务的简短(3-5个词)描述",
"type": "string"
},
"directoryMaps": {
"description": "作为任务良好起点的目录的完整路径列表。代理将被给予文件夹中的文件和子目录列表。不要假设路径,只有在以前的对话中遇到过路径时才添加路径。",
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"description": "代理的名称。将其命名为\"代理 <标识符> - <其角色的3-5个字母描述>\"",
"type": "string"
},
"prompt": {
"description": "代理要执行的任务",
"type": "string"
},
"relevantFiles": {
"description": "与任务相关的文件的完整路径列表。代理将被提供文件的内容。不要假设路径,只有在以前的对话中遇到过路径时才添加路径。使用绝对路径。",
"items": {
"sanitizePath": true,
"type": "string"
},
"type": "array"
}
},
"required": [
"description",
"prompt",
"name",
"directoryMaps",
"relevantFiles"
]
},
"hand_over_to_approach_agent": {
"description": "使用此工具表示您已探索了代码库的高级结构,现在准备移交给方法代理以编写高级方法。",
"parameters": {
"reason": {
"description": "所选targetRole的理由,解释为什么这种探索深度是合适的。",
"type": "string"
},
"targetRole": {
"description": "在起草逐文件计划之前需要多少探索。planner:任务非常小且直接,根本不需要更多探索,现在可以提出完整的文件逐文件计划;architect:在编写文件逐文件计划之前需要方法和更详细的探索;engineering_team:任务非常大,可能需要多方面的分析,涉及各种组件之间的复杂交互,然后才能编写方法并制定文件逐文件计划。",
"enum": [
"engineering_team",
"architect",
"planner"
],
"type": "string"
}
},
"required": [
"targetRole",
"reason"
]
},
"explanation_response": {
"description": "- 您勤奋而彻底!您在解释中从不留下任何模棱两可的部分。\n- 提供清晰、简洁、易于理解的解释。\n- 使用markdown格式以提高可读性。",
"parameters": {
"containsImplementationPlan": {
"description": "当解释提供可以作为文件修改直接实施的具体、可操作的指导时,设置为true,无论其是作为分析、建议还是明确的指令呈现。",
"type": "boolean"
},
"explanation": {
"description": "提供对主题或概念的清晰而全面的解释。优化可读性并使用markdown格式。",
"type": "string"
},
"mermaid": {
"description": "生成一个Mermaid图来可视化概念或流程。该图应简单易懂,专注于关键方面。",
"type": "string"
}
},
"required": [
"explanation",
"mermaid",
"containsImplementationPlan"
]
}
}