mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2025-12-17 14:05:12 +00:00
530 lines
33 KiB
Markdown
530 lines
33 KiB
Markdown
## Claude Code 工具定义
|
||
|
||
本文档定义了以下工具:
|
||
- `Task`: 启动一个新的代理来自主处理复杂的多步骤任务
|
||
- `Bash`: 执行给定的 bash 命令
|
||
- `Glob`: 快速文件模式匹配工具
|
||
- `Grep`: 基于 ripgrep 的强大搜索工具
|
||
- `LS`: 列出给定路径中的文件和目录
|
||
- `ExitPlanMode`: 在计划模式结束时使用
|
||
- `Read`: 从本地文件系统读取文件
|
||
- `Edit`: 在文件中执行精确的字符串替换
|
||
- `MultiEdit`: 一次对单个文件进行多次编辑
|
||
- `Write`: 将文件写入本地文件系统
|
||
- `NotebookEdit`: 替换 Jupyter 笔记本中特定单元格的内容
|
||
- `WebFetch`: 从指定 URL 获取内容
|
||
- `TodoWrite`: 创建和管理结构化任务列表
|
||
- `WebSearch`: 允许 Claude 搜索网络
|
||
- `BashOutput`: 检索后台 bash shell 的输出
|
||
- `KillBash`: 终止正在运行的后台 bash shell
|
||
|
||
```json
|
||
{
|
||
"tools": [
|
||
{
|
||
"name": "Task",
|
||
"description": "启动一个新的代理来自主处理复杂的多步骤任务。\\n\\n可用的代理类型和它们可访问的工具有:\\n- general-purpose: 用于研究复杂问题、搜索代码和执行多步骤任务的通用代理。当您搜索关键字或文件且不确定前几次尝试能否找到正确匹配时,使用此代理为您执行搜索。(工具: *)\\n- statusline-setup: 使用此代理配置用户的 Claude Code 状态栏设置。(工具: Read, Edit)\\n- output-style-setup: 使用此代理创建 Claude Code 输出样式。(工具: Read, Write, Edit, Glob, LS, Grep)\\n\\n使用 Task 工具时,您必须指定 subagent_type 参数来选择要使用的代理类型。\\n\\n\\n\\n何时不使用代理工具:\\n- 如果您想读取特定文件路径,请使用 Read 或 Glob 工具而不是 Agent 工具,以便更快地找到匹配项\\n- 如果您正在搜索特定类定义如 \\\"class Foo\\\",请使用 Glob 工具而不是 Agent 工具,以便更快地找到匹配项\\n- 如果您在特定文件或 2-3 个文件中搜索代码,请使用 Read 工具而不是 Agent 工具,以便更快地找到匹配项\\n- 与上述代理描述无关的其他任务\\n\\n使用说明:\\n1. 尽可能同时启动多个代理以最大化性能;为此,使用包含多个工具调用的单条消息\\n2. 代理完成后,将向您返回一条消息。代理返回的结果用户不可见。要向用户显示结果,您应向用户发送包含结果简要摘要的消息。\\n3. 每个代理调用都是无状态的。您将无法向代理发送额外的消息,代理也无法在最终报告之外与您通信。因此,您的提示应包含详细的代理执行任务的描述,并应确切指定代理应在最终且唯一的回复中向您返回什么信息。\\n4. 代理的输出通常应被信任\\n5. 明确告诉代理您期望它是编写代码还是仅做研究(搜索、文件读取、网页获取等),因为它不知道用户的意图\\n6. 如果代理描述中提到应主动使用,则应尽量在用户未要求时使用。使用您的判断。\\n\\n示例用法:\\n\\n<example_agent_descriptions>\\n\\\"code-reviewer\\\": 在编写大量代码后使用此代理\\n\\\"greeting-responder\\\": 用友好笑话回复用户问候时使用此代理\\n</example_agent_description>\\n\\n<example>\\nuser: \\\"请编写一个检查数字是否为质数的函数\\\"\\nassistant: 当然,让我编写一个检查数字是否为质数的函数\\nassistant: 首先让我使用 Write 工具编写一个检查数字是否为质数的函数\\nassistant: 我将使用 Write 工具编写以下代码:\\n<code>\\nfunction isPrime(n) {\\n if (n <= 1) return false\\n for (let i = 2; i * i <= n; i++) {\\n if (n % i === 0) return false\\n }\\n return true\\n}\\n</code>\\n<commentary>\\n由于编写了大量代码并且任务已完成,现在使用 code-reviewer 代理审查代码\\n</commentary>\\nassistant: 现在让我使用 code-reviewer 代理审查代码\\nassistant: 使用 Task 工具启动 code-reviewer 代理 \\n</example>\\n\\n<example>\\nuser: \\\"你好\\\"\\n<commentary>\\n由于用户在问候,使用 greeting-responder 代理用友好笑话回复\\n</commentary>\\nassistant: \\\"我将使用 Task 工具启动 greeting-responder 代理\\\"\\n</example>\\n",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"description": {
|
||
"type": "string",
|
||
"description": "任务的简短(3-5 字)描述"
|
||
},
|
||
"prompt": {
|
||
"type": "string",
|
||
"description": "代理要执行的任务"
|
||
},
|
||
"subagent_type": {
|
||
"type": "string",
|
||
"description": "用于此任务的专用代理类型"
|
||
}
|
||
},
|
||
"required": [
|
||
"description",
|
||
"prompt",
|
||
"subagent_type"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "Bash",
|
||
"description": "在具有可选超时的持久 shell 会话中执行给定的 bash 命令,确保适当的处理和安全措施。\\n\\n执行命令之前,请遵循以下步骤:\\n\\n1. 目录验证:\\n - 如果命令将创建新目录或文件,首先使用 LS 工具验证父目录存在且是正确位置\\n - 例如,在运行 \\\"mkdir foo/bar\\\" 之前,首先使用 LS 检查 \\\"foo\\\" 是否存在且是预期的父目录\\n\\n2. 命令执行:\\n - 始终用双引号引用包含空格的文件路径(例如,cd \\\"path with spaces/file.txt\\\")\\n - 正确引用的示例:\\n - cd \\\"/Users/name/My Documents\\\"(正确)\\n - cd /Users/name/My Documents(错误 - 将失败)\\n - python \\\"/path/with spaces/script.py\\\"(正确)\\n - python /path/with spaces/script.py(错误 - 将失败)\\n - 确保正确引用后,执行命令。\\n - 捕获命令的输出。\\n\\n使用说明:\\n - command 参数是必需的。\\n - 您可以指定毫秒的可选超时(最多 600000ms / 10 分钟)。如果未指定,命令将在 120000ms(2 分钟)后超时。\\n - 如果能用 5-10 个词清晰、简洁地描述此命令的作用,这将非常有帮助。\\n - 如果输出超过 30000 个字符,输出将在返回给您之前被截断。\\n - 您可以使用 `run_in_background` 参数在后台运行命令,这允许您在命令运行时继续工作。您可以使用 Bash 工具监视输出。永远不要使用 `run_in_background` 运行 'sleep',因为它会立即返回。使用此参数时不需要在命令末尾使用 '&'。\\n - 非常重要:您必须避免使用 `find` 和 `grep` 等搜索命令。而是使用 Grep、Glob 或 Task 进行搜索。您必须避免使用 `cat`、`head`、`tail` 等读取工具...",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"command": {
|
||
"type": "string",
|
||
"description": "要执行的命令"
|
||
},
|
||
"timeout": {
|
||
"type": "number",
|
||
"description": "可选超时(毫秒)(最大 600000)"
|
||
},
|
||
"description": {
|
||
"type": "string",
|
||
"description": " 用 5-10 个词清晰、简洁地描述此命令的作用。示例:\\n输入: ls\\n输出: 列出当前目录中的文件\\n\\n输入: git status\\n输出: 显示工作树状态\\n\\n输入: npm install\\n输出: 安装包依赖项\\n\\n输入: mkdir foo\\n输出: 创建目录 'foo'"
|
||
},
|
||
"run_in_background": {
|
||
"type": "boolean",
|
||
"description": "设置为 true 在后台运行此命令。使用 BashOutput 读取稍后的输出。"
|
||
}
|
||
},
|
||
"required": [
|
||
"command"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "Glob",
|
||
"description": "- 适用于任何代码库大小的快速文件模式匹配工具\\n- 支持 \\\"**/*.js\\\" 或 \\\"src/**/*.ts\\\" 等 glob 模式\\n- 按修改时间返回匹配的文件路径\\n- 在需要按名称模式查找文件时使用此工具\\n- 当您进行可能需要多轮 globbing 和 grepping 的开放式搜索时,请改用 Agent 工具\\n- 您可以在单个响应中调用多个工具。最好推测性地执行多个可能有用的搜索。",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"pattern": {
|
||
"type": "string",
|
||
"description": "要匹配文件的 glob 模式"
|
||
},
|
||
"path": {
|
||
"type": "string",
|
||
"description": "要搜索的目录。如果未指定,将使用当前工作目录。重要:使用默认目录时省略此字段。不要输入 \\\"undefined\\\" 或 \\\"null\\\" - 为默认行为简单省略它。如果提供,必须是有效的目录路径。"
|
||
}
|
||
},
|
||
"required": [
|
||
"pattern"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "Grep",
|
||
"description": "一个基于 ripgrep 的强大搜索工具\\n\\n 用法:\\n - 始终将 Grep 用于搜索任务。永远不要将 `grep` 或 `rg` 作为 Bash 命令调用。Grep 工具已针对正确权限和访问进行了优化。\\n - 支持完整正则表达式语法(例如,\\\"log.*Error\\\", \\\"function\\\\s+\\\\w+\\\")\\n - 使用 glob 参数(例如 \\\"*.js\\\", \\\"**/*.tsx\\\")或 type 参数(例如 \\\"js\\\", \\\"py\\\", \\\"rust\\\")过滤文件\\n - 输出模式:\\\"content\\\" 显示匹配行,\\\"files_with_matches\\\" 仅显示文件路径(默认),\\\"count\\\" 显示匹配计数\\n - 对于需要多轮的开放式搜索,使用 Task 工具\\n - 模式语法:使用 ripgrep(非 grep) - 字面大括号需要转义(使用 `interface\\\\{\\\\}` 在 Go 代码中查找 `interface{}`)\\n - 多行匹配:默认情况下,模式仅在单行内匹配。对于跨行模式如 `struct \\\\{[\\\\s\\\\S]*?field`,使用 `multiline: true`\\n",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"pattern": {
|
||
"type": "string",
|
||
"description": "要在文件内容中搜索的正则表达式模式"
|
||
},
|
||
"path": {
|
||
"type": "string",
|
||
"description": "要搜索的文件或目录(rg PATH)。默认为当前工作目录。"
|
||
},
|
||
"glob": {
|
||
"type": "string",
|
||
"description": "过滤文件的 glob 模式(例如 \\\"*.js\\\", \\\"*.{ts,tsx}\\\") - 映射到 rg --glob"
|
||
},
|
||
"output_mode": {
|
||
"type": "string",
|
||
"enum": [
|
||
"content",
|
||
"files_with_matches",
|
||
"count"
|
||
],
|
||
"description": "输出模式:\\\"content\\\" 显示匹配行(支持 -A/-B/-C 上下文,-n 行号,head_limit),\\\"files_with_matches\\\" 显示文件路径(支持 head_limit),\\\"count\\\" 显示匹配计数(支持 head_limit)。默认为 \\\"files_with_matches\\\"。"
|
||
},
|
||
"-B": {
|
||
"type": "number",
|
||
"description": "在每个匹配项之前显示的行数(rg -B)。需要 output_mode: \\\"content\\\",否则忽略。"
|
||
},
|
||
"-A": {
|
||
"type": "number",
|
||
"description": "在每个匹配项之后显示的行数(rg -A)。需要 output_mode: \\\"content\\\",否则忽略。"
|
||
},
|
||
"-C": {
|
||
"type": "number",
|
||
"description": "在每个匹配项之前和之后显示的行数(rg -C)。需要 output_mode: \\\"content\\\",否则忽略。"
|
||
},
|
||
"-n": {
|
||
"type": "boolean",
|
||
"description": "在输出中显示行号(rg -n)。需要 output_mode: \\\"content\\\",否则忽略。"
|
||
},
|
||
"-i": {
|
||
"type": "boolean",
|
||
"description": "不区分大小写搜索(rg -i)"
|
||
},
|
||
"type": {
|
||
"type": "string",
|
||
"description": "要搜索的文件类型(rg --type)。常见类型:js, py, rust, go, java, 等。对于标准文件类型,这比 include 更高效。"
|
||
},
|
||
"head_limit": {
|
||
"type": "number",
|
||
"description": "将输出限制为前 N 行/条目,相当于 \\\"| head -N\\\"。适用于所有输出模式:content(限制输出行),files_with_matches(限制文件路径),count(限制计数条目)。未指定时,显示 ripgrep 的所有结果。"
|
||
},
|
||
"multiline": {
|
||
"type": "boolean",
|
||
"description": "启用多行模式,其中 . 匹配换行符且模式可以跨行(rg -U --multiline-dotall)。默认值:false。"
|
||
}
|
||
},
|
||
"required": [
|
||
"pattern"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "LS",
|
||
"description": "列出给定路径中的文件和目录。path 参数必须是绝对路径,而不是相对路径。您可以选择性地提供要忽略的 glob 模式数组。如果您知道要搜索的目录,通常应优先使用 Glob 和 Grep 工具。",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"path": {
|
||
"type": "string",
|
||
"description": "要列出的目录的绝对路径(必须是绝对路径,不是相对路径)"
|
||
},
|
||
"ignore": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"description": "要忽略的 glob 模式列表"
|
||
}
|
||
},
|
||
"required": [
|
||
"path"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "ExitPlanMode",
|
||
"description": "当您处于计划模式且已完成展示您的计划并准备编码时使用此工具。这将提示用户退出计划模式。 \\n重要:仅当任务需要规划写代码任务的实施步骤时才使用此工具。对于研究任务,在其中您正在收集信息、搜索文件、读取文件或一般尝试理解代码库 - 请勿使用此工具。\\n\\n例如。 \\n1. 初始任务:\\\"搜索并了解代码库中 vim 模式 的实现\\\" - 不要使用退出计划模式工具,因为您没有规划任务的实施步骤。\\n2. 初始任务:\\\"帮我为 vim 实现 yank 模式\\\" - 在完成任务实施步骤的规划后使用退出计划模式工具。\\n",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"plan": {
|
||
"type": "string",
|
||
"description": "您提出的计划,您想让用户批准。支持 markdown。计划应该相当简洁。"
|
||
}
|
||
},
|
||
"required": [
|
||
"plan"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "Read",
|
||
"description": "从本地文件系统读取文件。您可以直接使用此工具访问任何文件。\\n假设此工具能够读取机器上的所有文件。如果用户提供了文件路径,则假设该路径有效。读取不存在的文件是可以的;将返回错误。\\n\\n用法:\\n- file_path 参数必须是绝对路径,而不是相对路径\\n- 默认情况下,从文件开头读取最多 2000 行\\n- 您可以选择性地指定行偏移量和限制(对于长文件特别有用),但建议不提供这些参数以读取整个文件\\n- 任何超过 2000 个字符的行将被截断\\n- 结果以 cat -n 格式返回,行号从 1 开始\\n- 此工具允许 Claude Code 读取图像(例如 PNG、JPG 等)。读取图像文件时,内容以视觉方式呈现,因为 Claude Code 是多模态 LLM。\\n- 此工具可以读取 PDF 文件(.pdf)。PDF 逐页处理,提取文本和视觉内容进行分析。\\n- 此工具可以读取 Jupyter 笔记本(.ipynb 文件)并返回所有单元格及其输出,结合代码、文本和可视化。\\n- 您可以在单个响应中调用多个工具。最好推测性地读取多个可能有用的文件。 \\n- 您将定期被要求读取屏幕截图。如果用户提供了屏幕截图路径,始终使用此工具查看路径处的文件。此工具适用于 /var/folders/123/abc/T/TemporaryItems/NSIRD_screencaptureui_ZfB1tD/Screenshot.png 等所有临时文件路径\\n- 如果您读取存在但内容为空的文件,将收到系统提醒警告以代替文件内容。",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"file_path": {
|
||
"type": "string",
|
||
"description": "要读取的文件的绝对路径"
|
||
},
|
||
"offset": {
|
||
"type": "number",
|
||
"description": "开始读取的行号。仅在文件太大而无法一次读取时提供"
|
||
},
|
||
"limit": {
|
||
"type": "number",
|
||
"description": "要读取的行数。仅在文件太大而无法一次读取时提供。"
|
||
}
|
||
},
|
||
"required": [
|
||
"file_path"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "Edit",
|
||
"description": "在文件中执行精确字符串替换。 \\n\\n用法:\\n- 在编辑之前,您必须在对话中至少使用一次 `Read` 工具。如果没有读取文件就尝试编辑,此工具将出错。 \\n- 编辑 Read 工具输出的文本时,确保保留与行号前缀后出现的完全相同的缩进(制表符/空格)。行号前缀格式为:空格 + 行号 + 制表符。该制表符后的所有内容是要匹配的实际文件内容。切勿在 old_string 或 new_string 中包含行号前缀的任何部分。\\n- 始终优先编辑代码库中的现有文件。除非明确要求,否则永远不要编写新文件。\\n- 除非用户明确要求,否则仅使用表情符号。除非被要求,否则避免在文件中添加表情符号。\\n- 如果 `old_string` 在文件中不唯一,编辑将失败。要么提供具有更多上下文的较大字符串以使其唯一,要么使用 `replace_all` 更改 `old_string` 的每个实例。 \\n- 使用 `replace_all` 替换和重命名文件中的字符串。如果要重命名变量,则此参数很有用。",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"file_path": {
|
||
"type": "string",
|
||
"description": "要修改的文件的绝对路径"
|
||
},
|
||
"old_string": {
|
||
"type": "string",
|
||
"description": "要替换的文本"
|
||
},
|
||
"new_string": {
|
||
"type": "string",
|
||
"description": "替换它的文本(必须与 old_string 不同)"
|
||
},
|
||
"replace_all": {
|
||
"type": "boolean",
|
||
"default": false,
|
||
"description": "替换 old_string 的所有出现(默认值为 false)"
|
||
}
|
||
},
|
||
"required": [
|
||
"file_path",
|
||
"old_string",
|
||
"new_string"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "MultiEdit",
|
||
"description": "这是一个用于在单个操作中对单个文件进行多次编辑的工具。它建立在 Edit 工具之上,允许您高效地执行多次查找和替换操作。当您需要对同一文件进行多次编辑时,优先使用此工具而不是 Edit 工具。\\n\\n使用此工具之前:\\n\\n1. 使用 Read 工具了解文件内容和上下文\\n2. 验证目录路径是否正确\\n\\n要进行多次文件编辑,请提供以下内容:\\n1. file_path: 要修改的文件的绝对路径(必须是绝对路径,不是相对路径)\\n2. edits: 要执行的编辑操作数组,其中每个编辑包含:\\n - old_string: 要替换的文本(必须与文件内容完全匹配,包括所有空格和缩进)\\n - new_string: 要替换 old_string 的编辑文本\\n - replace_all: 替换 old_string 的所有出现。此参数是可选的,默认为 false。\\n\\n重要:\\n- 所有编辑按顺序应用,按它们提供的顺序\\n- 每个编辑在前一个编辑的结果上操作\\n- 所有编辑必须有效才能操作成功 - 如果任何编辑失败,则不会应用任何编辑\\n- 当您需要对同一文件的不同部分进行多次更改时,此工具很理想\\n- 对于 Jupyter 笔记本(.ipynb 文件),使用 NotebookEdit\\n\\n关键要求:\\n1. 所有编辑遵循单个 Edit 工具的相同要求\\n2. 编辑是原子的 - 要么全部成功,要么都不应用\\n3. 仔细计划您的编辑,以避免连续操作之间的冲突\\n\\n警告:\\n- 如果 edits.old_string 与文件内容不完全匹配(包括空格),工具将失败\\n- 如果 edits.old_string 和 edits.new_string 相同,工具将失败\\n- 由于编辑按顺序应用,确保较早的编辑不影响稍后编辑试图查找的文本\\n\\n进行编辑时:\\n- 确保所有编辑结果为惯用的、正确的代码\\n- 不要将文件置于损坏状态...",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"file_path": {
|
||
"type": "string",
|
||
"description": "要修改的文件的绝对路径"
|
||
},
|
||
"edits": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"properties": {
|
||
"old_string": {
|
||
"type": "string",
|
||
"description": "要替换的文本"
|
||
},
|
||
"new_string": {
|
||
"type": "string",
|
||
"description": "替换它的文本"
|
||
},
|
||
"replace_all": {
|
||
"type": "boolean",
|
||
"default": false,
|
||
"description": "替换 old_string 的所有出现(默认值为 false)。"
|
||
}
|
||
},
|
||
"required": [
|
||
"old_string",
|
||
"new_string"
|
||
],
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1,
|
||
"description": "在文件上依次执行的编辑操作数组"
|
||
}
|
||
},
|
||
"required": [
|
||
"file_path",
|
||
"edits"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "Write",
|
||
"description": "将文件写入本地文件系统。\\n\\n用法:\\n- 如果提供的路径存在现有文件,此工具将覆盖该文件。\\n- 如果这是现有文件,您必须先使用 Read 工具读取文件内容。如果您未先读取文件,此工具将失败。\\n- 始终优先编辑代码库中的现有文件。除非明确要求,否则永远不要编写新文件。\\n- 永远不要主动创建文档文件(*.md)或自述文件。仅在用户明确要求时创建文档文件。\\n- 除非用户明确要求,否则仅使用表情符号。除非被要求,否则避免在文件中写入表情符号。",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"file_path": {
|
||
"type": "string",
|
||
"description": "要写入的文件的绝对路径(必须是绝对路径,不是相对路径)"
|
||
},
|
||
"content": {
|
||
"type": "string",
|
||
"description": "要写入文件的内容"
|
||
}
|
||
},
|
||
"required": [
|
||
"file_path",
|
||
"content"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "NotebookEdit",
|
||
"description": "完全用新源替换 Jupyter 笔记本(.ipynb 文件)中特定单元格的内容。Jupyter 笔记本是结合代码、文本和可视化的交互式文档,通常用于数据分析和科学计算。notebook_path 参数必须是绝对路径,而不是相对路径。cell_number 是从 0 开始索引的。使用 edit_mode=insert 在 cell_number 指定的索引处添加新单元格。使用 edit_mode=delete 删除 cell_number 指定的索引处的单元格。",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"notebook_path": {
|
||
"type": "string",
|
||
"description": "要编辑的 Jupyter 笔记本文件的绝对路径(必须是绝对路径,不是相对路径)"
|
||
},
|
||
"cell_id": {
|
||
"type": "string",
|
||
"description": "要编辑的单元格的 ID。插入新单元格时,新单元格将插入到具有此 ID 的单元格之后,或者如果没有指定 ID 则插入到开头。"
|
||
},
|
||
"new_source": {
|
||
"type": "string",
|
||
"description": "单元格的新源"
|
||
},
|
||
"cell_type": {
|
||
"type": "string",
|
||
"enum": [
|
||
"code",
|
||
"markdown"
|
||
],
|
||
"description": "单元格的类型(代码或 markdown)。如果没有指定,它将默认为当前单元格类型。如果使用 edit_mode=insert,则需要此参数。"
|
||
},
|
||
"edit_mode": {
|
||
"type": "string",
|
||
"enum": [
|
||
"replace",
|
||
"insert",
|
||
"delete"
|
||
],
|
||
"description": "要进行的编辑类型(替换、插入、删除)。默认为替换。"
|
||
}
|
||
},
|
||
"required": [
|
||
"notebook_path",
|
||
"new_source"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "WebFetch",
|
||
"description": "\\n- 从指定 URL 获取内容并使用 AI 模型处理\\n- 以 URL 和提示作为输入\\n- 获取 URL 内容,将 HTML 转换为 markdown\\n- 使用小型快速模型处理提示内容\\n- 返回模型对内容的响应\\n- 在需要检索和分析网页内容时使用此工具\\n\\n使用说明:\\n - 重要:如果有 MCP 提供的网络获取工具可用,请优先使用该工具而不是此工具,因为它可能限制更少。所有 MCP 提供的工具都以 \\\"mcp__\\\" 开头。\\n - URL 必须是完全形成的有效 URL\\n - HTTP URL 将自动升级为 HTTPS\\n - 提示应描述您想从页面提取的信息\\n - 此工具只读,不会修改任何文件\\n - 内容很大时结果可能会摘要\\n - 包含自清理 15 分钟缓存,以便在重复访问同一 URL 时更快响应\\n - 当 URL 重定向到不同主机时,工具将通知您并以特殊格式提供重定向 URL。然后您应使用重定向 URL 进行新的 WebFetch 请求以获取内容。\\n",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"description": "要获取内容的 URL"
|
||
},
|
||
"prompt": {
|
||
"type": "string",
|
||
"description": "在获取内容上运行的提示"
|
||
}
|
||
},
|
||
"required": [
|
||
"url",
|
||
"prompt"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "TodoWrite",
|
||
"description": "使用此工具为当前编码会话创建和管理结构化任务列表。这有助于您跟踪进度,组织复杂任务,并向用户展示您的彻底性。\\n它还有助于用户了解任务进度和他们请求的整体进度。\\n\\n## 何时使用此工具\\n在这些情况下主动使用此工具:\\n\\n1. 复杂多步骤任务 - 当任务需要 3 个或更多不同步骤或操作时\\n2. 非简单的复杂任务 - 需要仔细规划或多次操作的任务\\n3. 用户明确请求待办事项列表 - 当用户直接要求您使用待办事项列表时\\n4. 用户提供多个任务 - 当用户提供要完成的事项列表时(编号或逗号分隔)\\n5. 收到新指令后 - 立即将用户需求捕获为待办事项\\n6. 开始处理任务时 - 在开始工作前将其标记为 in_progress。理想情况下,一次应只有一个待办事项为 in_progress\\n7. 完成任务后 - 将其标记为已完成,并添加在实施过程中发现的任何新后续任务\\n\\n## 何时不使用此工具\\n\\n在以下情况下跳过使用此工具:\\n1. 只有一个简单直接的任务\\n2. 任务微不足道,跟踪它不会带来组织效益\\n3. 任务可以在少于 3 个微不足道的步骤中完成\\n4. 任务纯粹是对话或信息性的\\n\\n请注意,如果只有一个微不足道的任务要做,则最好直接执行该任务。\\n\\n## 何时使用待办事项列表的示例\\n\\n<example>\\n用户:我想在应用程序设置中添加暗模式切换。确保完成后运行测试和构建!\\n助手:我将帮助您在应用程序设置中添加暗模式切换。让我创建一个待办事项列表来跟踪此实现。\\n*创建包含以下项目的待办事项列表:*\\n1. 在设置页面创建暗模式切换组件\\n2. 添加暗...",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"todos": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"properties": {
|
||
"content": {
|
||
"type": "string",
|
||
"minLength": 1
|
||
},
|
||
"status": {
|
||
"type": "string",
|
||
"enum": [
|
||
"pending",
|
||
"in_progress",
|
||
"completed"
|
||
]
|
||
},
|
||
"id": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"content",
|
||
"status",
|
||
"id"
|
||
],
|
||
"additionalProperties": false
|
||
},
|
||
"description": "更新的待办事项列表"
|
||
}
|
||
},
|
||
"required": [
|
||
"todos"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "WebSearch",
|
||
"description": "\\n- 允许 Claude 搜索网络并使用结果来告知响应\\n- 为当前事件和最新数据提供最新信息\\n- 以搜索结果块格式返回搜索结果信息\\n- 使用此工具访问超出 Claude 知识截止点的信息\\n- 搜索在单个 API 调用内自动执行\\n\\n使用说明:\\n - 支持域过滤以包含或阻止特定网站\\n - Web 搜索仅在美国可用\\n - 考虑 <env> 中的\\\"今天日期\\\"。例如,如果 <env> 显示\\\"今天日期:2025-07-01\\\",且用户想要最新文档,请不要在搜索查询中使用 2024。使用 2025。\\n",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": {
|
||
"type": "string",
|
||
"minLength": 2,
|
||
"description": "要使用的搜索查询"
|
||
},
|
||
"allowed_domains": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"description": "仅包含这些域的搜索结果"
|
||
},
|
||
"blocked_domains": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"description": "永不包含这些域的搜索结果"
|
||
}
|
||
},
|
||
"required": [
|
||
"query"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "BashOutput",
|
||
"description": "\\n- 检索正在运行或已完成的后台 bash shell 的输出\\n- 采用标识 shell 的 shell_id 参数\\n- 始终仅返回自上次检查以来的新输出\\n- 返回 stdout 和 stderr 输出以及 shell 状态\\n- 支持可选的正则表达式过滤以仅显示匹配模式的行\\n- 在需要监视或检查长时间运行的 shell 输出时使用此工具\\n- Shell ID 可以使用 /bashes 命令找到\\n",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"bash_id": {
|
||
"type": "string",
|
||
"description": "要检索输出的后台 shell 的 ID"
|
||
},
|
||
"filter": {
|
||
"type": "string",
|
||
"description": "可选正则表达式,用于过滤输出行。仅包含匹配此正则表达式的行。任何不匹配的行将不再可读。"
|
||
}
|
||
},
|
||
"required": [
|
||
"bash_id"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
},
|
||
{
|
||
"name": "KillBash",
|
||
"description": "\\n- 通过其 ID 终止正在运行的后台 bash shell\\n- 采用标识要终止的 shell 的 shell_id 参数\\n- 返回成功或失败状态 \\n- 在需要终止长时间运行的 shell 时使用此工具\\n- Shell ID 可以使用 /bashes 命令找到\\n",
|
||
"input_schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"shell_id": {
|
||
"type": "string",
|
||
"description": "要终止的后台 shell 的 ID"
|
||
}
|
||
},
|
||
"required": [
|
||
"shell_id"
|
||
],
|
||
"additionalProperties": false,
|
||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
``` |