AggRoot
文档目录

代理配置文件

AggRoot 的代理系统通过 JSON 配置文件定义代理的行为、工具权限、人设等。本章详细介绍代理配置的各个字段。


配置文件结构

代理配置是一个 JSON 文件,包含代理的所有定义信息:

{
  "name": "agent-coder",
  "version": "1.0.0",
  "description": "通用编码代理",
  "agent_type": "task_oriented",
  "approval_mode": "safe_only",
  "tools": ["Read", "Write", "Edit", "Glob", "Grep", "Shell", "DirectoryTree"],
  "loop": {
    "max_iterations": 50,
    "on_error": "ask"
  },
  "identity": "你是一个专业的编程助手...",
  "personality": ["严谨", "高效", "注重代码质量"],
  "speaking_style": ["简洁", "技术性", "不啰嗦"],
  "behavior_guidelines": [
    "优先使用专用工具而非 Shell 命令",
    "修改代码前先读取理解现有代码",
    "每次修改后运行测试验证"
  ],
  "prohibited_actions": [
    "不要删除 .env 文件",
    "不要修改 package-lock.json"
  ],
  "thinking_examples": [
    {
      "task": "修复 Bug",
      "reasoning": "先分析错误信息,定位相关代码,理解上下文,再应用最小修复",
      "action": "使用 /debug 技能分析错误,然后用 Edit 工具修复"
    }
  ],
  "examples": [
    {
      "user": "帮我修复这个 TypeError",
      "assistant": "我来分析这个错误。首先让我找到相关的代码文件..."
    }
  ]
}

字段详解

name — 代理名称

  • 类型: string
  • 必填: 是
  • 说明: 代理的唯一标识符,用于选择和切换代理
"name": "agent-coder"

命名建议使用小写字母和连字符,如 explorecode-reviewerplan-agent

version — 版本号

  • 类型: string
  • 格式: 语义化版本 X.Y.Z
  • 必填: 否
"version": "1.0.0"

description — 描述

  • 类型: string
  • 必填: 否
  • 说明: 代理的简要描述,用于在代理列表中展示
"description": "通用编码代理,擅长代码编写、重构和调试"

agent_type — 代理类型

  • 类型: string
  • 必填: 否
  • 可选值:
类型 说明
task_oriented 任务导向型,专注于完成特定任务
conversational 对话型,适合自由交流和问答
"agent_type": "task_oriented"

task_oriented — 适合编码、修复 Bug、重构等需要多步操作的任务。代理会主动使用工具、规划步骤、验证结果。

conversational — 适合问答、解释、讨论等对话场景。代理更注重交互体验,减少不必要的工具调用。

approval_mode — 审批模式

  • 类型: string
  • 必填: 否
  • 可选值:
模式 说明
auto 自动执行所有操作(YOLO 模式)
safe_only 低风险自动执行,中高风险需确认
always_ask 所有操作都需要确认
"approval_mode": "safe_only"

tools — 工具列表

  • 类型: string[]
  • 必填: 否
  • 说明: 代理可以使用的工具列表
"tools": ["Read", "Write", "Edit", "Glob", "Grep", "Shell", "DirectoryTree"]

可选工具包括:

类别 工具
文件操作 Read, Write, Edit, Glob, Grep, DirectoryTree
代码工具 CodeExecute, CodeValidate, CodeFormat, CodeAnalyze, CodeSearch, CodeRefactor
Shell Shell
Git GitStatus, GitDiff, GitLog, GitBranch, GitAdd, GitCommit, GitPush, GitPull
网络 WebSearch, WebFetch, HttpRequest
技能 Skill, ListSkills
用户交互 AskUser

loop — 循环配置

  • 类型: object
  • 必填: 否
  • 说明: 控制代理循环(Agent Loop)的行为
"loop": {
  "max_iterations": 50,
  "maxCallHistory": 100,
  "loopThreshold": 3,
  "loopTimeWindowMs": 60000,
  "on_error": "ask",
  "hooks": []
}
字段 类型 说明
max_iterations integer 最大迭代次数(默认 50)
maxCallHistory integer 最大调用历史记录数
loopThreshold integer 循环检测阈值
loopTimeWindowMs integer 循环检测时间窗口(毫秒)
on_error string 错误处理策略:retry(重试)/ abort(中止)/ ask(询问)
hooks string[] 循环钩子

identity — 身份/人设

  • 类型: string
  • 必填: 否
  • 说明: 代理的系统提示词主体,定义代理的核心身份和行为准则
"identity": "你是一个专业的编码助手。你的目标是帮助用户高效地完成编程任务。\n\n核心原则:\n1. 先理解需求,再动手实现\n2. 保持代码简洁可读\n3. 修改前先读取理解现有代码\n4. 每次修改后验证结果"

这是代理配置中最重要的字段,直接影响代理的行为质量。

personality — 性格特征

  • 类型: string[]
  • 必填: 否
  • 说明: 定义代理的性格标签
"personality": ["严谨", "高效", "注重代码质量", "善于分析"]

speaking_style — 说话风格

  • 类型: string[]
  • 必填: 否
  • 说明: 定义代理的沟通风格
"speaking_style": ["简洁", "技术性", "不啰嗦", "中文为主"]

behavior_guidelines — 行为指导

  • 类型: string[]
  • 必填: 否
  • 说明: 具体的行为规则,代理在执行任务时应遵循
"behavior_guidelines": [
  "优先使用专用工具而非 Shell 命令",
  "修改代码前先读取理解现有代码",
  "每次修改后运行测试验证",
  "使用 Edit 而非 Write 修改现有文件",
  "不要一次性修改超过 3 个文件"
]

prohibited_actions — 禁止操作

  • 类型: string[]
  • 必填: 否
  • 说明: 明确禁止代理执行的操作
"prohibited_actions": [
  "不要删除 .env 文件",
  "不要修改 package-lock.json",
  "不要执行 git push --force",
  "不要在生产环境执行破坏性操作"
]

thinking_examples — 思考示例

  • 类型: array
  • 必填: 否
  • 说明: 展示代理在面对任务时的思考过程,帮助模型学习推理方式
"thinking_examples": [
  {
    "task": "修复 Bug",
    "reasoning": "先分析错误信息,定位相关代码,理解上下文,再应用最小修复",
    "action": "使用 /debug 技能分析错误,然后用 Edit 工具精确修复"
  },
  {
    "task": "重构代码",
    "reasoning": "先全面理解代码结构,制定重构计划,逐步修改并持续测试",
    "action": "进入 Plan Mode,制定步骤,逐步用 Edit 修改"
  }
]

examples — 对话示例

  • 类型: array
  • 必填: 否
  • 说明: 提供用户与代理的对话示例,帮助模型理解期望的交互方式
"examples": [
  {
    "user": "帮我修复这个 TypeError",
    "assistant": "我来分析这个错误。首先让我找到相关的代码文件..."
  },
  {
    "user": "重构这个模块",
    "assistant": "好的,让我先了解这个模块的结构和依赖关系..."
  }
]

memory — 记忆配置

  • 类型: object
  • 必填: 否
  • 说明: 控制代理的记忆管理
"memory": {
  "sensorySize": 10,
  "shortTermSize": 50,
  "enableVectorSearch": false
}

示例:agent-coder.json 完整解析

以下是一个完整的编码代理配置,逐字段解析:

{
  // 基本信息
  "name": "agent-coder",           // 代理标识,用于 /switch 或 # 选择
  "version": "1.0.0",              // 语义化版本
  "description": "通用编码代理,擅长代码编写、重构和调试",

  // 行为类型 — task_oriented 适合需要多步操作的任务
  "agent_type": "task_oriented",

  // 安全模式 — 低风险自动执行,中高风险需确认
  "approval_mode": "safe_only",

  // 允许使用的工具
  "tools": [
    "Read", "Write", "Edit", "Glob", "Grep",
    "Shell", "DirectoryTree", "CodeExecute",
    "GitStatus", "GitDiff", "GitLog", "GitCommit",
    "WebSearch", "AskUser", "Skill"
  ],

  // 循环控制
  "loop": {
    "max_iterations": 50,          // 最多 50 轮工具调用
    "on_error": "ask"              // 出错时询问用户
  },

  // 系统提示词 — 定义代理的核心身份
  "identity": "你是一个专业的编码助手。你的目标是帮助用户高效地完成编程任务。\n\n核心原则:\n1. 先理解需求,再动手实现\n2. 保持代码简洁可读\n3. 修改前先读取理解现有代码\n4. 每次修改后验证结果",

  // 性格标签
  "personality": ["严谨", "高效", "注重代码质量"],

  // 说话风格
  "speaking_style": ["简洁", "技术性", "不啰嗦"],

  // 行为指导 — 具体的规则
  "behavior_guidelines": [
    "优先使用专用工具而非 Shell 命令",
    "使用 Edit 而非 Write 修改现有文件",
    "修改代码前先读取理解现有代码",
    "每次修改后运行测试验证"
  ],

  // 禁止操作 — 绝对不能做的事
  "prohibited_actions": [
    "不要删除 .env 文件",
    "不要执行 git push --force"
  ],

  // 思考示例 — 教模型如何推理
  "thinking_examples": [
    {
      "task": "修复 Bug",
      "reasoning": "先分析错误信息,定位相关代码,理解上下文,再应用最小修复",
      "action": "使用 /debug 技能分析错误,然后用 Edit 修复"
    }
  ],

  // 对话示例 — 展示期望的交互方式
  "examples": [
    {
      "user": "帮我修复这个 TypeError",
      "assistant": "我来分析这个错误。首先让我找到相关的代码文件..."
    }
  ]
}

自定义代理

除了 JSON 配置,AggRoot 还支持通过 Markdown 文件创建自定义代理。

代理文件目录

层级 路径 作用
项目级 .aggroot/agents/*.md 仅对当前项目生效
全局级 ~/.aggroot/agents/*.md 对所有项目生效

Markdown 代理格式

.aggroot/agents/ 目录下创建 Markdown 文件,使用 YAML frontmatter:

---
name: my-custom-agent
description: 自定义代理描述
whenToUse:
  - 当需要执行特定类型的任务时
whenNotToUse:
  - 不适合的场景
tools:
  - Read
  - Write
  - Edit
  - Glob
  - Grep
preferredModel: deepseek-v4-flash
approvalMode: safe_only
personality:
  - 严谨
  - 高效
behaviorGuidelines:
  - 先理解需求再动手
  - 保持代码简洁
prohibitedActions:
  - 不要删除重要配置文件
---

## 代理身份

你是一个专注于 [特定领域] 的编程助手。

## 核心原则

1. 原则一
2. 原则二
3. 原则三

## 工作流程

1. 接收任务
2. 分析需求
3. 制定计划
4. 逐步执行
5. 验证结果

Frontmatter 字段

字段 类型 说明
name string 代理名称
description string 代理描述
whenToUse string[] 推荐使用场景
whenNotToUse string[] 不推荐使用场景
tools string[] 允许使用的工具
preferredModel string 偏好的模型
approvalMode string 审批模式
personality string[] 性格特征
behaviorGuidelines string[] 行为指导
prohibitedActions string[] 禁止操作

Markdown 正文部分即为代理的系统提示词(identity)。


内置代理

AggRoot 预装以下内置代理:

代理名 类型 说明
coding task_oriented 通用编码代理(默认)
explore task_oriented 代码探索,快速扫描结构
plan task_oriented 制定执行计划
code-reviewer task_oriented 代码审查
risk-control task_oriented 安全风险控制
verification task_oriented 验证测试结果