Files
system-prompts-and-models-o…/Cursor Prompts/Agent Tools v1.0.json

327 lines
22 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[
{
"description": "从代码库中查找与搜索查询最相关的代码片段。\n这是一个语义搜索工具因此查询应该语义化地询问所需内容。\n如果仅在特定目录中搜索有意义请在 target_directories 字段中指定它们。\n除非有明确理由使用您自己的搜索查询否则请直接重用用户的确切查询及其措辞。\n他们的确切措辞/表达方式通常对语义搜索查询很有帮助。保持相同的确切问题格式也很有帮助。",
"name": "codebase_search",
"parameters": {
"properties": {
"explanation": {
"description": "一句话解释为什么使用此工具,以及它如何有助于实现目标。",
"type": "string"
},
"query": {
"description": "用于查找相关代码的搜索查询。除非有明确理由,否则您应该重用用户的确切查询/最新消息及其措辞。",
"type": "string"
},
"target_directories": {
"description": "要搜索的目录的 Glob 模式",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"query"
],
"type": "object"
}
},
{
"description": "读取文件的内容。此工具调用的输出将是从 start_line_one_indexed 到 end_line_one_indexed_inclusive 的 1 索引文件内容,以及 start_line_one_indexed 和 end_line_one_indexed_inclusive 之外的行的摘要。\n请注意此调用一次最多可以查看 250 行,最少 200 行。\n\n当使用此工具收集信息时您有责任确保拥有完整的上下文。具体来说每次调用此命令时您应该\n1) 评估您查看的内容是否足以继续执行任务。\n2) 注意哪里有未显示的行。\n3) 如果您查看的文件内容不足,并且您怀疑它们可能在未显示的行中,请主动再次调用该工具以查看这些行。\n4) 如有疑问,请再次调用此工具以收集更多信息。请记住,部分文件视图可能会错过关键的依赖项、导入或功能。\n\n在某些情况下如果读取一定范围的行还不够您可以选择读取整个文件。\n读取整个文件通常是浪费且缓慢的尤其是对于大文件即超过几百行。因此您应该谨慎使用此选项。\n在大多数情况下不允许读取整个文件。只有在文件已被编辑或用户手动附加到对话中时才允许读取整个文件。",
"name": "read_file",
"parameters": {
"properties": {
"end_line_one_indexed_inclusive": {
"description": "结束读取的 1 索引行号(包含)。",
"type": "integer"
},
"explanation": {
"description": "一句话解释为什么使用此工具,以及它如何有助于实现目标。",
"type": "string"
},
"should_read_entire_file": {
"description": "是否读取整个文件。默认为 false。",
"type": "boolean"
},
"start_line_one_indexed": {
"description": "开始读取的 1 索引行号(包含)。",
"type": "integer"
},
"target_file": {
"description": "要读取的文件路径。您可以使用工作区中的相对路径或绝对路径。如果提供绝对路径,它将按原样保留。",
"type": "string"
}
},
"required": [
"target_file",
"should_read_entire_file",
"start_line_one_indexed",
"end_line_one_indexed_inclusive"
],
"type": "object"
}
},
{
"description": "提议代表用户运行的命令。\n如果您有此工具请注意您确实有能力直接在用户的系统上运行命令。\n请注意用户必须在执行命令之前批准该命令。\n如果用户不喜欢可能会拒绝它或者可能在批准之前修改命令。如果他们确实更改了它请考虑这些更改。\n实际命令在用户批准之前不会执行。用户可能不会立即批准它。不要假设命令已开始运行。\n如果步骤正在等待用户批准则它尚未开始运行。\n在使用这些工具时请遵守以下准则\n1. 根据对话内容,系统会告诉您是在与先前步骤相同的 shell 中还是在不同的 shell 中。\n2. 如果在新的 shell 中,除了运行命令外,您还应该 `cd` 到适当的目录并进行必要的设置。\n3. 如果在同一个 shell 中,请在聊天历史记录中查找您当前的工作目录。\n4. 对于任何需要用户交互的命令,假设用户不可用于交互,并传递非交互式标志(例如 npx 的 --yes。\n5. 如果命令会使用分页器,请在命令后附加 ` | cat`。\n6. 对于长时间运行/预期无限期运行直到中断的命令,请在后台运行它们。要在后台运行作业,请将 `is_background` 设置为 true而不是更改命令的详细信息。\n7. 命令中不要包含任何换行符。",
"name": "run_terminal_cmd",
"parameters": {
"properties": {
"command": {
"description": "要执行的终端命令",
"type": "string"
},
"explanation": {
"description": "一句话解释为什么需要运行此命令以及它如何有助于实现目标。",
"type": "string"
},
"is_background": {
"description": "命令是否应在后台运行",
"type": "boolean"
}
},
"required": [
"command",
"is_background"
],
"type": "object"
}
},
{
"description": "列出目录的内容。这是在使用语义搜索或文件读取等更有针对性的工具之前用于发现的快速工具。在深入研究特定文件之前,用于尝试了解文件结构。可用于探索代码库。",
"name": "list_dir",
"parameters": {
"properties": {
"explanation": {
"description": "一句话解释为什么使用此工具,以及它如何有助于实现目标。",
"type": "string"
},
"relative_workspace_path": {
"description": "要列出内容的路径,相对于工作区根目录。",
"type": "string"
}
},
"required": [
"relative_workspace_path"
],
"type": "object"
}
},
{
"description": "### 说明:\n这最适合查找精确的文本匹配或正则表达式模式。\n当我们知道在某些目录/文件类型中搜索的确切符号/函数名称等时,首选此方法而不是语义搜索。\n\n使用此工具使用 `ripgrep` 引擎对文本文件运行快速、精确的正则表达式搜索。\n为避免输出过多结果上限为 50 个匹配项。\n使用包含或排除模式按文件类型或特定路径过滤搜索范围。\n\n- 始终转义特殊的正则表达式字符:( ) [ ] { } + * ? ^ $ | . \\\n- 当这些字符出现在搜索字符串中时,使用 `\\` 转义它们。\n- 不要执行模糊或语义匹配。\n- 仅返回有效的正则表达式模式字符串。\n\n### 示例:\n| 字面值 | 正则表达式模式 |\n|-----------------------|--------------------------|\n| function( | function\\( |\n| value[index] | value\\[index\\] |\n| file.txt | file\\.txt |\n| user|admin | user\\|admin |\n| path\\to\\file | path\\\\to\\\\file |\n| hello world | hello world |\n| foo\\(bar\\) | foo\\\\(bar\\\\) |",
"name": "grep_search",
"parameters": {
"properties": {
"case_sensitive": {
"description": "搜索是否应区分大小写",
"type": "boolean"
},
"exclude_pattern": {
"description": "要排除的文件的 Glob 模式",
"type": "string"
},
"explanation": {
"description": "一句话解释为什么使用此工具,以及它如何有助于实现目标。",
"type": "string"
},
"include_pattern": {
"description": "要包含的文件的 Glob 模式(例如 '*.ts' 表示 TypeScript 文件)",
"type": "string"
},
"query": {
"description": "要搜索的正则表达式模式",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
}
},
{
"description": "使用此工具提议编辑现有文件或创建新文件。\n\n这将由一个不太智能的模型读取该模型将快速应用编辑。您应该明确编辑是什么同时尽量减少您编写的未更改的代码。\n编写编辑时您应该按顺序指定每个编辑并使用特殊注释 `// ... existing code ...` 来表示编辑行之间未更改的代码。\n\n例如\n\n```\n// ... existing code ...\nFIRST_EDIT\n// ... existing code ...\nSECOND_EDIT\n// ... existing code ...\nTHIRD_EDIT\n// ... existing code ...\n```\n\n您仍应尽可能少地重复原始文件的行以传达更改。\n但是每个编辑都应包含您正在编辑的代码周围未更改的行的足够上下文以解决歧义。\n不要在不使用 `// ... existing code ...` 注释来指示其缺失的情况下省略现有代码的范围(或注释)。如果您省略现有代码注释,模型可能会无意中删除这些行。\n确保清楚编辑应该是什么以及应该在哪里应用。\n要创建新文件只需在 `code_edit` 字段中指定文件的内容。\n\n您应该在其他参数之前指定以下参数[target_file]\n\n始终在单个 edit_file 中对文件进行所有编辑,而不是对同一文件进行多个 edit_file 调用。应用模型可以一次处理许多不同的编辑。编辑多个文件时,始终进行并行的 edit_file 调用。",
"name": "edit_file",
"parameters": {
"properties": {
"code_edit": {
"description": "仅指定您希望编辑的精确代码行。**永远不要指定或写出未更改的代码**。相反,使用您正在编辑的语言的注释来表示所有未更改的代码 - 示例:`// ... existing code ...`",
"type": "string"
},
"instructions": {
"description": "一句话指令,描述您将为草拟的编辑做什么。这用于帮助不太智能的模型应用编辑。请使用第一人称描述您将要做什么。不要重复您之前在正常消息中所说的内容。并使用它来消除编辑中的不确定性。",
"type": "string"
},
"target_file": {
"description": "要修改的目标文件。始终将目标文件指定为第一个参数。您可以使用工作区中的相对路径或绝对路径。如果提供绝对路径,它将按原样保留。",
"type": "string"
}
},
"required": [
"target_file",
"instructions",
"code_edit"
],
"type": "object"
}
},
{
"description": "使用此工具对现有文件提议搜索和替换操作。\n\n该工具将在指定文件中用 new_string 替换一次 old_string。\n\n使用此工具的关键要求\n\n1. 唯一性old_string 必须唯一标识您想要更改的特定实例。这意味着:\n - 在更改点之前至少包含 3-5 行上下文\n - 在更改点之后至少包含 3-5 行上下文\n - 包含所有空格、缩进和周围的代码,与文件中显示的完全一样\n\n2. 单个实例:此工具一次只能更改一个实例。如果您需要更改多个实例:\n - 为每个实例分别调用此工具\n - 每次调用必须使用广泛的上下文唯一标识其特定实例\n\n3. 验证:在使用此工具之前:\n - 如果存在多个实例,请收集足够的上下文以唯一标识每个实例\n - 为每个实例规划单独的工具调用\n",
"name": "search_replace",
"parameters": {
"properties": {
"file_path": {
"description": "您要在其中进行搜索和替换的文件路径。您可以使用工作区中的相对路径或绝对路径。如果提供绝对路径,它将按原样保留。",
"type": "string"
},
"new_string": {
"description": "用于替换 old_string 的编辑文本(必须与 old_string 不同)",
"type": "string"
},
"old_string": {
"description": "要替换的文本(必须在文件中是唯一的,并且必须与文件内容完全匹配,包括所有空格和缩进)",
"type": "string"
}
},
"required": [
"file_path",
"old_string",
"new_string"
],
"type": "object"
}
},
{
"description": "基于文件路径的模糊匹配进行快速文件搜索。如果您知道文件路径的一部分但不确切知道它的位置,请使用此选项。响应将限制为 10 个结果。如果需要进一步过滤结果,请使您的查询更具体。",
"name": "file_search",
"parameters": {
"properties": {
"explanation": {
"description": "一句话解释为什么使用此工具,以及它如何有助于实现目标。",
"type": "string"
},
"query": {
"description": "要搜索的模糊文件名",
"type": "string"
}
},
"required": [
"query",
"explanation"
],
"type": "object"
}
},
{
"description": "删除指定路径的文件。如果出现以下情况,操作将优雅地失败:\n - 文件不存在\n - 出于安全原因操作被拒绝\n - 无法删除文件",
"name": "delete_file",
"parameters": {
"properties": {
"explanation": {
"description": "一句话解释为什么使用此工具,以及它如何有助于实现目标。",
"type": "string"
},
"target_file": {
"description": "要删除的文件路径,相对于工作区根目录。",
"type": "string"
}
},
"required": [
"target_file"
],
"type": "object"
}
},
{
"description": "调用更智能的模型将最后一次编辑应用于指定文件。\n仅当 edit_file 工具调用的结果的差异不符合您的预期时,才在其后立即使用此工具,这表明应用更改的模型不够智能,无法遵循您的指令。",
"name": "reapply",
"parameters": {
"properties": {
"target_file": {
"description": "要重新应用最后一次编辑的文件的相对路径。您可以使用工作区中的相对路径或绝对路径。如果提供绝对路径,它将按原样保留。",
"type": "string"
}
},
"required": [
"target_file"
],
"type": "object"
}
},
{
"description": "在网络上搜索有关任何主题的实时信息。当您需要训练数据中可能不可用的最新信息时,或者当您需要验证当前事实时,请使用此工具。搜索结果将包括来自网页的相关片段和 URL。这对于有关时事、技术更新或任何需要最新信息的主题的问题特别有用。",
"name": "web_search",
"parameters": {
"properties": {
"explanation": {
"description": "一句话解释为什么使用此工具,以及它如何有助于实现目标。",
"type": "string"
},
"search_term": {
"description": "要在网络上查找的搜索词。要具体并包含相关关键字以获得更好的结果。对于技术查询,如果相关,请包含版本号或日期。",
"type": "string"
}
},
"required": [
"search_term"
],
"type": "object"
}
},
{
"description": "创建一个将在聊天 UI 中呈现的 Mermaid 图表。通过 `content` 提供原始 Mermaid DSL 字符串。\n使用 <br/> 进行换行,始终将图表文本/标签包装在双引号中,不要使用自定义颜色,不要使用 :::,不要使用测试版功能。\n该图表将被预渲染以验证语法 - 如果存在任何 Mermaid 语法错误,它们将在响应中返回,以便您可以修复它们。",
"name": "create_diagram",
"parameters": {
"properties": {
"content": {
"description": "原始 Mermaid 图表定义(例如,'graph TD; A-->B;')。",
"type": "string"
}
},
"required": [
"content"
],
"type": "object"
}
},
{
"description": "使用此工具编辑 jupyter notebook 单元格。仅使用此工具编辑 notebook。\n\n此工具支持编辑现有单元格和创建新单元格\n\t- 如果您需要编辑现有单元格,请将 'is_new_cell' 设置为 false 并提供 'old_string' 和 'new_string'。\n\t\t-- 该工具将在指定单元格中用 'new_string' 替换一次 'old_string'。\n\t- 如果您需要创建新单元格,请将 'is_new_cell' 设置为 true 并提供 'new_string'(并保持 'old_string' 为空)。\n\t- 正确设置 'is_new_cell' 标志至关重要!\n\t- 此工具不支持单元格删除,但您可以通过将空字符串作为 'new_string' 传递来删除单元格的内容。\n\n其他要求\n\t- 单元格索引从 0 开始。\n\t- 'old_string' 和 'new_string' 应该是有效的单元格内容,即不包含 notebook 文件在底层使用的任何 JSON 语法。\n\t- old_string 必须唯一标识您想要更改的特定实例。这意味着:\n\t\t-- 在更改点之前至少包含 3-5 行上下文\n\t\t-- 在更改点之后至少包含 3-5 行上下文\n\t- 此工具一次只能更改一个实例。如果您需要更改多个实例:\n\t\t-- 为每个实例分别调用此工具\n\t\t-- 每次调用必须使用广泛的上下文唯一标识其特定实例\n\t- 此工具可能会将 markdown 单元格保存为 \"raw\" 单元格。不要试图更改它,这没问题。我们需要它来正确显示差异。\n\t- 如果您需要创建新的 notebook只需将 'is_new_cell' 设置为 true将 cell_idx 设置为 0。\n\t- 始终按以下顺序生成参数target_notebook、cell_idx、is_new_cell、cell_language、old_string、new_string。\n\t- 优先编辑现有单元格而不是创建新单元格!\n",
"name": "edit_notebook",
"parameters": {
"properties": {
"cell_idx": {
"description": "要编辑的单元格的索引(从 0 开始)",
"type": "number"
},
"cell_language": {
"description": "要编辑的单元格的语言。应严格是以下之一:'python'、'markdown'、'javascript'、'typescript'、'r'、'sql'、'shell'、'raw' 或 'other'。",
"type": "string"
},
"is_new_cell": {
"description": "如果为 true将在指定的单元格索引处创建新单元格。如果为 false将编辑指定单元格索引处的单元格。",
"type": "boolean"
},
"new_string": {
"description": "用于替换 old_string 的编辑文本或新单元格的内容。",
"type": "string"
},
"old_string": {
"description": "要替换的文本(必须在单元格中是唯一的,并且必须与单元格内容完全匹配,包括所有空格和缩进)。",
"type": "string"
},
"target_notebook": {
"description": "您要编辑的 notebook 文件的路径。您可以使用工作区中的相对路径或绝对路径。如果提供绝对路径,它将按原样保留。",
"type": "string"
}
},
"required": [
"target_notebook",
"cell_idx",
"is_new_cell",
"cell_language",
"old_string",
"new_string"
],
"type": "object"
}
}
]