支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Claude Code 系统提示词和 11个内置 Tool拆解

发布日期:2025-03-20 22:20:02 浏览次数: 1535 来源:字节笔记本
推荐语

探索Anthropic的Claude Code,深入了解其系统提示词和内置工具。

核心内容:
1. Claude Code的设计理念和功能概述
2. 系统提示词和11个内置工具的详细解析
3. API请求内容结构和请求转发过程解析

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

Claude Code 是 Anthropic 开发的一个人工智能代码助手工具,它作为命令行界面 (CLI) 工具直接在你的终端中运行。它被设计为帮助开发人员更快速地编写代码、解决问题和理解代码库。

5c14a5b3-788c-435c-a55d-ae85b1a02e5b.png

Claude Code目前是闭源的,而且使用的话需要单独收费另外充值 Token,因为成本太高,而且封号严重,不太建议直接上手。

为了获取它的系统提示词,本次同样使用了Go起了一个转发后台服务,将原本请求Claude的 API代理到了DeepSeek。

请求转发示意图:

a2438844-9087-4808-bf7c-d3ccab7b4ee5.png              

下面是对Claude Code系统提示词和11个功能工具tools参数解析。

API 请求内容结构

{
  "model": "deepseek-ai/DeepSeek-V3",
  "messages": [
    {
      "content": "You are Claude Code, Anthropic's official CLI for Claude...",
      "role": "system"
    },
    {
      "content": "1",
      "role": "user"
    },
    {
      "content": [
        {
          "text": "API Error: 400 OpenAI API error: {\"code\":20015,\"message\":\"max_tokens: Must be less than or equal to 4096\",\"data\":null}\n",
          "type": "text"
        }
      ],
      "role": "assistant"
    },
    {
      "content": "<bash-input>cd /tmp</bash-input>",
      "role": "user"
    },
    {
      "content": [
        {
          "text": "<bash-stdout>Changed directory to \u001b[1m/tmp/\u001b[22m</bash-stdout>",
          "type": "text"
        }
      ],
      "role": "assistant"
    },
    {
      "content": "ls",
      "role": "user"
    },
    {
      "content": [
        {
          "text": "API Error: 400 OpenAI API error: {\"code\":20015,\"message\":\"max_tokens: Must be less than or equal to 4096\",\"data\":null}\n",
          "type": "text"
        }
      ],
      "role": "assistant"
    },
    {
      "content": [
        {
          "text": "ls",
          "type": "text"
        }
      ],
      "role": "user"
    }
  ],
  "max_tokens": 16384,
  "temperature": 1,
  "stream": true,
  "tools": [
    // 这里是工具数组,包含各种工具的定义
  ]
}


工具数组(tools)定义了模型可以使用的11个功能工具。以下是对每个工具的详细解析:

1. dispatch_agent

{
  "function": {
    "description": "Launch a new agent that has access to the following tools: View, GlobTool, GrepTool, LS, ReadNotebook. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries, use the Agent tool to perform the search for you...",
    "name": "dispatch_agent",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "prompt": {
          "description": "The task for the agent to perform",
          "type": "string"
        }
      },
      "required": ["prompt"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 启动新的代理进程,该代理可以访问View、GlobTool、GrepTool、LS和ReadNotebook工具
适用场景: 搜索关键词或文件,特别是在不确定能否快速找到匹配时
参数:

  • prompt(必需): 字符串,描述代理需要执行的任务

使用注意:

  • 可以并行启动多个代理以提高性能
  • 代理完成后会返回一条消息,该消息对用户不可见
  • 代理调用是无状态的,不能发送额外消息
  • 代理不能使用Bash、Replace、Edit、NotebookEditCell等修改文件的工具

2. Bash

{
  "function": {
    "description": "Executes a given bash command in a persistent shell session with optional timeout, ensuring proper handling and security measures...",
    "name": "Bash",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "command": {
          "description": "The command to execute",
          "type": "string"
        },
        "timeout": {
          "description": "Optional timeout in milliseconds (max 600000)",
          "type": "number"
        }
      },
      "required": ["command"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 在持久化的shell会话中执行bash命令
参数:

  • command(必需): 要执行的命令
  • timeout(可选): 超时时间(毫秒),最大600000ms(10分钟)

使用规则:

  • 创建文件前先验证目录路径
  • 禁止使用特定命令(alias, curl, wget等)
  • 避免使用搜索命令如findgrep,使用专用工具代替
  • 避免使用catheadtaills等,使用View和LS工具代替
  • 命令共享同一个shell会话,环境变量等状态会持续
  • 提供详细的git提交和PR创建流程指导

3. BatchTool

{
  "function": {
    "description": "Batch execution tool that runs multiple tool invocations in a single request...",
    "name": "BatchTool",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "description": {
          "description": "A short (3-5 word) description of the batch operation",
          "type": "string"
        },
        "invocations": {
          "description": "The list of tool invocations to execute",
          "items": {
            "additionalProperties": false,
            "properties": {
              "input": {
                "additionalProperties": {},
                "description": "The input to pass to the tool",
                "type": "object"
              },
              "tool_name": {
                "description": "The name of the tool to invoke",
                "type": "string"
              }
            },
            "required": ["tool_name", "input"],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": ["description", "invocations"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 批量执行多个工具调用
参数:

  • description(必需): 批处理操作的简短描述(3-5个词)
  • invocations(必需): 要执行的工具调用列表,每个包含:
    • tool_name: 工具名称
    • input: 传递给工具的输入参数

特点:

  • 并行执行工具调用
  • 减少上下文使用和延迟
  • 工具输出不直接显示给用户,需要后续消息展示

4. GlobTool

{
  "function": {
    "description": "Fast file pattern matching tool that works with any codebase size...",
    "name": "GlobTool",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "path": {
          "description": "The directory to search in. Defaults to the current working directory.",
          "type": "string"
        },
        "pattern": {
          "description": "The glob pattern to match files against",
          "type": "string"
        }
      },
      "required": ["pattern"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 文件名模式匹配
参数:

  • pattern(必需): glob模式,如**/*.jssrc/**/*.ts
  • path(可选): 搜索目录,默认为当前工作目录

特点:

  • 适用于任何规模的代码库
  • 按修改时间排序返回匹配的文件路径
  • 适合按名称模式查找文件

5. GrepTool

{
  "function": {
    "description": "Fast content search tool that works with any codebase size...",
    "name": "GrepTool",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "include": {
          "description": "File pattern to include in the search (e.g. \"*.js\", \"*.{ts,tsx}\")",
          "type": "string"
        },
        "path": {
          "description": "The directory to search in. Defaults to the current working directory.",
          "type": "string"
        },
        "pattern": {
          "description": "The regular expression pattern to search for in file contents",
          "type": "string"
        }
      },
      "required": ["pattern"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 文件内容搜索
参数:

  • pattern(必需): 正则表达式,如log.*Errorfunction\s+\w+
  • path(可选): 搜索目录,默认为当前工作目录
  • include(可选): 文件模式筛选,如*.js*.{ts,tsx}

特点:

  • 使用正则表达式搜索文件内容
  • 按修改时间排序返回匹配文件
  • 适合查找包含特定内容的文件

6. LS

{
  "function": {
    "description": "Lists files and directories in a given path...",
    "name": "LS",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "ignore": {
          "description": "List of glob patterns to ignore",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "path": {
          "description": "The absolute path to the directory to list (must be absolute, not relative)",
          "type": "string"
        }
      },
      "required": ["path"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 列出目录中的文件和子目录
参数:

  • path(必需): 要列出内容的目录的绝对路径
  • ignore(可选): 要忽略的glob模式列表

注意:

  • 路径必须是绝对路径,不能是相对路径
  • 如果知道要搜索的目录,通常应优先使用GlobTool和GrepTool

7. View

{
  "function": {
    "description": "Reads a file from the local filesystem...",
    "name": "View",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "file_path": {
          "description": "The absolute path to the file to read",
          "type": "string"
        },
        "limit": {
          "description": "The number of lines to read. Only provide if the file is too large to read at once.",
          "type": "number"
        },
        "offset": {
          "description": "The line number to start reading from. Only provide if the file is too large to read at once",
          "type": "number"
        }
      },
      "required": ["file_path"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 读取本地文件系统中的文件
参数:

  • file_path(必需): 要读取的文件的绝对路径
  • offset(可选): 起始行号,仅当文件太大无法一次读取时使用
  • limit(可选): 要读取的行数,仅当文件太大无法一次读取时使用

特点:

  • 默认从文件开始读取最多2000行
  • 任何长度超过2000字符的行会被截断
  • 结果使用cat -n格式返回,行号从1开始
  • 对于图像文件,会显示图像
  • Jupyter笔记本(.ipynb)文件应使用ReadNotebook工具

8. Edit

{
  "function": {
    "description": "This is a tool for editing files...",
    "name": "Edit",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "file_path": {
          "description": "The absolute path to the file to modify",
          "type": "string"
        },
        "new_string": {
          "description": "The text to replace it with",
          "type": "string"
        },
        "old_string": {
          "description": "The text to replace",
          "type": "string"
        }
      },
      "required": ["file_path", "old_string", "new_string"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 编辑文件内容
参数:

  • file_path(必需): 要修改的文件的绝对路径
  • old_string(必需): 要替换的文本
  • new_string(必需): 替换的新文本

关键要求:

  • 唯一性: old_string必须唯一标识要修改的实例,包括至少3-5行上下文
  • 单一实例: 工具每次只能替换一个实例
  • 验证: 使用前检查目标文本的实例数量,确保有足够上下文唯一标识
  • 创建新文件时使用空的old_string和完整内容作为new_string

9. Replace

{
  "function": {
    "description": "Write a file to the local filesystem. Overwrites the existing file if there is one...",
    "name": "Replace",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "content": {
          "description": "The content to write to the file",
          "type": "string"
        },
        "file_path": {
          "description": "The absolute path to the file to write (must be absolute, not relative)",
          "type": "string"
        }
      },
      "required": ["file_path", "content"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 创建或覆盖文件
参数:

  • file_path(必需): 要写入的文件的绝对路径
  • content(必需): 要写入文件的内容

使用前:

  • 使用View工具了解文件内容和上下文
  • 创建新文件时验证父目录是否存在

10. ReadNotebook

{
  "function": {
    "description": "Reads a Jupyter notebook (.ipynb file) and returns all of the cells with their outputs...",
    "name": "ReadNotebook",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "notebook_path": {
          "description": "The absolute path to the Jupyter notebook file to read (must be absolute, not relative)",
          "type": "string"
        }
      },
      "required": ["notebook_path"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 读取Jupyter笔记本文件
参数:

  • notebook_path(必需): Jupyter笔记本文件的绝对路径

说明:

  • 返回笔记本中所有单元格及其输出
  • 路径必须是绝对路径,不能是相对路径

11. NotebookEditCell

{
  "function": {
    "description": "Completely replaces the contents of a specific cell in a Jupyter notebook (.ipynb file) with new source...",
    "name": "NotebookEditCell",
    "parameters": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "cell_number": {
          "description": "The index of the cell to edit (0-based)",
          "type": "number"
        },
        "cell_type": {
          "description": "The type of the cell (code or markdown). If not specified, it defaults to the current cell type. If using edit_mode=insert, this is required.",
          "enum": ["code", "markdown"],
          "type": "string"
        },
        "edit_mode": {
          "description": "The type of edit to make (replace, insert, delete). Defaults to replace.",
          "type": "string"
        },
        "new_source": {
          "description": "The new source for the cell",
          "type": "string"
        },
        "notebook_path": {
          "description": "The absolute path to the Jupyter notebook file to edit (must be absolute, not relative)",
          "type": "string"
        }
      },
      "required": ["notebook_path", "cell_number", "new_source"],
      "type": "object"
    }
  },
  "type": "function"
}

功能: 编辑Jupyter笔记本中的特定单元格
参数:

  • notebook_path(必需): 笔记本文件的绝对路径
  • cell_number(必需): 要编辑的单元格索引(从0开始)
  • new_source(必需): 单元格的新内容
  • cell_type(可选): 单元格类型(code或markdown),使用edit_mode=insert时必需
  • edit_mode(可选): 编辑类型(replace, insert, delete),默认为replace

模式说明:

  • replace: 替换现有单元格内容
  • insert: 在指定索引处插入新单元格
  • delete: 删除指定索引处的单元格

以上工具组合在一起,形成了一个功能完善的编码助手系统,可以执行各种文件操作、代码搜索、修改和运行命令,帮助用户完成软件工程任务。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询