导读:

claude code 那个黑屏实在不怎么样,毕竟程序员主要是和集成开发工具打交道。

而deepseek告诉我 IntelliJ IDEA 免费版 2025.3版本 才支持Jakarta EE(原Java EE),

这一点真的非常意外, IntelliJ IDEA 这么流行,以至于claude code 只有 IntelliJ IDEA ,没有Eclipse插件,说明大家都很有钱。

claude code 提供了IntelliJ IDEA 插件,给 eclipse开发一个类似于claude code 的开发代理应该怎么做?并且早期仅仅支持deepseek (网络版本)和vLLM本地部署的deepseek.

为 Eclipse 开发一个类似于 Claude Code 的开发代理是一个很有挑战性但也非常有价值的项目。考虑到你明确要求早期仅支持 DeepSeek(网络版和 vLLM 本地部署版),我们可以基于现有的开源项目和 Eclipse 插件开发框架来构建。

🎯 项目概述与可行性

从搜索结果来看,Eclipse 平台上已经存在多个类似的 AI 辅助插件,这证明技术上是完全可行的:

现有插件 支持模型 核心功能 参考价值
Code Intelligence  DeepSeek、OpenAI、Gemini、Ollama等 AI代码补全、聊天窗口、函数调用工具 已支持DeepSeek,可直接借鉴API集成方式
Chatbot Assistant  DeepSeek、OpenRouter 聊天界面、代码辅助、文件感知回答 提供了浏览器界面嵌入Eclipse的方案
Copilot4Eclipse  GitHub Copilot 实时代码生成、智能补全、交互式聊天 Eclipse AI插件商业化产品的架构参考

🏗️ 技术架构设计

1. 插件核心架构

基于 Claude Code for IntelliJ 的实现思路 ,建议采用以下分层架构:

text

┌─────────────────────────────────────┐
│         Eclipse UI 扩展层            │
│  ├── 视图(View)部分                │
│  ├── 编辑器菜单/工具栏扩展            │
│  └── 快捷键绑定                      │
├─────────────────────────────────────┤
│         业务逻辑层                    │
│  ├── 对话管理模块                     │
│  ├── 代码上下文提取                   │
│  ├── 工具调用(文件读写、命令执行等)   │
│  └── 模型API适配层                    │
├─────────────────────────────────────┤
│         模型集成层                     │
│  ├── DeepSeek 网络API客户端           │
│  └── vLLM 本地API客户端               │
└─────────────────────────────────────┘

2. 关键技术点

(1)UI 实现方案
Eclipse 的 UI 扩展主要有两种方式:

  • 原生 SWT/JFace 实现:性能最好,与 IDE 集成度最高,但开发复杂

  • 嵌入式浏览器实现:参考 Chatbot Assistant  的做法,用 HTML/JS 构建对话界面,通过 Eclipse 的浏览器组件(Browser widget)嵌入。这种方式开发效率高,UI 美观,便于复用 Claude Code 的界面设计思路。

(2)代码上下文获取
类似 Claude Code 的深度上下文理解能力 ,需要实现:

  • 当前编辑器的选中代码或整个文件内容提取

  • 项目文件结构扫描(通过 Eclipse 的 IResource API)

  • Java 元素解析(通过 JDT AST,可参考 Code Intelligence 的做法 )

(3)工具调用机制
Claude Code 的核心优势之一是工具使用能力(Tool Use)。需要实现:

  • 文件读写操作(通过 Eclipse 的 IFile API)

  • 终端命令执行(通过 ProcessBuilder,需注意权限控制)

  • 代码搜索(通过 Eclipse 的搜索 API 或简单的 Grep)

🔌 DeepSeek 模型集成

1. DeepSeek 网络版集成

参考 Code Intelligence 的实现方式 ,网络版 DeepSeek 集成相对简单:

java

public class DeepSeekApiClient {
    private static final String API_URL = "https://api.deepseek.com/v1/chat/completions";
    private String apiKey;
    
    public CompletableFuture<String> sendMessage(String prompt, String context) {
        // 构建请求体
        Map<String, Object> requestBody = new HashMap<>();
        requestBody.put("model", "deepseek-chat");
        requestBody.put("messages", Arrays.asList(
            new Message("system", "你是一个编程助手..."),
            new Message("user", prompt + "\n\n上下文:" + context)
        ));
        
        // 发送HTTP请求
        // 处理流式响应
    }
}

2. vLLM 本地部署版集成

vLLM 部署的 DeepSeek 提供 OpenAI 兼容的 API 接口 ,集成方式与网络版类似,只需修改 endpoint:

java

public class VLLMClient {
    private String baseUrl = "http://localhost:8000/v1"; // vLLM默认端口
    
    public void setEndpoint(String url) {
        this.baseUrl = url;
    }
    
    // 其他方法与网络版类似,但可能支持更多本地特有功能
}

3. 配置管理

需要提供灵活的配置界面,让用户选择:

  • 模型类型:DeepSeek 网络版 / vLLM 本地版

  • API Key 输入(网络版)

  • 本地服务地址配置(vLLM)

  • 模型参数(温度、最大token等)

🛠️ 开发工具链

1. 开发环境搭建

基于 Eclipse 插件开发的最佳实践 :

xml

<!-- 使用 Tycho 构建,pom.xml 配置 -->
<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>5.1.9</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
            <Bundle-Name>${project.name}</Bundle-Name>
            <Bundle-Version>${project.version}</Bundle-Version>
            <Import-Package>*</Import-Package>
            <Export-Package>com.yourplugin.api.*</Export-Package>
        </instructions>
    </configuration>
</plugin>

2. 核心依赖

xml

<dependencies>
    <!-- Eclipse PDE 依赖 -->
    <dependency>
        <groupId>org.eclipse.core</groupId>
        <artifactId>org.eclipse.core.resources</artifactId>
        <version>3.13.1000</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jdt</groupId>
        <artifactId>org.eclipse.jdt.core</artifactId>
        <version>3.26.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.ui</groupId>
        <artifactId>org.eclipse.ui.workbench</artifactId>
        <version>3.122.0</version>
    </dependency>
    
    <!-- HTTP 客户端 -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.14</version>
    </dependency>
    
    <!-- JSON 处理 -->
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.10.1</version>
    </dependency>
</dependencies>

3. 插件清单(MANIFEST.MF)配置

properties

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: DeepSeek Coding Assistant
Bundle-SymbolicName: com.yourplugin.deepseek;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.yourplugin.deepseek.Activator
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.resources,
 org.eclipse.jdt.core,
 org.eclipse.jdt.ui
Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: com.yourplugin.deepseek.api
Import-Package: org.apache.http.client.methods,
 org.apache.http.impl.client,
 com.google.gson

🚀 开发路线图建议

第一阶段:基础功能(MVP)

  1. 创建 Eclipse 插件项目,实现基本的视图扩展

  2. 集成 DeepSeek 网络版 API,实现简单的对话功能

  3. 实现基本的代码上下文获取(当前文件内容)

  4. 提供配置页面设置 API Key

第二阶段:增强功能

  1. 集成 vLLM 本地部署支持

  2. 实现代码文件读写能力

  3. 添加多轮对话历史管理

  4. 优化 UI 体验,支持代码高亮显示

第三阶段:高级特性

  1. 实现工具调用(命令执行、代码搜索等)

  2. 支持项目级代码理解(跨文件)

  3. 添加代码重构和生成功能 

  4. 实现类似 Claude Code 的上下文自动检测 

📝 参考示例代码框架

java

// 插件启动类
public class Activator implements BundleActivator {
    private static Activator plugin;
    private DeepSeekService service;
    
    public void start(BundleContext context) throws Exception {
        plugin = this;
        service = new DeepSeekService();
        // 从配置加载设置
        loadConfiguration();
    }
    
    // 供其他UI组件调用的服务方法
    public static DeepSeekService getService() {
        return plugin.service;
    }
}

// 对话视图
public class ChatView extends ViewPart {
    public static final String ID = "com.yourplugin.deepseek.views.ChatView";
    
    private Browser browser;
    private ChatController controller;
    
    @Override
    public void createPartControl(Composite parent) {
        browser = new Browser(parent, SWT.NONE);
        browser.setUrl("platform:/plugin/your.plugin/html/chat.html");
        
        // 注册Java调用JS的桥梁
        browser.addBrowserListener(new BrowserFunction(browser, "javaHandler") {
            @Override
            public Object function(Object[] arguments) {
                return controller.handleJsMessage(arguments);
            }
        });
    }
}

这个开发计划参考了现有 Eclipse AI 插件的成功经验 ,同时借鉴了 Claude Code 的功能设计理念 。初期专注于 DeepSeek 模型集成,后续可以根据需要扩展支持更多模型。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐