实验 / 已完成

idea编程助手

IntelliJ IDEA 编程助手插件:在 IDE 内收集选中代码、文件、目录和项目结构,生成规范 AI 提示词;用户把外部 AI 返回的结构化 JSON 粘回后,插件可解析思路、反馈、命令、requires 与多种代码变更,提供差异预览、匹配状态检查、单项/批量应用和历史记录。当前定位是不直连 AI API,而是半自动打通 IDE 与通用 AI 工具的代码修改闭环。

项目说明

定位

这是一个 IntelliJ IDEA 插件,面向“在 IDE 内准备上下文、到外部 AI 工具生成方案、再把 AI 返回的代码变更应用回项目”的半自动编程流程。插件当前不直接调用 AI API,而是把 IDEA 作为上下文整理、提示词生成、变更解析和落地执行的工作台。

核心功能特点

  • IDE 内上下文采集:支持在编辑器中选中代码片段后加入 AI 上下文,自动记录文件路径、行号和语言类型。
  • 文件/目录批量加入:支持在 Project 视图中选择文件或目录递归加入上下文,并通过 .ai-assistant/config.json 的 ignore 规则过滤 .git.ideabuildnode_modules 等无关内容。
  • 紧凑模式:针对大上下文场景提供 compact 采集方式。Java 会尽量保留 package、类结构、字段和方法签名并省略方法体;JS/TS、HTML、CSS、JSON、XML 等也有相应压缩策略,并按 token 预算截断。
  • 项目目录结构生成:可一键把项目树写入工作区,帮助 AI 理解模块边界和文件组织。
  • 规范提示词生成:内置 Prompt 模板,约束 AI 遵守最小影响原则、避免硬编码敏感信息、返回可解析 JSON,并通过 requires 请求缺失文件或类。
  • 结构化响应解析:可解析 thoughtfeedbackcommandsactionsrequires.filesrequires.classes,兼容 action 数组、单个 action、actions/changes 字段以及普通 Markdown 文本回退。
  • 多种变更动作:支持 CREATEOVERWRITEUPDATEINSERT_AFTERDELETE,覆盖新建、覆盖、局部替换、插入和删除等常见代码修改场景。
  • 智能代码块匹配:应用变更时对空白、换行、单双引号等差异有容错;当精确正则匹配失败时使用相似度兜底,并保留缩进、格式化目标文件。
  • 差异预览与应用闭环:按文件聚合展示 AI 变更,可查看当前内容与 AI 生成最终效果的 Diff,支持单项、文件级和全量应用。
  • 匹配状态可视化:解析后会检查每个 action 是否能匹配到目标文件,便于应用前发现风险。
  • AI 思路/反馈展示:工具窗口中展示 AI 返回的实现思路、反馈和命令,支持折叠查看。
  • 补充上下文机制:当 AI 返回 requires 时,可在变更树中加载所需文件或类,继续补齐上下文后再次生成方案。
  • 历史记录:应用变更后按时间和主题保存 request.mdresponse.json.ai-assistant/history/,便于回看和复用。
  • IDE 原生集成:通过 ToolWindow、EditorPopupMenu、ProjectViewPopupMenu、DiffManager、WriteCommandAction、通知组等 IntelliJ Platform API 集成,保留 IDEA 的撤销、格式化和文件系统能力。

典型使用流程

  1. 在 IDEA 中选中代码片段,或从 Project 视图加入相关文件/目录/紧凑上下文。
  2. 在工具窗口补充“我的需求”,必要时生成项目目录结构。
  3. 点击生成提示词并复制到 ChatGPT、Claude、通义千问、DeepSeek 等外部 AI 工具。
  4. 将 AI 返回的 JSON 响应粘回插件并解析。
  5. 查看 AI 的思路、反馈、待补充上下文和变更摘要。
  6. 先看 Diff,再按单项、文件或全量应用变更。
  7. 插件写入文件、格式化并保存本次请求/响应历史。

工程实现特点

  • Gradle + IntelliJ Platform 插件工程,要求 JDK 17+。
  • 主代码按 actionserviceuimodelutilcommon 分层。
  • PromptManager 负责提示词生成、JSON 响应解析和 UI 状态同步。
  • ChangeApplierService 负责变更匹配、写入、创建/覆盖/删除文件、格式化和通知。
  • DiffPresentationService 负责异步构建差异预览,并对超大内容或超时场景降级,避免 UI 卡顿。
  • AssistantConfigService 负责 .ai-assistant/config.json 默认配置、ignore 规则读取和通配符匹配。
  • HistoryManager 负责请求与响应历史落盘。

当前状态

从当前代码和提交记录看,插件已具备完整的本地闭环能力:上下文收集、提示词生成、AI 响应解析、Diff 预览、变更应用、requires 补充和历史记录均已实现。近期改动集中在插件品牌命名、JSON 解析健壮性、代码块匹配、差异预览性能和单项/批量应用体验优化。

后续可扩展方向

  • 增加更多自动化测试,尤其覆盖 JSON 解析、代码块匹配、requires 归一化和多 action 应用顺序。
  • 为 UI 变更补充 runIde 手工验证清单和截图。
  • 进一步完善 README/插件市场描述,修正编码显示问题并补充实际使用示例。
  • 可选扩展为可配置的 AI API 直连模式,但保持当前“外部 AI 工具 + IDE 半自动落地”的低耦合路径。

功能截图

1. 工具窗口总览:IDE 内的 AI 编程工作台

大鱼AI编程助手工具窗口总览

右侧 ToolWindow 提供工作区与历史记录两个入口,顶部工具栏集中放置生成提示词、添加目录结构、复制、粘贴、解析、清空和刷新配置等操作。这个界面对应插件的核心定位:在 IDEA 内完成上下文整理、提示词生成、AI 响应粘贴和变更预览。

2. 编辑器选中代码后加入上下文

编辑器右键添加选中代码到大鱼AI编程助手

在编辑器里选中代码片段后,可以通过右键菜单“添加到大鱼AI编程助手”把当前片段加入上下文。插件会记录文件路径、代码位置和语言类型,适合处理小范围方法修改或局部 bug 修复。

3. 项目树批量添加文件/目录与紧凑模式

项目树右键添加文件目录到大鱼AI编程助手

在 Project 视图中右键文件或目录,可以选择普通加入或“紧凑”加入。普通模式适合提供完整源码;紧凑模式适合大目录场景,会尽量保留结构、类名、字段和方法签名,控制上下文体积。

4. 生成规范提示词

生成后的规范 AI 提示词

点击生成按钮后,插件会把需求、上下文和响应协议包装成完整 Prompt,要求外部 AI 返回可解析的 JSON,并约束 UPDATEINSERT_AFTERCREATEOVERWRITEDELETE 等动作的格式,减少无法落地的自然语言回复。

5. 解析 AI 响应后的思路、反馈与变更摘要

解析 AI JSON 后的思路反馈与变更摘要

AI 返回 JSON 后,插件会解析 thoughtfeedbackcommandsactionsrequires,在右侧展示“思路与反馈”和“变更摘要”。变更树里可以看到目标文件、动作类型和匹配原因,帮助用户在应用前先判断风险。

6. Diff 预览并应用 AI 变更

IDEA Diff 中预览并应用 AI 生成变更

打开聚合变更预览后,IDEA 会以左右对比方式展示当前内容与 AI 生成后的最终效果,用户可以在 Diff 中检查新增代码、忽略空白差异,并通过“应用全部变更”把确认后的修改写回项目。

7. 按变更树应用全部变更或补充上下文

变更树右键应用全部变更或加载上下文

在变更预览树上可以右键应用全部变更,也可以加载 AI 通过 requires 请求的上下文。这个交互把“AI 生成方案”和“IDE 内安全落地”连接起来:先看思路和变更摘要,再决定单项、文件级或全部应用。

开源地址

项目源码已开源到 GitHub:

https://github.com/dazhi2010/ai-code-assistant

公开截图

公开进度

  1. 支持配置提示词专家角色和作者信息

    支持在 .ai-assistant/config.json 中配置提示词专家角色和新建文件作者信息,生成 Prompt 时动态注入角色与 @author,让插件更适配不同语言、团队和项目规范。

  2. 完善项目说明文档,并补充实验功能截图资料

    完善 README 项目说明,并为 AI 实验室实验补充功能特点与 7 张截图,覆盖上下文采集、提示词生成、响应解析、Diff 预览和应用变更。

  3. 统一插件品牌命名,并继续优化代码块匹配

    统一插件品牌命名与 IDEA 展示文案,同时继续验证和优化代码块匹配策略。

  4. 修复 JSON 解析卡死问题,优化解析失败时的用户体验

    修复 AI JSON 响应解析卡死问题,提升粘贴、解析和进入变更预览流程的稳定性。

  5. 增强匹配状态可视化、单项/批量应用和 JSON 解析健壮性

    增强匹配状态可视化、单项/批量应用和批量对比能力,并提升 AI JSON 响应解析健壮性。

  6. 系统性优化代码块匹配,补充匹配测试

    系统性优化代码块匹配,提升空白/换行差异下的应用成功率,并补充核心匹配测试。

  7. 升级提示词协议、Diff 编辑同步和思路反馈 UI

    升级提示词协议、AI 思路反馈展示、变更对比与编辑同步能力,并修复新建文件路径/内容异常。

  8. 补交并完善批量加载所需上下文能力

    补齐批量加载 AI 所需上下文能力,完善 requires 多文件补充流程。

  9. 优化 AI 索取文件后的补充流程

    优化 AI 索取文件后的补充流程,让 requires 机制更适合多轮上下文协作。

  10. 实现紧凑上下文模式,并集中优化 Diff 预览和代码压缩稳定性

    新增紧凑上下文模式,支持按语言压缩代码结构并控制 token 体积,同时集中优化 Diff 预览和代码压缩稳定性。

  11. 补齐 AI 索取上下文机制,并增强变更树辅助操作

    补齐 AI requires 索取上下文机制,支持按 AI 请求加载缺失文件,并增强变更树复制与匹配容错能力。

  12. 将变更定位从行号匹配重构为代码块特征匹配

    将代码变更定位从行号方式升级为代码块特征匹配,提高 AI 修改在真实项目文件中的落地成功率。

  13. 加入本地配置与忽略规则,优化目录上下文采集

    加入 .ai-assistant/config.json 配置与忽略规则,支持目录上下文采集时自动过滤无关文件,并可在工具窗口中刷新配置。

  14. 完成 IDEA 编程助手 MVP,并打通上下文到变更落地的基础闭环

    完成 IDEA 编程助手 MVP:支持在 IDE 内采集代码上下文、生成提示词、解析 AI JSON 响应、预览并应用代码变更,同时补齐项目结构采集、文件树上下文和文档类文件兼容。

还没有关联的公开文章。