跳到主要内容

创建自定义 Agent

Elftia 支持两种方式创建自定义 Agent:通过应用 UI 界面创建,或直接编写 .claude/agents/*.md 配置文件。两种方式最终都会生成一个 Markdown 格式的 Agent 配置文件。

通过 UI 创建

步骤

  1. 打开 Agent 面板(侧边栏 Agent 图标)
  2. 切换到「我的 Agent」标签
  3. 点击 「创建 Agent」 按钮
  4. 填写以下配置项:
配置项说明示例
名称Agent 的显示名称前端代码审查
描述一句话说明 Agent 的能力审查 React/TypeScript 代码质量
系统提示Agent 的核心指令(Markdown 格式)详见下方示例
模型使用的 LLM 模型或别名mainbackground
工具列表允许使用的工具(留空 = 继承全部)Read, Grep, Glob
技能自动加载的技能code-standards
MCP 服务器关联的 MCP 服务器github-mcp
权限模式工具执行安全级别default
  1. 点击「保存」完成创建

存储位置选择

创建时可以选择保存位置:

  • 项目级 — 保存到当前项目的 .claude/agents/ 目录,仅当前项目可用
  • 个人级 — 保存到 ~/.claude/agents/ 目录,所有项目通用

通过文件创建

直接在 .claude/agents/ 目录下创建 Markdown 文件即可。文件名即为 Agent 的标识符。

文件格式

---
name: Agent 名称
description: Agent 描述
model: main
permissionMode: default
tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
- ListDir
- WebSearch
- WebFetch
skills:
- code-standards
---

这里是系统提示的正文内容(Markdown 格式)。

Agent 会按照这里的指令来执行任务。

完整字段参考

字段类型默认值说明
namestring文件名Agent 显示名称
descriptionstringAgent 描述信息
modelstringmain模型选择(支持别名)
permissionModestringdefault权限模式
toolsstring[]全部继承允许使用的工具白名单
skillsstring[]自动加载的技能列表

配置示例

示例 1:编程助手

专注于编码任务,拥有完整的文件系统和 Shell 访问权限。

---
name: 全栈编程助手
description: 全栈开发助手,擅长 TypeScript/React/Node.js
model: main
permissionMode: acceptEdits
tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
- ListDir
- WebSearch
- WebFetch
- spawn_agent
skills:
- code-standards
- architecture-index
---

你是一个全栈开发助手,精通 TypeScript、React 和 Node.js。

## 工作流程

1. 先理解需求,必要时提问澄清
2. 使用 Glob/Grep 查找相关代码
3. 使用 Read 阅读关键文件
4. 制定实现方案
5. 使用 Write/Edit 编写代码
6. 使用 Bash 运行测试

## 编码规范

- 遵循项目的 ESLint 和 Prettier 配置
- 新文件不超过 400 行
- 使用 TypeScript 严格模式
- 为公共 API 添加 JSDoc 注释

示例 2:研究分析 Agent

只读模式,专注于信息收集和分析。

---
name: 研究分析师
description: 从代码库和网络收集信息,进行深度分析
model: main
permissionMode: plan
tools:
- Read
- Glob
- Grep
- ListDir
- WebSearch
- WebFetch
- list_skills
- read_skill
---

你是一个研究分析师,擅长从代码库和网络中收集信息进行分析。

## 工作方式

1. 仔细理解研究主题
2. 使用 Grep/Glob 在代码库中搜索相关信息
3. 使用 WebSearch 搜索外部资料
4. 使用 WebFetch 获取网页详细内容
5. 综合所有信息,给出结构化的分析报告

## 输出格式

使用 Markdown 格式输出报告,包含:
- 摘要
- 关键发现
- 详细分析
- 建议和结论

示例 3:任务自动化 Agent

使用后台子 Agent 并行处理多个子任务。

---
name: 任务编排器
description: 将复杂任务分解为子任务并行执行
model: main
permissionMode: acceptEdits
tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
- ListDir
- spawn_agent
- Notify
---

你是一个任务编排器,擅长将复杂任务分解为可并行执行的子任务。

## 工作流程

1. 分析任务,识别可并行的子任务
2. 使用 spawn_agent 启动子 Agent 处理各子任务
3. 收集子 Agent 的结果
4. 整合结果,检查一致性
5. 使用 Notify 通知任务完成

## 子 Agent 使用原则

- 每个子 Agent 负责一个明确的子任务
- 优先使用后台模式(background: true)实现并行
- 为子 Agent 配置最小必要的工具集
- 设置合理的 maxIterations 避免无限循环

工具白名单配置

tools 字段控制 Agent 可以使用哪些工具。

可用工具名称

工具名说明敏感度
Read读取文件内容安全
Write写入文件敏感
Edit编辑文件(查找替换)敏感
ListDir列出目录内容安全
Glob文件名模式匹配安全
Grep内容搜索安全
Bash执行 Shell 命令敏感
WebSearch网页搜索安全
WebFetch抓取网页内容安全
spawn_agent启动子 Agent敏感
list_skills列出可用技能安全
read_skill读取技能内容安全
Notify发送桌面通知安全
SessionsYield结束 Agent 循环安全

:::tip 留空继承全部工具 如果不设置 tools 字段,Agent 会继承所有可用工具(包括 MCP 工具)。只有在需要限制工具范围时才设置白名单。 :::

模型别名详解

别名行为
main / inherit使用当前会话的主模型
background使用用户在设置中配置的后台模型(通常是轻量级模型,如 Haiku)
sonnet将父模型的系列名替换为 sonnet(如 claude-3-opusclaude-3-sonnet
opus将父模型的系列名替换为 opus
haiku将父模型的系列名替换为 haiku

后台模型适合用于:

  • WebFetch 内容摘要
  • 子 Agent 的简单辅助任务
  • 不需要高推理能力的数据处理

技能关联

skills 字段中列出技能名称,Agent 启动时会自动将技能内容注入系统提示:

skills:
- code-standards # 项目编码规范
- architecture-index # 项目架构索引

技能的查找顺序:

  1. 项目目录 .claude/skills/<name>/SKILL.md
  2. 个人目录 ~/.claude/skills/<name>/SKILL.md
  3. 插件目录 ~/.elftia/plugins/skills/<name>/SKILL.md
  4. 内置技能

测试和调试

创建 Agent 后,建议进行以下测试:

  1. 基本对话 — 确认 Agent 理解自己的角色和能力
  2. 工具调用 — 验证工具白名单是否正确配置
  3. 权限确认 — 确认权限模式是否符合预期
  4. 技能加载 — 检查技能是否被正确注入系统提示
  5. 边界测试 — 尝试让 Agent 使用未授权的工具,验证是否被正确拒绝

常见问题

问题原因解决方案
Agent 不使用指定的工具系统提示中未引导使用在系统提示中明确说明何时使用什么工具
Agent 忽略了系统提示用户消息覆盖了指令使用更强语气的系统提示,添加「必须」等关键词
技能未生效技能名称拼写错误使用 list_skills 工具确认可用技能名称
文件保存位置错误路径不正确确认文件在 .claude/agents/~/.claude/agents/
YAML frontmatter 解析失败格式错误确认使用 --- 分隔符且 YAML 语法正确

相关链接