[Augment] 使用技巧 - ACE (Augment Context Engine) 触发机制和提示词策略分析和高级技巧(仅供参考)

2025 年 6 月 17 日
 yuaotian

前言

最近没去玩 Cursor ,脚本也好久没更新,提示词( 4.8 版本)也没怎么更新,主要是对 Augment 感兴趣,在 Idea 上不要太舒服了,所以对这个 ACE (Augment Context Engine),产生了兴趣,想去深入了解学习,也为了更好写代码(bug)当牛马,下面大部分内容是自写+少量 AI 润色(代码块、流程图、表述不清楚的地方等),顺便拿出来水一贴。

下面是我对 intellij-augment-0.221.1.jar 包解析出来的原理解答和实际工作经验中探索出来的,所以有耐心的话慢慢看,没耐心可以跳到最下面(高级技巧、高效触发 ACE )的部分,稍微学一下,注意怎么高效使用即可。

ACE (Augment Context Engine) 触发机制

1 、ACE 触发条件解析

1.1 、ACE 自动触发

自动触发场景:

public class ChatRequest {
    public String mode;                     // "AGENT" 模式自动触发 ACE
    public BlobsPayload blobs;              // 有文件上下文时触发
    public List<String> userGuidedBlobs;    // 用户指定文件时强制触发
    public String contextCodeExchangeRequestId; // 上下文代码交换时触发
}

1.2 、手动触发

public class AgentCodebaseRetrievalRequest {
    public String informationRequest;       // 信息请求描述
    public BlobsPayload blobs;             // 相关文件 blob
    public List<Exchange> chatHistory;      // 聊天历史上下文
    public Integer maxOutputLength;        // 最大输出长度
}

2 、Augment 的意图识别系统

2.1 、查询类型分类

基于分析,ACE 能识别以下查询类型:

代码理解类查询:

代码搜索类查询:

架构分析类查询:

问题诊断类查询:

代码生成类查询:

2.2 上下文权重计算

// 基于 FeatureDetectionFlags 的分析
public class ContextWeightCalculator {
    public double calculateWeight(String query, FileContext context) {
        double weight = 0.0;
        
        // 关键词权重
        if (containsCodeTerms(query)) weight += 0.3;
        if (containsArchitectureTerms(query)) weight += 0.4;
        if (containsDebuggingTerms(query)) weight += 0.5;
        
        // 上下文相关性
        if (hasSelectedCode(context)) weight += 0.2;
        if (hasMultipleFiles(context)) weight += 0.3;
        if (hasComplexProject(context)) weight += 0.4;
        
        return Math.min(weight, 1.0);
    }
}

3 、高效触发 ACE

1. 触发 ACE 的关键词和短语

1.1 强制触发词汇

架构相关:

代码库级别:

深度分析:

1.2 上下文增强词汇

文件引用:

范围指定:

2. 提示词模板(参考)

2.1 代码理解模板

模板 1:深度代码分析
"请深入分析[具体代码/文件/功能]的实现原理,包括:
1. 核心逻辑和算法
2. 与其他模块的交互
3. 在整个项目中的作用
4. 潜在的改进点"

模板 2:架构级别理解
"从整体架构的角度,解释[功能/模块]是如何工作的:
- 在系统中的位置
- 与其他组件的关系
- 数据流向和处理过程
- 设计模式和最佳实践"

2.2 问题诊断模板

模板 3:Bug 分析 "帮我分析这个问题:[具体问题描述] 请检查:

模板 4:性能分析 "分析[功能/模块]的性能问题:

2.3 代码生成模板

模板 5:基于现有代码生成 "基于项目中现有的[类似功能/模式],帮我生成[新功能]:

模板 6:接口实现 "为[接口/抽象类]创建实现,参考项目中的其他实现:

实战示例

1. 触发 ACE 的有效查询示例

示例 1:架构分析查询

用户查询:
"请分析这个 Spring Boot 项目的整体架构,包括:
1. 各层之间的关系( Controller 、Service 、Repository )
2. 数据流向和处理过程
3. 配置文件的作用
4. 与数据库的交互方式"

ACE 响应特征:
- 会扫描所有相关的 Java 文件
- 分析 Spring 配置文件
- 检查数据库配置和实体类
- 生成架构图和说明

示例 2:代码搜索查询

用户查询:
在整个项目中找到所有使用 Redis 的地方,包括:
 - 配置文件中的 Redis 设置
 - 代码中的 Redis 操作
 - 缓存注解的使用
 - 相关的工具类"

ACE 响应特征:
 - 搜索所有 Java 文件中的 Redis 相关代码
 - 检查配置文件( application.yml 等)
 - 分析依赖文件( pom.xml 等)
 - 提供完整的使用清单

示例 3:问题诊断查询

用户查询:
"这个接口响应很慢,帮我分析可能的原因:
@GetMapping('/api/users')
请检查相关的 Service 、Repository 和数据库查询"

ACE 响应特征:
 - 分析 Controller 、Service 、Repository 的完整调用链
 - 检查数据库查询和索引
 - 分析缓存策略
 - 提供性能优化建议

2. 无效查询的改进建议

无效查询示例:

❌ "这个代码有什么问题?"
改进为:
✅ "分析这个 UserService 类的实现,检查是否有性能问题、安全漏洞或违反最佳实践的地方"

❌ "帮我写个函数"
改进为:
✅ "基于项目中现有的数据访问模式,帮我为 User 实体创建一个 CRUD 服务类,包括适当的异常处理和事务管理"

❌ "这个项目是做什么的?"
改进为:
✅ "通过分析项目结构、配置文件和主要类,解释这个应用的业务功能、技术架构和部署方式"

高级触发技巧 (仅供参考)

1. 利用 Agent 模式

分析整个项目的安全性问题

// 在 ChatRequest 中设置 mode 为"AGENT"
{
    "mode": "AGENT",
    "message": "分析整个项目的安全性问题",
    "blobs": {...},
    "agent_memories": "..."
}

2. 使用文件引用

直接引用:
"@UserController.java 这个控制器的安全性如何?"
"@application.yml 这个配置有什么问题?"

批量引用:
"分析 @UserService.java 、 @UserRepository.java 和 @User.java 之间的关系"

3. 上下文链式查询

第一步:建立上下文
"请分析这个电商项目的订单处理流程"

第二步:深入细节
"在订单处理流程中,库存管理是如何实现的?"

第三步:问题诊断
"库存管理中可能存在什么并发问题?"

📊 触发成功率

高成功率( 90%+)

中等成功率( 60-90%)

低成功率(<60%)

ACE 系统架构图

┌─────────────────────────────────────────────────────────────┐
│                 Augment Context Engine                      │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
│  │   本地索引系统    │  │  代码库检索系统   │  │  工作空间感知系统 │ │
│  │ AugmentLocalIndex│  │AgentCodebaseRet │  │WorkspaceFolderI │ │
│  │ AugmentBlobState │  │rieval System    │  │nfo System       │ │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
│  ┌─────────────────┐  ┌─────────────────┐                     │
│  │    记忆系统      │  │   检查点系统     │                     │
│  │ MemoriesService  │  │ Checkpoint      │                     │
│  │                 │  │ System          │                     │
│  └─────────────────┘  └─────────────────┘                     │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    IntelliJ Platform                       │
│              FileBasedIndex Infrastructure                  │
└─────────────────────────────────────────────────────────────┘
全局记忆 (Global Memory)
├── 用户偏好记忆 (User Preferences)
│   ├── 编程风格偏好
│   ├── 常用模式和习惯
│   └── 错误修正历史
├── 项目特定记忆 (Project-Specific Memory)  
│   ├── 项目架构理解
│   ├── 业务逻辑映射
│   └── 团队编程规范
└── 会话记忆 (Session Memory)
    ├── 当前对话上下文
    ├── 临时学习内容
    └── 实时反馈信息

PS:Augment 的 ACE 会把他建立全部记忆、代码索引全部上传云端的!!!所以如果建议的请慎重考虑是否使用~


好了,这些就是我这些天使用 Augment 的小小技巧了,你已经成功学会如何正确高效的使用 ACE (Augment Context Engine) 这个强大的 工具 了,Cursor 真的要好好学习学习人家 Augment~

版本:intellij-augment-0.221.1.jar

4359 次点击
所在节点    程序员
4 条回复
daqzi
2025 年 6 月 17 日
我最近也在用 可以的
asuraa
2025 年 6 月 26 日
老哥能给个 markdown 文档吗? 想存起来以后抄着用
jjjjjjoooooo
2025 年 6 月 30 日
哈哈哈, 我最近也在研究, 它会在本地起个 node 服务作为发送请求的代理, 可以节省多个 ide 插件的重复开发
lynn12866
2025 年 12 月 7 日
这个是官方的 MCP 吗?会不会有泄漏源码的可能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1139247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX