Loading...
    • 开发者指南
    • API 参考
    • MCP
    • 资源
    • 发布说明
    Search...
    ⌘K
    快速开始
    Claude 简介快速入门
    模型与定价
    模型概览选择模型Claude 4.5 新功能迁移到 Claude 4.5模型弃用定价
    使用 Claude 构建
    功能概览使用 Messages API上下文窗口提示词最佳实践
    能力
    提示词缓存上下文编辑扩展思考工作量流式消息批量处理引用多语言支持Token 计数嵌入视觉PDF 支持Files API搜索结果结构化输出
    工具
    概览如何实现工具使用细粒度工具流式传输Bash 工具代码执行工具程序化工具调用计算机使用工具文本编辑器工具Web 获取工具Web 搜索工具内存工具工具搜索工具
    Agent Skills
    概览快速入门最佳实践在 API 中使用 Skills
    Agent SDK
    概览快速入门TypeScript SDKTypeScript V2(预览版)Python SDK迁移指南
    API 中的 MCP
    MCP 连接器远程 MCP 服务器
    第三方平台上的 Claude
    Amazon BedrockMicrosoft FoundryVertex AI
    提示词工程
    概览提示词生成器使用提示词模板提示词改进器清晰直接使用示例(多轮提示)让 Claude 思考(CoT)使用 XML 标签给 Claude 一个角色(系统提示词)预填充 Claude 的响应链接复杂提示词长上下文提示扩展思考提示
    测试与评估
    定义成功标准开发测试用例使用评估工具降低延迟
    加强防护栏
    减少幻觉提高输出一致性缓解越狱流式拒绝减少提示词泄露保持 Claude 的角色
    管理和监控
    Admin API 概览使用和成本 APIClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    工具

    Bash 工具

    Bash 工具使 Claude 能够在持久的 bash 会话中执行 shell 命令,允许系统操作、脚本执行和命令行自动化。

    Bash 工具使 Claude 能够在持久的 bash 会话中执行 shell 命令,允许系统操作、脚本执行和命令行自动化。

    概述

    Bash 工具为 Claude 提供:

    • 维持状态的持久 bash 会话
    • 运行任何 shell 命令的能力
    • 访问环境变量和工作目录
    • 命令链接和脚本编写功能

    模型兼容性

    模型工具版本
    Claude 4 模型和 Sonnet 3.7 (已弃用)bash_20250124

    较旧的工具版本不保证与较新的模型向后兼容。始终使用与您的模型版本相对应的工具版本。

    用例

    • 开发工作流:运行构建命令、测试和开发工具
    • 系统自动化:执行脚本、管理文件、自动化任务
    • 数据处理:处理文件、运行分析脚本、管理数据集
    • 环境设置:安装包、配置环境

    快速开始

    工作原理

    Bash 工具维持一个持久会话:

    1. Claude 确定要运行的命令
    2. 您在 bash shell 中执行命令
    3. 将输出(stdout 和 stderr)返回给 Claude
    4. 会话状态在命令之间保持(环境变量、工作目录)

    参数

    参数必需描述
    command是*要运行的 bash 命令
    restart否设置为 true 以重启 bash 会话

    *除非使用 restart,否则为必需

    示例:多步骤自动化

    Claude 可以链接命令以完成复杂任务:

    # 用户请求
    "Install the requests library and create a simple Python script that fetches a joke from an API, then run it."
    
    # Claude 的工具使用:
    # 1. 安装包
    {"command": "pip install requests"}
    
    # 2. 创建脚本
    {"command": "cat > fetch_joke.py << 'EOF'\nimport requests\nresponse = requests.get('https://official-joke-api.appspot.com/random_joke')\njoke = response.json()\nprint(f\"Setup: {joke['setup']}\")\nprint(f\"Punchline: {joke['punchline']}\")\nEOF"}
    
    # 3. 运行脚本
    {"command": "python fetch_joke.py"}

    会话在命令之间维持状态,因此在步骤 2 中创建的文件在步骤 3 中可用。


    实现 bash 工具

    Bash 工具实现为无模式工具。使用此工具时,您不需要像其他工具那样提供输入模式;该模式内置于 Claude 的模型中,无法修改。

    处理错误

    实现 bash 工具时,处理各种错误场景:

    遵循实现最佳实践

    安全性

    Bash 工具提供直接的系统访问。实现这些基本安全措施:

    • 在隔离环境中运行(Docker/VM)
    • 实现命令过滤和允许列表
    • 设置资源限制(CPU、内存、磁盘)
    • 记录所有执行的命令

    关键建议

    • 使用 ulimit 设置资源约束
    • 过滤危险命令(sudo、rm -rf 等)
    • 以最小用户权限运行
    • 监控和记录所有命令执行

    定价

    The bash tool adds 245 input tokens to your API calls.

    Additional tokens are consumed by:

    • Command outputs (stdout/stderr)
    • Error messages
    • Large file contents

    有关完整定价详情,请参阅工具使用定价。

    常见模式

    开发工作流

    • 运行测试:pytest && coverage report
    • 构建项目:npm install && npm run build
    • Git 操作:git status && git add . && git commit -m "message"

    文件操作

    • 处理数据:wc -l *.csv && ls -lh *.csv
    • 搜索文件:find . -name "*.py" | xargs grep "pattern"
    • 创建备份:tar -czf backup.tar.gz ./data

    系统任务

    • 检查资源:df -h && free -m
    • 进程管理:ps aux | grep python
    • 环境设置:export PATH=$PATH:/new/path && echo $PATH

    限制

    • 无交互式命令:无法处理 vim、less 或密码提示
    • 无 GUI 应用程序:仅限命令行
    • 会话范围:在对话中持久化,在 API 调用之间丢失
    • 输出限制:大型输出可能被截断
    • 无流式传输:完成后返回结果

    与其他工具结合

    Bash 工具与文本编辑器和其他工具结合时最强大。

    后续步骤

    工具使用概述

    了解 Claude 的工具使用

    • 实现 bash 工具
    import anthropic
    
    client = anthropic.Anthropic()
    
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        tools=[
            {
                "type": "bash_20250124",
                "name": "bash"
            }
        ],
        messages=[
            {"role": "user", "content": "List all Python files in the current directory."}
        ]
    )
    1. 1

      设置 bash 环境

      创建一个 Claude 可以交互的持久 bash 会话:

      import subprocess
      import threading
      import queue
      
      class BashSession:
          def __init__(self):
              self.process = subprocess.Popen(
                  ['/bin/bash'],
                  stdin=subprocess.PIPE,
                  stdout=subprocess.PIPE,
                  stderr=subprocess.PIPE,
                  text=True,
                  bufsize=0
              )
              self.output_queue = queue.Queue()
              self.error_queue = queue.Queue()
              self._start_readers()
    2. 2

      处理命令执行

      创建一个函数来执行命令并捕获输出:

      def execute_command(self, command):
          # 向 bash 发送命令
          self.process.stdin.write(command + '\n')
          self.process.stdin.flush()
          
          # 使用超时捕获输出
          output = self._read_output(timeout=10)
          return output
    3. 3

      处理 Claude 的工具调用

      从 Claude 的响应中提取并执行命令:

      for content in response.content:
          if content.type == "tool_use" and content.name == "bash":
              if content.input.get("restart"):
                  bash_session.restart()
                  result = "Bash session restarted"
              else:
                  command = content.input.get("command")
                  result = bash_session.execute_command(command)
              
              # 将结果返回给 Claude
              tool_result = {
                  "type": "tool_result",
                  "tool_use_id": content.id,
                  "content": result
              }
    4. 4

      实现安全措施

      添加验证和限制:

      def validate_command(command):
          # 阻止危险命令
          dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:']
          for pattern in dangerous_patterns:
              if pattern in command:
                  return False, f"Command contains dangerous pattern: {pattern}"
          
          # 根据需要添加更多验证
          return True, None

    文本编辑器工具

    使用 Claude 查看和编辑文本文件