# 模块 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”会造成角色泛滥、说明重复和难以维护。