AggRoot
文档目录

最佳实践

本章汇总使用 AggRoot 的最佳实践和技巧,帮助你更高效地完成日常工作。


提示词技巧

具体明确

模糊的提示词会导致模糊的结果。尽量提供具体信息:

不推荐 推荐
"改一下那个文件" "修改 src/config.ts 第 23 行的超时值为 60000"
"帮我看看代码" "分析 src/domain/agent/aggregate.ts 的依赖关系"
"优化一下" "重构 src/plugins/core-tools/implementations/ 中的重复代码"

指定文件路径

始终提供完整的文件路径,让 AggRoot 精确定位:

请读取 src/domain/mcp/connection-manager.ts,分析重连逻辑的实现

分步处理复杂任务

将大任务拆分为多个小步骤:

请分步完成以下任务:
1. 先读取 src/plugins/ 下所有插件的 index.ts
2. 列出每个插件注册的工具
3. 找出哪些工具缺少风险等级标记

提供上下文

提供足够的背景信息让 AggRoot 理解你的意图:

我们正在将项目从 CommonJS 迁移到 ES Modules。
请检查 src/infrastructure/ 下的所有文件,
找出使用 require() 的地方并替换为 import。

Tips: 好的提示词 = 明确目标 + 具体路径 + 预期结果。如果第一次结果不理想,可以补充信息让 AggRoot 调整方向。


上下文管理

先用 DirectoryTree 建立全局视图

在深入探索之前,先获取项目结构:

请用 DirectoryTree 列出项目目录,排除 node_modules 和 dist,深度为 3

这比直接读取大量文件更节省 Token。

避免重复搜索

如果子代理已经探索了某个目录,其结果会包含"Files Accessed by Subagent"列表。主代理不会重复读取这些文件,你也无需再次请求。

善用 AGGROOT.md

AGGROOT.md 是项目级别的上下文文件,AggRoot 启动时会自动加载。将项目的关键信息放在这里:

  • 代码结构和架构决策
  • 非标准的构建/测试命令
  • 代码风格规则和例外情况
  • 常见的陷阱和注意事项

控制对话长度

长对话会消耗更多 Token。可以通过以下方式控制:

  • 使用 /reset 重置会话,开始新话题
  • 使用 /sessions 管理多个会话
  • 将探索任务委托给子代理,避免主对话膨胀

工具选择

优先使用专用工具

场景 推荐 不推荐
读取文件 Read cat (Shell)
编辑文件 Edit sed (Shell)
创建文件 Write echo > (Shell)
搜索文件名 Glob find (Shell)
搜索文件内容 Grep grep (Shell)
Git 操作 GitStatus git (Shell)
目录结构 DirectoryTree ls -R (Shell)

Shell 工具的使用场景

仅在以下情况使用 Shell 工具:

  • 运行构建/测试命令(npm run buildnpm test
  • 安装依赖(npm install
  • 执行系统命令(dockerkubectl
  • 专用工具无法完成的一站式操作

Edit vs Write

  • Edit — 修改现有文件的部分内容,最小化 Token 消耗
  • Write — 创建新文件或完全重写文件内容

优先使用 Edit,它只需提供旧文本和新文本,不需要传输整个文件。


并行调用

当多个工具调用之间没有依赖关系时,可以在一条消息中并行发起:

请同时执行以下操作:
1. 读取 src/config.ts
2. 读取 src/constants.ts
3. 搜索所有 TODO 注释

AggRoot 会在一次响应中并行执行这些调用,大幅减少等待时间。

适用场景:

  • 读取多个不相关的文件
  • 同时搜索不同模式
  • 并行启动多个 explore 子代理

不适用场景:

  • 后续操作依赖前一步的结果
  • 对同一文件的顺序修改

Tips: 并行调用的效率提升非常明显——3 个独立的文件读取,并行只需 1 次往返,串行需要 3 次。


子代理使用

何时使用子代理

任务类型 推荐代理 说明
探索代码结构 explore 快速扫描,轻量级
制定执行计划 plan 生成详细的步骤计划
代码审查 code-reviewer 专业审查,给出改进建议
复杂通用任务 general-purpose 通用代理,处理复杂逻辑

信任子代理结果

子代理返回的结果已经包含了它读取的所有文件信息。主代理不会重复读取这些文件——你也无需再次请求 AggRoot 读取子代理已处理的文件。

保持主上下文干净

将探索性、研究性的任务委托给子代理,只在主对话中保留结论和决策。这样可以让主对话的上下文更加精炼,减少 Token 消耗。


YOLO 模式

启用 YOLO 模式

/yolo
✅ YOLO mode enabled - tools will auto-execute

启用后,所有工具调用将自动执行,无需人工确认。

适用场景

  • 熟悉的、低风险的操作(读取文件、搜索代码)
  • 自动化脚本执行
  • 批量操作

应避免的场景

  • 删除文件或不可逆操作
  • 向远程仓库推送代码
  • 修改生产环境配置
  • 执行不确定的 Shell 命令

安全边界

即使开启 YOLO 模式,AggRoot 的安全控制仍然生效:

  • DANGEROUS_COMMANDS 黑名单中的命令仍会被拦截
  • SAFE_MODE 仍会限制代码执行范围
  • 高风险等级(high)的工具仍需确认

Tips: 对于日常开发,建议在安全操作时开启 YOLO 模式提高效率,但在执行破坏性操作前关闭或手动确认。


AGGROOT.md 配置

AGGROOT.md 是项目级别的上下文文件,AggRoot 启动时自动加载。保持它简洁且实用:

应该包含的内容

  • 项目概述 — 一段话说明项目是什么
  • 代码结构 — DDD 分层和关键目录说明
  • 非标准命令 — 独特的构建/测试/部署命令
  • 代码风格例外 — 与默认不同的规则(如 noUnusedLocals: false
  • 已知陷阱 — 容易踩坑的地方

不应该包含的内容

  • 可以从代码自动推断的信息
  • 频繁变化的临时状态
  • 过于详细的实现细节

使用 /init 自动生成

/init

AggRoot 会扫描项目并自动生成 AGGROOT.md,你可以在此基础上修改。


记忆管理

添加重要记忆

使用 /memory 命令保存跨会话的重要信息:

/memory add 项目使用 Vitest 测试框架,不是 Jest
/memory add 前端代码在 src/ui/ 下,使用 React

查看和搜索记忆

/memory list          # 列出所有项目记忆
/memory search 测试    # 搜索包含"测试"的记忆

记忆最佳实践

  • 添加:项目特定的约定、重要的架构决策、非显而易见的配置
  • 避免:临时状态、可从代码推断的信息、频繁变化的细节
  • 定期清理:过时的记忆应删除,避免误导

Tips: 好的记忆是那些"即使换了会话也希望记住"的信息。如果某个信息只在当前对话中有用,不需要保存为记忆。