最近没去玩 Cursor ,脚本也好久没更新,提示词( 4.8 版本)也没怎么更新,主要是对 Augment 感兴趣,在 Idea 上不要太舒服了,所以对这个 ACE (Augment Context Engine),产生了兴趣,想去深入了解学习,也为了更好写代码(bug)当牛马,下面大部分内容是自写+少量 AI 润色(代码块、流程图、表述不清楚的地方等),顺便拿出来水一贴。
下面是我对 intellij-augment-0.221.1.jar
包解析出来的原理解答和实际工作经验中探索出来的,所以有耐心的话慢慢看,没耐心可以跳到最下面(高级技巧、高效触发 ACE )的部分,稍微学一下,注意怎么高效使用即可。
自动触发场景:
public class ChatRequest {
public String mode; // "AGENT" 模式自动触发 ACE
public BlobsPayload blobs; // 有文件上下文时触发
public List<String> userGuidedBlobs; // 用户指定文件时强制触发
public String contextCodeExchangeRequestId; // 上下文代码交换时触发
}
public class AgentCodebaseRetrievalRequest {
public String informationRequest; // 信息请求描述
public BlobsPayload blobs; // 相关文件 blob
public List<Exchange> chatHistory; // 聊天历史上下文
public Integer maxOutputLength; // 最大输出长度
}
基于分析,ACE 能识别以下查询类型:
代码理解类查询:
代码搜索类查询:
架构分析类查询:
问题诊断类查询:
代码生成类查询:
// 基于 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);
}
}
架构相关:
代码库级别:
深度分析:
文件引用:
范围指定:
模板 1:深度代码分析
"请深入分析[具体代码/文件/功能]的实现原理,包括:
1. 核心逻辑和算法
2. 与其他模块的交互
3. 在整个项目中的作用
4. 潜在的改进点"
模板 2:架构级别理解
"从整体架构的角度,解释[功能/模块]是如何工作的:
- 在系统中的位置
- 与其他组件的关系
- 数据流向和处理过程
- 设计模式和最佳实践"
模板 3:Bug 分析 "帮我分析这个问题:[具体问题描述] 请检查:
模板 4:性能分析 "分析[功能/模块]的性能问题:
模板 5:基于现有代码生成 "基于项目中现有的[类似功能/模式],帮我生成[新功能]:
模板 6:接口实现 "为[接口/抽象类]创建实现,参考项目中的其他实现:
用户查询:
"请分析这个 Spring Boot 项目的整体架构,包括:
1. 各层之间的关系( Controller 、Service 、Repository )
2. 数据流向和处理过程
3. 配置文件的作用
4. 与数据库的交互方式"
ACE 响应特征:
- 会扫描所有相关的 Java 文件
- 分析 Spring 配置文件
- 检查数据库配置和实体类
- 生成架构图和说明
用户查询:
在整个项目中找到所有使用 Redis 的地方,包括:
- 配置文件中的 Redis 设置
- 代码中的 Redis 操作
- 缓存注解的使用
- 相关的工具类"
ACE 响应特征:
- 搜索所有 Java 文件中的 Redis 相关代码
- 检查配置文件( application.yml 等)
- 分析依赖文件( pom.xml 等)
- 提供完整的使用清单
用户查询:
"这个接口响应很慢,帮我分析可能的原因:
@GetMapping('/api/users')
请检查相关的 Service 、Repository 和数据库查询"
ACE 响应特征:
- 分析 Controller 、Service 、Repository 的完整调用链
- 检查数据库查询和索引
- 分析缓存策略
- 提供性能优化建议
❌ "这个代码有什么问题?"
改进为:
✅ "分析这个 UserService 类的实现,检查是否有性能问题、安全漏洞或违反最佳实践的地方"
❌ "帮我写个函数"
改进为:
✅ "基于项目中现有的数据访问模式,帮我为 User 实体创建一个 CRUD 服务类,包括适当的异常处理和事务管理"
❌ "这个项目是做什么的?"
改进为:
✅ "通过分析项目结构、配置文件和主要类,解释这个应用的业务功能、技术架构和部署方式"
分析整个项目的安全性问题
// 在 ChatRequest 中设置 mode 为"AGENT"
{
"mode": "AGENT",
"message": "分析整个项目的安全性问题",
"blobs": {...},
"agent_memories": "..."
}
直接引用:
"@UserController.java 这个控制器的安全性如何?"
"@application.yml 这个配置有什么问题?"
批量引用:
"分析 @UserService.java 、 @UserRepository.java 和 @User.java 之间的关系"
第一步:建立上下文
"请分析这个电商项目的订单处理流程"
第二步:深入细节
"在订单处理流程中,库存管理是如何实现的?"
第三步:问题诊断
"库存管理中可能存在什么并发问题?"
┌─────────────────────────────────────────────────────────────┐
│ 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
1
daqzi 45 天前
我最近也在用 可以的
|
2
asuraa 36 天前
老哥能给个 markdown 文档吗? 想存起来以后抄着用
|
3
jjjjjjoooooo 32 天前
哈哈哈, 我最近也在研究, 它会在本地起个 node 服务作为发送请求的代理, 可以节省多个 ide 插件的重复开发
|