Skills: 工具绑定与调用

最后更新:2026-08-31

工具是 Skill 的双手——绑定什么工具,决定了 Skill 能做什么、不能做什么。


1. 工具体系概览

(1) 内置工具分类

类别 工具 能力 风险等级
读取 Read 读取文件内容 🟢 低
搜索 Grep, Glob 搜索代码模式 🟢 低
写入 Write 创建/覆盖文件 🟡 中
编辑 Edit 精确修改文件 🟡 中
执行 Bash 运行 Shell 命令 🔴 高
网络 WebFetch 获取网页内容 🟡 中

(2) MCP 工具

Model Context Protocol (MCP) 工具扩展了 AI 的能力边界:

JSON
// MCP 服务器配置示例
{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://..."
      }
    },
    "browser": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-browser"]
    }
  }
}

2. 工具选择策略

(1) 最小权限原则

TEXT 📖 仅展示
任务需求分析 → 确定必要工具 → 只绑定必要工具

示例:
┌─────────────────┬──────────────────────┐
│ 任务            │ 绑定工具             │
├─────────────────┼──────────────────────┤
│ 只读审查        │ Read, Grep, Glob     │
│ 代码修复        │ Read, Edit, Bash     │
│ 项目重构        │ Read, Write, Edit, Bash, Grep │
│ 全自动部署      │ 所有工具 + MCP       │
└─────────────────┴──────────────────────┘

(2) Edit vs Write

维度 Edit Write
粒度 精确到行 整个文件
安全性 只改指定部分 可能覆盖其他内容
适用场景 修复 bug、小调整 创建新文件、完全重写
推荐度 ✅ 优先使用 ⚠️ 谨慎使用

(3) Bash 的安全使用

MARKDOWN
## Bash 使用规则

允许执行的命令:
- git status, git diff, git log
- npm test, pytest, go test
- ruff check, eslint, prettier
- docker ps, kubectl get

禁止执行的命令:
- rm -rf / (危险删除)
- curl | bash (远程脚本执行)
- 包含密钥的环境变量导出
- 修改系统配置的命令

3. 工具调用优化

(1) 批量读取

MARKDOWN
# 低效:逐个读取
1. Read src/main.py
2. Read src/utils.py
3. Read src/config.py

# 高效:先用 Glob 确定范围,再有针对性地读取
1. Glob "src/**/*.py" → 获取文件列表
2. Read 关键文件(主入口、配置、工具函数)

(2) 搜索先行

MARKDOWN
# 低效:盲目读取所有文件
1. Read 所有 .py 文件(50+ 个文件)

# 高效:先搜索定位
1. Grep "class.*View" → 找到所有视图类
2. Grep "TODO|FIXME|HACK" → 找到技术债
3. 只 Read 搜索结果中需要深入的文件

(3) 工具调用链

100%
graph TD
    A[Glob: 确定文件范围] --> B[Grep: 搜索关键模式]
    B --> C[Read: 深入阅读目标文件]
    C --> D{需要修改?}
    D -->|是| E[Edit: 精确修改]
    D -->|否| F[输出分析报告]
    E --> G[Bash: 验证修改结果]

4. 工具绑定实战

▶ 示例 1:只读分析 Skill

YAML
---
name: tech-debt-scanner
description: "技术债扫描,检测 TODO/FIXME/HACK 和代码异味"
triggers:
  - keyword: "tech-debt|技术债"
tools:
  - Grep
  - Glob
  - Read
---

# 技术债扫描技能

## 执行流程
1. 使用 Grep 搜索 TODO、FIXME、HACK 注释
2. 使用 Grep 搜索代码异味模式(过长函数、深层嵌套)
3. 使用 Read 深入检查高优先级问题
4. 按优先级输出技术债清单

▶ 示例 2:自动修复 Skill

YAML
---
name: lint-fix
description: "自动修复代码风格问题"
triggers:
  - keyword: "lint-fix|修复风格"
tools:
  - Read
  - Bash
  - Edit
---

# 代码风格修复技能

## 执行流程
1. 使用 Bash 运行 linter(根据项目类型自动选择)
2. 分析 linter 输出
3. 对可自动修复的问题,运行 linter --fix
4. 对需手动修复的问题,使用 Edit 逐个修复
5. 使用 Bash 再次运行 linter 验证

5. 工具权限管理

(1) 项目级权限

JSON
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Read(*)",
      "Grep(*)",
      "Glob(*)",
      "Edit(src/**)",
      "Bash(npm test,pytest,git *)"
    ],
    "deny": [
      "Write(.env*)",
      "Bash(rm *)",
      "Bash(curl *)"
    ]
  }
}

(2) Skill 级权限

YAML
# 在 Skill frontmatter 中限定工具使用范围
tools:
  - Read
  - Edit:
      paths: ["src/**", "tests/**"]
  - Bash:
      commands: ["pytest", "ruff check"]

Alice 为团队配置了工具权限后,再也没有出现过 Skill 误删文件的问题。Bob 说:"权限管理不是限制能力,而是划定安全边界——让 Skill 在安全区内自由发挥。"


❓ 常见问题

Q 工具绑定了但 AI 没调用怎么办?
A 在提示词中明确要求使用工具并给出调用步骤。如果 AI 仍然不调用,可能是提示词不够具体或工具描述不够清晰。
Q 如何防止 Skill 执行危险操作?
A 三层防护——最小权限(只绑定必要工具)、路径限制(Edit 限定目录)、命令白名单(Bash 只允许安全命令)。
Q MCP 工具和内置工具有什么区别?
A 内置工具是 AI 平台自带的,MCP 工具是外部服务提供的。MCP 工具能力更强但配置更复杂,适合需要数据库/浏览器等外部能力的场景。

📖 小节


📝 作业

  1. 基础题(难度⭐):分析你现有 Skill 的工具绑定,是否有过度授权或权限不足的情况。
  2. 进阶题(难度⭐⭐):创建一个自动修复 lint 问题的 Skill,合理选择工具并设置权限。
  3. 挑战题(难度⭐⭐⭐):设计一个工具调用链优化方案,对比优化前后的调用次数和耗时。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏