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) 工具调用链
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 工具能力更强但配置更复杂,适合需要数据库/浏览器等外部能力的场景。
📖 小节
- 工具分六类:读取、搜索、写入、编辑、执行、网络
- 最小权限原则:只绑定任务所需的工具
- 优先 Edit 而非 Write,优先搜索定位而非盲目读取
- 权限管理三层:项目级、Skill 级、工具参数级
📝 作业
- 基础题(难度⭐):分析你现有 Skill 的工具绑定,是否有过度授权或权限不足的情况。
- 进阶题(难度⭐⭐):创建一个自动修复 lint 问题的 Skill,合理选择工具并设置权限。
- 挑战题(难度⭐⭐⭐):设计一个工具调用链优化方案,对比优化前后的调用次数和耗时。