🌐 语言 / Language: English 中文
![]()
![]()
![]()
一个为SAP ABAP开发者打造的Eclipse AI代码补全插件。基于大语言模型(LLM),追求极致隐私与数据安全,可使用本地LLM,用于企业内部使用,防止企业代码上传到互联网,以保证代码的保密安全,在编写ABAP代码时提供智能的代码建议和自动补全功能。
🤖 AI补全时除传入当前编辑器的ABAP代码外,还可选择传入当前工作平台上所有已打开的ABAP代码,Copilot仅支持传入当前编辑器的代码,不支持此功能。
⌨️ 深度搜索相关代码参考用于代码补全,把当前程序相关的程序一起作为代码参考发给AI,此功能尝试搜索多层会影响效率,建议最多一层搜索。
🤖 AI智能补全 : 基于AI模型,在光标位置提供上下文相关的ABAP代码建议
⌨️ 手动触发 : 按 Ctrl+Shift+. 手动调用AI代码补全
⚡ 自动补全 : 可选的自动补全模式,停止输入后自动触发AI建议
📋 INCLUDE解析 : 自动解析ABAP INCLUDE程序,提供更准确的上下文补全
🎯 技能目录 : 支持 .abap、.txt、.skill 文件作为AI参考模式
🌊 浮动覆盖层 : 代码建议以浮动覆盖层形式显示(类似Copilot风格)
🎨 自定义样式 : 可自定义补全代码的显示颜色
🔌 灵活配置 : 支持任何兼容OpenAI Chat Completions API的服务端点
** 手动补全(Ctrl+Shift+.)会使用SKILL :自动补全( requestQuickCompletion )用的是简化的独立 prompt,不会加载 SKILL 目录下的内容。**
** 补全模式配置 :在偏好设置中可以选择手动补全是弹出覆盖层 ( overlay ) 还是直接插入 ( direct ),两者都会使用SKILL内容。**
Eclipse : 4.7+ (Neon) 或更高版本
Java : JDK 17 或更高版本
网络 : 需要能够访问配置的AI API服务
有三种安装方式,推荐使用方法1(Eclipse Marketplace)安装:
在 Eclipse 菜单栏中打开 Help → Eclipse Marketplace...
在搜索框中输入 ABAP AI,找到 ABAP AI Completion
点击 Install,并按照提示完成安装(同意许可协议、信任证书)
安装完成后点击 Restart Now (Restart Eclipse) 重启 Eclipse,插件即被加载
在 Eclipse 菜单栏中选择 Help → Install New Software...(部分版本为 Help → Install Software...)
在 Available Software 对话框中点击 Add... 按钮,添加以下更新站点地址:
Name: ABAP AI Completion
Location: https://yan252.github.io/ABAP-AI-completion/update-site
💡 也可点击
Archive...选择ABAP-AI-Completion-UpdateSite-1.0.5.zip进行离线安装。
勾选 ABAP AI Completion Feature,点击 Next → Next → 同意许可协议 → Finish
安装完成后点击 Restart Now (Restart Eclipse) 重启 Eclipse,插件即被加载
将 dist/com.sap.abap.ai.completion_1.0.5.jar 复制到 Eclipse 的 <安装路径>/dropins/ 目录(如不存在此目录请先创建),然后重启 Eclipse 即可。
打开任意ABAP源代码文件(.abap、.prog等)
将光标放在需要补全的位置
按快捷键 Ctrl + Shift + . 调用AI补全
AI建议将以浮动覆盖层形式显示
按 Tab 键接受建议,按其他键取消
在配置中启用 “Auto-complete while typing” 后,停止输入一段时间(默认2000ms)会自动触发AI建议。
如需修改快捷键:
菜单栏:Window → Preferences
导航到:General → Keys
搜索:ABAP AI completion
点击 Binding 字段,按下新的快捷键组合
点击 OK 保存
菜单栏:Window → Preferences
在左侧导航栏中找到 ABAP AI Completion
配置页面如下图所示:

| 配置项 | 说明 | 示例 |
|---|---|---|
| API Base URL | AI服务端点地址 | https://api.openai.com/v1 |
| Model Name | 使用的AI模型名称 | gpt-4, deepseek-v4-flash |
| API Key | API认证密钥 | (将以星号显示) |
| Max Tokens | 最大生成Token数 | 240640 |
| Temperature | 创造性温度 (0.0-2.0) | 0.3(较低值表示更确定性的输出) |
💡 提示 : 点击
Test Connection按钮测试API连接是否正常。
| 配置项 | 说明 |
|---|---|
| Enable ABAP AI Completion plugin | 启用/禁用整个插件 |
| Auto-complete while typing | 启用后停止输入自动触发AI建议 |
| 配置项 | 说明 |
|---|---|
| Delay after typing (ms) | 停止输入后多少毫秒触发自动补全 |
💡 建议 : 推荐值为 1500-3000 ms。较低的值会增加API请求频率。
将 .abap、.txt 或 .skill 文件放置在技能目录中,AI会参考这些文件中的代码模式进行补全。这对于特定项目的代码规范和命名约定非常有用。
可以自定义发送给AI的系统提示,用于引导AI遵循特定的代码风格和规范。
自定义AI补全代码在编辑器中的显示颜色。
JDK : 17+
Eclipse : 带Plug-in Development Environment (PDE) 的 Eclipse
构建工具 : Apache Maven(可选)
git clone https://github.com/yan252/ABAP-AI-completion.git
在Eclipse中导入项目:
File → Import → Existing Projects into Workspace
选择克隆的项目目录
勾选项目并点击 Finish
com.sap.abap.ai.completion/
├── META-INF/
│ └── MANIFEST.MF # OSGi bundle清单
├── src/
│ └── com/sap/abap/ai/completion/
│ ├── client/ # AI API客户端
│ │ ├── AIClient.java
│ │ ├── AIClientException.java
│ │ └── PromptCacheManager.java # Prompt压缩与多节点缓存管理
│ ├── editor/ # 编辑器集成
│ │ ├── AICompletionHandler.java
│ │ ├── AICompletionListener.java
│ │ ├── AICompletionOverlay.java
│ │ ├── AICompletionProposalPopup.java
│ │ ├── AICompletionService.java
│ │ └── AIOverlayManager.java
│ ├── logging/ # 日志输出
│ │ └── AILogger.java
│ ├── parser/ # ABAP解析器
│ │ ├── AbapCodeTruncator.java
│ │ ├── AbapIncludeResolver.java
│ │ ├── AbapLanguageDetector.java
│ │ ├── ParentProgramContext.java
│ │ ├── ParentProgramResolver.java
│ │ └── WorkspaceCodeCollector.java
│ ├── preferences/ # 配置管理
│ │ ├── AICompletionPreferencePage.java
│ │ ├── AIConfiguration.java
│ │ ├── PreferenceConstants.java
│ │ └── PreferenceInitializer.java
│ ├── ui/ # 状态栏等UI集成
│ │ └── AbapAIStatusLineContribution.java
│ └── Activator.java # Bundle激活器
├── icons/
│ └── SAPLogo.ico # 插件图标
├── dist/ # 发布的JAR
│ └── com.sap.abap.ai.completion_1.0.1.jar
├── update-site/ # 更新站点
│ ├── features/
│ ├── plugins/
│ ├── artifacts.jar / artifacts.xml
│ ├── content.jar / content.xml
│ └── site.xml
├── tools/
│ └── CacheVerifyTool.java # 缓存校验工具
├── plugin.xml # 插件扩展点声明
├── build.properties # 构建属性
├── build.ps1 # Windows构建脚本
├── build_plugin.xml # 构建脚本(ANT)
├── generate-update-site.ps1 # 生成更新站点脚本
└── rebuild.ps1 # 重建脚本
本插件通过以下Eclipse扩展点集成:
| 扩展点 | 用途 |
|---|---|
org.eclipse.ui.startup |
插件自动启动 |
org.eclipse.ui.preferencePages |
配置页面注册 |
org.eclipse.core.runtime.preferences |
偏好设置初始化 |
org.eclipse.ui.commands |
补全命令定义 |
org.eclipse.ui.bindings |
快捷键绑定 |
AIClient : 纯Java实现的HTTP客户端,调用AI Chat Completions API,无需外部JSON库
AICompletionService : 异步补全服务,处理超时、取消和错误
AbapIncludeResolver : 解析ABAP INCLUDE程序,为AI提供完整的上下文
AIOverlayManager : 管理浮动覆盖层的显示和交互
AIConfiguration : 统一的配置管理,支持偏好存储
手动触发补全(Ctrl+Shift+.)时,插件会构造 1个 system 节点 + 5个 user 节点 的消息列表发送给 AI(对应 AICompletionService.java 中的 buildUserMessages 方法)。各节点含义如下:
| 节点 | 角色 | 内容说明 |
|---|---|---|
| System | system |
系统提示词。定义AI的角色(SAP ABAP资深开发专家)、补全规则与输出约束。可使用 自定义系统提示 (Custom System Prompt) 覆盖默认值 |
| 节点1/5 | user |
SKILL 文件内容:技能目录中加载的 .abap/.txt/.skill 文件,作为代码风格与最佳实践参考。无SKILL时标明“使用系统默认ABAP编码规范” |
| 节点2/5 | user |
父程序调用上下文:当当前文件是 INCLUDE 时,深度搜索到的调用它的父级程序代码(按配置的搜索深度递归查找)。该节点内容经 PromptCacheManager.compressContent 压缩 |
| 节点3/5 | user |
工作区打开的程序:当前 Eclipse 工作区中已打开的其它 ABAP 文件,作为风格参考与补充上下文(由 WorkspaceCodeCollector 收集,同样会压缩) |
| 节点4/5 | user |
程序元数据:文件名、代码类型、INCLUDE 数量、父级程序/工作区/SKILL 加载情况的汇总说明,帮助AI综合理解整体上下文 |
| 节点5/5 | user |
当前光标程序(含光标位置):由原“完整代码”节点与“光标上下文”节点合并而来。展示当前光标所在程序的完整代码(已通过 AbapIncludeResolver 展开所有 INCLUDE),并在光标位置用 [[[CURSOR_HERE]]] 标记插入位置,这是AI真正生成补全内容的位置 |
说明:节点2、3在发送前会通过
PromptCacheManager.compressContent统一压缩(压缩上限沿用工作区代码字符数配置Max Workspace Code Chars),避免上下文窗口溢出;节点1(SKILL)全量直接发送,其余节点按各自规则发送。若某节点无对应内容,仍会发送一条占位说明消息(标明该节点当前状态),保证AI始终收到完整的 1+5 节点结构。
对比:自动补全(
requestQuickCompletion)不加载SKILL与上述上下文,使用的是简化后的独立 prompt,仅发送 1个system节点 + 1个user节点(当前行上下文)。
右键点击项目 → Export
选择 Deployable plug-ins and fragments
选择输出目录为 dist/
点击 Finish
# Windows PowerShell
.\build.ps1
或使用提供的 build_plugin.xml:
ant -f build_plugin.xml
在Eclipse中启动一个新的Eclipse实例进行调试:
Run → Run Configurations
新建 Eclipse Application 配置
在 Plug-ins 选项卡中,确保 com.sap.abap.ai.completion 已包含
点击 Run 启动
A: 请确认:
JAR文件已正确放入 dropins 目录
已重启Eclipse
使用的Eclipse版本符合要求(4.7+)
Java版本为17或更高
A:
检查网络连接是否正常
确认API Base URL和API Key配置正确
可以在配置中增加 Max Tokens 和 Temperature 的值
尝试点击 Test Connection 按钮验证连接
A: 支持任何兼容OpenAI Chat Completions API的服务,包括但不限于:
OpenAI (GPT-4, GPT-3.5等)
Azure OpenAI Service
阿里云百炼 (DashScope)
任何兼容的第三方API服务
A: 不能。本插件需要网络连接来调用AI API服务。但技能目录中的参考文件可以帮助AI生成更符合项目规范的代码。
A: API Key存储在Eclipse的偏好设置中,以星号显示。但请注意:
不要将包含API Key的配置文件提交到版本控制系统
使用环境变量或密钥管理服务存储密钥(如果可能)
语言 : Java 17
框架 : Eclipse Platform / JFace / SWT
API协议 : OpenAI Chat Completions API
JSON处理 : 纯Java实现(无第三方依赖)
构建 : Eclipse PDE / ANT
本项目仅供学习和个人使用。请遵守所使用AI服务的相关服务条款和许可证要求。
本插件灵感来源于VS Code Copilot等AI辅助编程工具,旨在为SAP ABAP开发者提供更好的编码体验。