掘金 人工智能 前天 18:13
Claude Code 工具与系统提示详解
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文整理了 Claude Code 的工具和系统提示,为开发者提供清晰的技术参考,涵盖 Bash、Glob、Grep、LS、Read、Edit 等工具的使用场景、注意事项,以及如何高效利用这些工具完成代码相关任务。通过本文,开发者可以更清晰地理解和应用 Claude Code 的工具,提升开发效率和代码质量。

💡 **核心工具概览**: Claude Code 提供了一系列工具,包括 Bash、Glob、Grep、LS、exit_plan_mode、Read、Edit、MultiEdit、Write、NotebookRead、NotebookEdit、WebFetch、TodoRead、TodoWrite 和 WebSearch,涵盖文件操作、搜索、代码编辑、任务管理和网络信息获取等。

🔍 **Agent 工具的应用与限制**: Agent 工具适合搜索模糊关键字或回答“某个功能在哪个文件中实现?”等问题。不建议用于读取特定文件路径、搜索特定类定义或在特定文件或少量文件中搜索代码,应优先使用 Read 或 Glob 等专用工具。

🛠️ **Bash 工具的规范使用**: Bash 工具用于执行 Bash 命令,需注意路径中包含空格时使用双引号包裹,执行命令后捕获输出,并注意输出限制。避免使用 find、grep 等搜索命令,改用 Grep、Glob 或 Task 工具。Git 提交和拉取请求需遵循特定步骤和注意事项。

📝 **文件操作工具的注意事项**: Read 工具用于读取文件,Edit 和 MultiEdit 工具用于精确字符串替换,Write 工具用于写入文件。使用 Edit 和 MultiEdit 前必须使用 Read 工具读取文件。编辑时需保留原始缩进,避免添加表情符号,并确保 old_string 精确匹配文件内容。

🎯 **任务管理工具的应用**: TodoRead 和 TodoWrite 工具用于创建和管理结构化的任务列表,帮助跟踪编码会话进度。 TodoWrite 适用于复杂多步骤任务、非琐碎任务和用户明确要求的场景。需要实时更新任务状态,并对任务进行拆分,确保任务清晰可操作。

本文整理并翻译了 Claude Code 的工具和系统提示,基于原始文档(Gist 原文),为开发者提供清晰的中文技术参考。以下内容涵盖了 Claude Code 提供的工具及其使用场景、注意事项,以及如何高效地利用这些工具完成代码相关任务。

任务(Task)

功能概述

Claude Code 提供了一个强大的工具集,包含 Bash、Glob、Grep、LS、exit_plan_mode、Read、Edit、MultiEdit、Write、NotebookRead、NotebookEdit、WebFetch、TodoRead、TodoWrite 和 WebSearch。这些工具支持文件操作、搜索、代码编辑、任务管理和网络信息获取等功能。

当需要搜索关键字或文件且无法快速定位时,建议使用 Agent 工具 来执行搜索任务。Agent 工具适合以下场景:

不建议使用 Agent 工具的场景:

使用注意事项

    并发启动多个 Agent:为提升性能,可在单一消息中调用多个工具,启动多个 Agent 并发执行任务。Agent 的输出:Agent 完成任务后会返回单一消息,结果对用户不可见。需通过文本消息向用户发送简洁的总结。Agent 无状态:每次 Agent 调用是独立的,无法发送额外消息或与其交互。因此,需在提示中提供详细的任务描述,并明确指定 Agent 返回的信息。信任 Agent 输出:Agent 的输出通常可信。明确任务目标:需明确告知 Agent 是用于编写代码还是仅进行研究(如搜索、文件读取、网页抓取等)。

Agent 配置格式:

json

{  "description": "任务简述(3-5字)",  "prompt": "详细的任务描述"}

工具详解

    Bash

功能:在持久化的 shell 会话中执行 Bash 命令,支持可选超时设置,确保安全性和正确性。

使用步骤

    目录验证:

      如果命令会创建目录或文件,先使用 LS 工具验证父目录是否存在且正确。示例:运行 mkdir foo/bar 前,使用 LS 检查 foo 目录是否存在。

    命令执行:

      路径中包含空格时,必须用双引号包裹(如 cd "/Users/name/My Documents")。

      执行命令后捕获输出。

      示例:

        正确:cd "/Users/name/My Documents"错误:cd /Users/name/My Documents(会失败)

使用注意事项

Git 提交(Committing changes with git)

当用户要求创建 Git 提交时,需严格遵循以下步骤:

    并行运行命令:

      git status:查看未跟踪文件。git diff:查看已暂存和未暂存的更改。git log:查看近期提交信息,遵循仓库的提交消息风格。

    分析更改并编写提交消息:

      总结更改类型(新功能、功能增强、错误修复、代码重构、测试、文档等)。检查是否存在敏感信息。编写简洁(1-2句)的提交消息,突出“为什么”而非“做什么”。

    执行提交:

      并行运行以下命令:

        添加未跟踪文件到暂存区。

        使用 HEREDOC 格式创建提交:

        bash

        git commit -m "$(cat <<'EOF'Commit message here.🤖 Generated with [Claude Code](https://claude.ai/code)Co-Authored-By: Claude <noreply@anthropic.com>EOF)"

        运行 git status 确认提交成功。

    处理预提交钩子:

      如果因预提交钩子失败,重试一次提交。如果预提交钩子修改了文件,需修改提交以包含这些更改。

重要注意事项:

创建拉取请求(Creating pull requests)

使用 gh 命令通过 Bash 工具处理 GitHub 相关任务(如问题、拉取请求、检查和发布)。创建拉取请求时,需遵循以下步骤:

    并行运行命令:

      git status:查看未跟踪文件。git diff:查看暂存和未暂存更改。检查当前分支是否跟踪远程分支且与远程同步。git log 和 git diff main...HEAD:查看分支自 main 分支以来完整的提交历史。

    分析更改并编写拉取请求摘要:

      查看所有相关提交(不仅是最新提交),生成拉取请求摘要。

    执行拉取请求:

      并行运行以下命令:

        如果需要,创建新分支。

        如果需要,使用 -u 标志推送至远程。

        使用 gh pr create 创建拉取请求,格式如下:

        bash

        gh pr create --title "the pr title" --body "$(cat <<'EOF'## Summary<1-3 bullet points>#### Test plan[Checklist of TODOs for testing the pull request...]🤖 Generated with [Claude Code](https://claude.ai/code)EOF)"

    返回拉取请求 URL:供用户查看。

重要注意事项:

配置格式:

json

{  "command": "要执行的命令",  "timeout": 超时时间(可选,毫秒,最大600000),  "description": "命令描述(5-10字,清晰简洁)"}

    Glob

功能:快速匹配文件路径,支持任意代码库规模,适合按文件名模式查找文件。

使用场景

使用注意事项

配置格式:

json

{  "pattern": "文件匹配模式",  "path": "搜索目录(可选,默认当前工作目录)"}

    Grep

功能:快速搜索文件内容,支持任意代码库规模,适合查找包含特定正则表达式的文件。

使用场景

配置格式:

json

{  "pattern": "正则表达式",  "path": "搜索目录(可选,默认当前工作目录)",  "include": "包含的文件模式(可选,如 *.js)"}

    LS

功能:列出指定路径的文件和目录,路径必须为绝对路径。

使用场景

配置格式:

json

{  "path": "绝对路径",  "ignore": ["忽略的 Glob 模式(可选)"]}

    exit_plan_mode

功能:在计划模式下完成计划后,提示用户退出计划模式。

配置格式:

json

{  "plan": "计划内容(支持 Markdown,需简洁)"}

    Read

功能:读取本地文件系统中的文件,支持读取任何文件(包括图像文件)。

使用场景

配置格式:

json

{  "file_path": "文件绝对路径",  "offset": 起始行号(可选,仅用于大文件),  "limit": 读取行数(可选,仅用于大文件)}

    Edit

功能:对文件进行精确字符串替换。

使用注意事项

配置格式:

json

{  "file_path": "文件绝对路径",  "old_string": "要替换的文本",  "new_string": "替换后的文本",  "replace_all": 是否替换所有匹配项(可选,默认 false}

    MultiEdit

功能:对同一文件执行多个查找和替换操作,基于 Edit 工具,适合需要多次编辑的场景。

使用注意事项

配置格式:

json

{  "file_path": "文件绝对路径",  "edits": [    {      "old_string": "要替换的文本",      "new_string": "替换后的文本",      "replace_all": 是否替换所有匹配项(可选,默认 false}  ]}

    Write

功能:向本地文件系统写入文件。

使用注意事项

配置格式:

json

{  "file_path": "文件绝对路径",  "content": "写入内容"}

    NotebookRead

功能:读取 Jupyter 笔记本(.ipynb 文件),返回所有单元格及其输出。

配置格式:

json

{  "notebook_path": "笔记本绝对路径"}

    NotebookEdit

功能:替换 Jupyter 笔记本中指定单元格的内容,支持插入或删除单元格。

使用场景

配置格式:

json

{  "notebook_path": "笔记本绝对路径",  "cell_number": 单元格索引(0-based),  "new_source": 新单元格内容,  "cell_type": "code | markdown(可选,默认当前单元格类型,insert 时必填)",  "edit_mode": "replace | insert | delete(可选,默认 replace)"}

    WebFetch

功能:从指定 URL 获取内容并使用 AI 模型处理,适合提取和分析网页内容。

使用注意事项

配置格式:

json

{  "url": "要获取的 URL",  "prompt": "处理内容的提示"}

    TodoRead

功能:读取当前会话的任务列表,主动检查任务状态。

使用场景

配置格式:

json

{}

    TodoWrite

功能:创建和管理结构化的任务列表,帮助跟踪编码会话进度。

使用场景

不使用场景

任务状态与管理

配置格式:

json

{  "todos": [    {      "content": "任务内容",      "status": "pending | in_progress | completed",      "priority": "high | medium | low",      "id": "任务ID"    }  ]}

    WebSearch

功能:搜索网络并使用结果补充回答,适合获取最新信息。

使用注意事项

配置格式:

json

{  "query": "搜索查询",  "allowed_domains": ["允许的域名(可选)"],  "blocked_domains": ["屏蔽的域名(可选)"]}

总结

Claude Code 的工具集为开发者提供了强大的功能,涵盖文件操作、代码编辑、任务管理和网络信息获取等方面。通过合理使用这些工具,开发者可以高效完成复杂任务。关键点包括:

通过本文的整理,开发者可以更清晰地理解和应用 Claude Code 的工具,提升开发效率和代码质量。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Claude Code 工具集 代码开发 Bash Agent 工具
相关文章