记忆系统与 Agent 定制完全指南(五):自定义 Agent 开发(二)
·
title: 记忆系统与 Agent 定制完全指南(五)自定义 Agent 开发(二)——Agent 的工具与权限
date: 2026-07-10
category: AI 开发工具
tags: [Claude Code, Agent, 工具, 权限, 安全]
记忆系统与 Agent 定制完全指南(五):自定义 Agent 开发(二)
Agent 能做什么、不能做什么,取决于它的工具权限。本篇教你给 Agent 配置精确的工具清单,让每个 Agent 只做它该做的事。
前言
Agent 不是万能的——它需要工具来完成工作。但并不是每个 Agent 都需要所有工具:
- 前端 Agent 不需要操作数据库
- 后端 Agent 不需要改 CSS
- 安全 Agent 只需要读取文件,不需要写入
本篇教你理解 Claude Code 的工具系统,给每个 Agent 配置精确的权限。
一、Claude Code 的工具体系
1.1 核心工具分类
Claude Code 提供以下几类工具:
| 类别 | 工具 | 说明 |
|---|---|---|
| 文件操作 | Read, Write, Edit | 读取、创建、修改文件 |
| 搜索 | Glob, Grep | 文件搜索、内容搜索 |
| 命令执行 | Bash | 执行 shell 命令 |
| Agent 调度 | Agent | 启动子 Agent |
| 任务管理 | TaskCreate, TaskUpdate, TaskList, TaskGet | 创建和管理任务 |
| 外部服务 | WebFetch, WebSearch | 网页抓取、搜索 |
| 通信 | SendMessage | Agent 间通信 |
| 调度 | CronCreate, CronDelete, ScheduleWakeup | 定时任务 |
| 设计系统 | DesignSync | 与设计系统同步 |
1.2 工具的权限等级
| 等级 | 说明 | 示例 |
|---|---|---|
| 只读 | 只能读取文件、搜索内容 | Read, Glob, Grep |
| 写入 | 可以创建和修改文件 | Write, Edit |
| 执行 | 可以运行命令 | Bash |
| 远程 | 可以访问外部服务 | WebFetch, SendMessage |
| 危险 | 可能破坏系统 | rm, git push --force |
二、Agent 的工具配置
2.1 在 Agent 定义中声明工具
Agent 文件中的 tools 字段声明了它可以使用哪些工具:
---
name: frontend-developer
tools: [Read, Write, Edit, Glob, Grep, Bash, NotebookEdit]
---
2.2 不同 Agent 的工具配置示例
前端开发 Agent
---
name: frontend-developer
tools: [Read, Write, Edit, Glob, Grep, Bash, NotebookEdit]
---
需要的工具:
- Read/Edit/Write:修改 Vue、TS、CSS 文件
- Glob/Grep:搜索组件和文件
- Bash:运行 pnpm dev、pnpm build、pnpm test
- NotebookEdit:处理 Jupyter 笔记本(如果需要)
后端开发 Agent
---
name: backend-developer
tools: [Read, Write, Edit, Glob, Grep, Bash]
---
需要的工具:
- Read/Edit/Write:修改 Java、XML、YAML 文件
- Glob/Grep:搜索 Controller、Service、Mapper
- Bash:运行 mvn compile、mvn test
代码审查 Agent
---
name: code-reviewer
tools: [Read, Glob, Grep, Bash]
---
需要的工具:
- Read:读取代码文件
- Glob/Grep:搜索相关文件
- Bash:运行 lint、test 命令
- 不需要 Write/Edit:审查 Agent 只读不改
DevOps Agent
---
name: devops-engineer
tools: [Read, Write, Bash]
---
需要的工具:
- Bash:执行 docker、kubectl、ssh 命令
- Read:读取配置文件
- Write:生成 Dockerfile、docker-compose.yml
文档 Agent
---
name: doc-writer
tools: [Read, Write, Glob, Grep, WebSearch]
---
需要的工具:
- Read/Glob/Grep:读取代码和配置
- Write:生成 Markdown 文档
- WebSearch:搜索最新的技术文档
2.3 最小权限原则
给 Agent 最少需要的工具,不多给。
❌ 差的配置:
tools: [Read, Write, Edit, Glob, Grep, Bash, WebFetch, Agent, SendMessage]
→ 给了太多权限,不安全
✅ 好的配置:
tools: [Read, Write, Edit, Glob, Grep, Bash]
→ 只给前端开发需要的工具
三、Agent 的权限限制
3.1 禁止的危险操作
某些 Agent 应该被禁止执行危险操作:
## 禁止的操作
以下 Bash 命令严禁使用:
- rm -rf /(删除整个文件系统)
- git push --force(强制推送,可能丢失历史)
- dd if=/dev/zero(格式化磁盘)
- 任何涉及 /etc/shadow 或 passwd 的命令
3.2 文件访问限制
可以限制 Agent 只能访问特定目录:
## 文件访问范围
- 可以读写:src/、components/、api/、types/、store/、router/
- 可以读取:public/、assets/、index.html
- 禁止访问:.git/、node_modules/、dist/、.env(敏感文件)
3.3 命令执行限制
## 允许的 Bash 命令
前端相关:
- pnpm install
- pnpm dev
- pnpm build
- pnpm test
- npx eslint
- npx prettier
禁止的命令:
- sudo(特权命令)
- curl/wget 外部 URL(网络安全)
- 任何涉及数据库的直接操作
四、Agent 的模型选择
4.1 不同模型的适用场景
| 模型 | 特点 | 适用场景 |
|---|---|---|
| Opus | 最强推理,最贵 | 复杂架构设计、Code Review |
| Sonnet | 平衡速度与质量 | 日常开发、页面生成 |
| Haiku | 最快最便宜 | 简单查询、文件搜索 |
| Fable | 创意生成 | 文档写作、方案设计 |
4.2 Agent 的模型配置
---
name: frontend-developer
model: sonnet # 日常开发用 Sonnet,平衡速度和成本
---
---
name: code-reviewer
model: opus # 代码审查用 Opus,需要最强推理能力
---
---
name: doc-writer
model: fable # 文档写作用 Fable,创意生成能力强
---
4.3 推理强度配置
---
name: frontend-developer
effort: medium # 中等推理,适合常规开发
---
---
name: backend-developer
effort: high # 高推理,后端逻辑复杂
---
---
name: code-reviewer
effort: xhigh # 超高推理,全面审查需要深度分析
---
五、Agent 的权限管理
5.1 项目级权限
在 .claude/settings.json 中配置 Agent 的权限:
{
"agents": {
"frontend-developer": {
"allowedBashCommands": ["pnpm*", "npx*", "tsc*"],
"deniedBashCommands": ["sudo*", "rm -rf*", "curl*", "wget*"],
"readPaths": ["src/", "public/", "index.html"],
"writePaths": ["src/"]
},
"backend-developer": {
"allowedBashCommands": ["mvn*", "java*"],
"deniedBashCommands": ["sudo*", "rm -rf*"],
"readPaths": ["src/main/java/", "src/main/resources/"],
"writePaths": ["src/main/java/", "src/main/resources/"]
}
}
}
5.2 权限验证
Claude Code 在执行 Agent 操作时会进行权限验证:
Agent 请求:Write src/views/UserList.vue
权限检查:
✅ src/views/ 在 writePaths 范围内
✅ Write 工具在允许列表中
→ 允许执行
Agent 请求:Bash "rm -rf node_modules"
权限检查:
❌ rm -rf 在 deniedBashCommands 中
→ 拒绝执行,返回错误
5.3 运行时权限提升
某些操作可能需要临时提升权限:
Agent 请求:运行 pnpm build
权限检查:
✅ pnpm* 在 allowedBashCommands 中
→ 允许执行
Agent 请求:运行 sudo systemctl restart nginx
权限检查:
❌ sudo* 在 deniedBashCommands 中
→ 拒绝执行
用户干预:
"这个操作需要 sudo 权限,要我帮你执行吗?"
[是] [否]
六、实战:配置一个安全的 Code Review Agent
6.1 场景
Code Review Agent 只需要读取代码、运行测试、生成报告。它不应该:
- 修改任何文件
- 执行可能破坏系统的命令
- 访问外部网络
6.2 Agent 定义
---
name: code-reviewer
description: 专业的代码审查 Agent,多维度审查代码质量
model: opus
effort: xhigh
tools: [Read, Glob, Grep, Bash]
---
# 代码审查 Agent
## 角色定义
你是一个严格的代码审查专家。你的职责是发现代码中的问题,
但不修改任何代码。
## 审查范围
- 安全性:SQL 注入、XSS、权限校验
- 性能:N+1 查询、不必要的重渲染
- 代码质量:命名、重复、注释
- 测试覆盖:边界情况、异常处理
## 允许的操作
- 读取文件(Read)
- 搜索文件(Glob)
- 搜索内容(Grep)
- 运行只读命令(Bash):
- git diff
- git log
- pnpm exec eslint
- pnpm test
- npx tsc --noEmit
## 禁止的操作
- 修改任何文件(无 Write/Edit 权限)
- 执行 git commit / git push
- 执行 rm / mv / cp 等文件操作
- 访问外部网络(无 WebFetch 权限)
## 输出格式
按以下格式输出审查报告:
1. 问题列表(文件、行号、问题描述、严重程度)
2. 修复建议
3. 评分(1-100)
6.3 使用
@code-reviewer 审查当前分支的所有改动
Claude 会以 code-reviewer Agent 的身份执行审查,严格遵守权限限制——只读不写。
七、Agent 权限的调试
7.1 查看 Agent 权限
@frontend-developer 你的权限是什么?
Agent 回答:
我的工具权限:
- Read ✅ 读取文件
- Write ✅ 创建/覆盖文件
- Edit ✅ 修改文件
- Glob ✅ 文件搜索
- Grep ✅ 内容搜索
- Bash ✅ 命令执行
- NotebookEdit ✅ Jupyter 编辑
禁止的操作:
- 无(前端开发需要完整文件操作权限)
7.2 权限被拒绝时
如果 Agent 尝试执行超出权限的操作:
Agent 尝试:Write .git/config
结果:权限拒绝 — .git/ 在禁止访问范围内
Agent 会自动报告错误,并建议替代方案。
八、这一章的核心心得
- 工具决定能力——Agent 能做什么,取决于它有哪些工具
- 最小权限原则——只给 Agent 它需要的工具
- 模型要匹配任务——Opus 用于审查,Sonnet 用于开发,Fable 用于文档
- 推理强度分级——简单任务 low,复杂任务 high/xhigh
- 运行时验证——Claude Code 在执行时验证权限,越权操作会被拒绝
- 禁止危险操作——明确列出 denied 命令,防止意外破坏
九、下一步
Agent 的定义、工具、权限都搞清楚了。但一个 Agent 只做一件事是不够的——复杂任务需要多个 Agent 协作。
下一篇我们学习 Agent 的编排与调度。
系列目录:
初识记忆系统——什么是记忆?为什么需要记忆?记忆文件编写规范——怎么写一条好的记忆记忆的检索与使用——Claude 如何在对话中调用记忆自定义 Agent 开发(一)——Agent 的定义与结构自定义 Agent 开发(二)——Agent 的工具与权限← 本篇- Agent 编排与调度(待写)
- Agent 与工具的深度集成(待写)
- 记忆系统与 Agent 配合——构建智能开发助手(待写)
更多推荐


所有评论(0)