# 模块 8:自定义 Agent:把稳定角色做成资产
自定义 Agent 不是另起一套 Prompt。
它把一个稳定的职责、可用工具、默认指令和交付边界封装为可选择的角色,让每次任务不必从“你是谁、能做什么”重新说明。
---
# 它和其他资产分别解决什么?
| 资产 | 固化的内容 | 不承担的内容 |
|---|---|---|
| Rule | 必须遵守的长期约束 | 多步任务编排 |
| Prompt | 一类提问的输入输出结构 | 角色权限与默认工具 |
| Checklist | 固定遗漏点 | 源码分析与方案判断 |
| Skill | 多步工作流、资源与停止条件 | 对话入口的默认身份 |
| 自定义 Agent | 角色、指令、模型和工具边界 | 某个任务的项目事实 |
自定义 Agent 负责“谁来做、能做什么”;Skill 负责“这类任务按什么流程完成”。
---
# 一个自定义 Agent 的配置契约
```md
---
name: 状态变更审查
description: 分析状态写入、资源副作用与验证边界。
argument-hint: "变更目标、相关源码、测试或 diff"
model: <当前环境允许的模型>
tools: <仅选择完成该职责所需的工具>
---
先提取事实;证据不足时列出缺口;
不修改代码;输出影响链路、方案比较、验证项和待确认事项。
```
标头:让 Trae 识别角色、入口与能力边界
正文:让 Agent 在任务中保持判断与交付边界
---
# 固定配置与运行时输入必须分开
| 固定在自定义 Agent 中 | 每次任务重新提供 |
|---|---|
| 角色名称与职责范围 | 本次变更目标 |
| 先取证、后判断的工作原则 | 相关目录、文件、diff、日志 |
| 可用工具与停止条件 | 当前状态、字段、接口与权限事实 |
| 结构化输出要求 | 实际执行过的测试或验证结果 |
| 引用哪些 Rule / Skill | 本次允许与禁止的改动范围 |
把项目路径、字段名和历史结论写死在 Agent 中,会让它离开原项目后继续错误复用。
---
# 什么时候不该创建自定义 Agent?
| 需求 | 更合适的做法 | 原因 |
|---|---|---|
| 只要一句固定约束 | Rule | 不需要独立角色 |
| 只生成一段固定格式文本 | Prompt / Command | 无需工具与长期指令 |
| 只核对少数固定项 | Checklist | 无需自主检索判断 |
| 只有一次临时排查 | 普通对话与任务记录 | 长期复用价值不足 |
| 需要稳定职责、工具边界和结构化交付 | 自定义 Agent | 角色本身有重复价值 |
“每个任务一个 Agent”会造成角色泛滥、说明重复和难以维护。