来源:互联网 更新时间:2026-08-24 14:39
在人工智能快速发展的今天,如何利用AI工具提升效率,已经成了不少开发者关注的焦点。这篇内容不打算堆概念,直接聊点实际的——如何借助AI提升开发能力,最终还真的搞出了一个面向用户交付的AI代码助手JetBrains插件。

日常工作中,免不了处理各种功能型工具,比如数据分析、日志排查、漏洞测试这一类。不过,一旦这些小需求慢慢演变成中大型工程,个人开发能力往往就有点吃力了,代码质量也容易出问题。
自从大语言模型技术全面爆发后,身边越来越多人在尝试各种AI工具。公司在这块动作也挺快,率先引入了GPT-3.5,全员都能用上,现在已经升级到GPT-4。还请了业界专家开过LLM专题讲座。一家走过20多年的企业,还能保持这种对新技术的热情和开放态度,确实值得佩服。
一直用poe.com订阅Claude模型,但频繁的复制粘贴确实挺麻烦的。于是就开始琢磨:能不能做一个面向用户交付的AI代码程序员?这个程序员能理解需求,直接交付最终代码,甚至带上运行效果。说白了,就是面向效果交付——产品提出需求,AI程序员直接给程序,跟现有的开发、产品、测试职责分配刚好契合。
Claude API和OpenAI API都已经搞定,那把开发软件的主要过程写成tools是不是就行了?有了AI加持,执行效率确实高了很多,理一下流程:
流程1和2可以直接上手。至于做成什么形式,考虑了三个方向:
没有JetBrains插件开发经验,那就让AI来帮忙。先梳理需求:
为了更好指导AI开发,写了一份详细的系统角色提示词,核心内容如下:
你是一位经验丰富的IDEA插件开发专家和Ja va开发专家。你在Windows和macOS平台上都有丰富的开发经验,对跨平台开发的挑战和最佳实践有深入的理解。你在软件工程领域有超过10年的经验,精通高质量程序设计的原则和最新的行业最佳实践。
- IDEA插件开发:熟悉IntelliJ平台SDK,能够设计和实现复杂的IDE插件功能。
- Ja va开发:精通Ja va核心技术、多线程编程、性能优化等高级主题。
- 跨平台开发:了解Windows和macOS平台的特性,能够开发兼容两个平台的应用。
- 软件架构:擅长设计可扩展、高性能的软件架构。
- 代码质量:注重编写清晰、简洁、易维护的代码。
在开发过程中,你需要严格遵守以下要求:
1. 模块化设计:
- 将系统划分为功能明确、职责单一的模块。
- 确保模块之间的低耦合和高内聚。
- 使用依赖注入等设计模式来管理模块间的依赖关系。
2. 代码复用:
- 识别和抽象共同的功能为可重用的组件或库。
- 利用面向对象编程的继承和组合特性来提高代码复用率。
- 考虑使用设计模式(如模板方法、策略模式等)来增强代码的可重用性。
3. 扩展性:
- 采用开放封闭原则,设计能够容易扩展但不需要修改现有代码的架构。
- 使用接口和抽象类来定义扩展点。
- 考虑使用插件架构或微服务架构来支持未来的功能扩展。
4. 稳定性:
- 实现全面的单元测试和集成测试,确保代码的正确性。
- 使用持续集成/持续部署(CI/CD)流程来及时发现和解决问题。
- 实现监控和日志系统,以便在生产环境中快速识别和解决问题。
5. 容错性:
- 实现全面的异常处理机制,包括检查异常和非检查异常的合理使用。
- 使用断言和防御性编程技术来提前发现潜在问题。
- 实现优雅的降级策略,确保在部分功能失效时系统仍能继续运行。
6. 处理效率:
- 使用性能分析工具识别和优化性能瓶颈。
- 合理使用缓存技术来提高频繁访问数据的响应速度。
- 优化算法和数据结构,确保核心操作的高效执行。
- 考虑使用并发编程技术来充分利用多核处理器的性能。
7. 功能完善:
- 仔细分析和理解用户需求,确保实现所有必要的功能。
- 在保持代码简洁的同时,不牺牲功能的完整性。
- 实现直观的用户界面和良好的用户体验。
- 提供全面的文档,包括用户手册和API文档。
在为Windows和macOS平台开发时,需要特别注意以下几点:
- 使用跨平台的Ja va库和框架,避免使用平台特定的API。
- 对于必须使用平台特定功能的情况,使用策略模式或工厂模式来封装平台差异。
- 注意文件路径的处理,使用Ja va的File类或nio包来确保路径的跨平台兼容性。
- 考虑UI设计的平台差异,可能需要为不同平台提供略有不同的界面布局。
- 在持续集成流程中,确保在两个平台上都进行测试和构建。
在回答问题时,请遵循以下准则:
1. 仔细分析问题,确保完全理解问题的各个方面。
2. 如果问题不清晰或缺少关键信息,请提出澄清性的问题。
3. 提供详细、步骤化的解答,确保每个步骤都清晰可理解。
4. 在适当的地方提供代码示例,使用正确的Ja va语法和IDEA插件开发的最佳实践。
5. 解释你的推理过程,包括为什么选择特定的解决方案或技术。
6. 考虑多种可能的解决方案,并解释每种方案的优缺点。
7. 在回答中体现出对软件工程原则和最佳实践的深入理解。
8. 如果涉及到跨平台开发的问题,请明确指出Windows和macOS平台的差异和处理方法。
<iframe allowfullscreen="" frameborder="0" src="https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3608470937936560136"></iframe>
核心功能实现方面,有几个关键点值得一提:
package com.dobest1.boyka;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
public class Tool {
private final String name;
private final String description;
private final JsonObject inputSchema;
private final String[] required;
public Tool(String name, String description, JsonObject inputSchema, String[] required) {
this.name = name;
this.description = description;
this.inputSchema = inputSchema;
this.required = required;
}
public String getName() { return name; }
public String getDescription() { return description; }
public JsonObject getInputSchema() { return inputSchema; }
public String[] getRequired() { return required; }
public JsonObject toOpenAIFormat() {
JsonObject toolObject = new JsonObject();
toolObject.addProperty("type", "function");
JsonObject functionObject = new JsonObject();
functionObject.addProperty("name", name);
functionObject.addProperty("description", description);
JsonObject parametersObject = new JsonObject();
parametersObject.addProperty("type", "object");
parametersObject.add("properties", inputSchema);
addRequiredArray(parametersObject);
functionObject.add("parameters", parametersObject);
toolObject.add("function", functionObject);
return toolObject;
}
public JsonObject toClaudeFormat() {
JsonObject toolObject = new JsonObject();
toolObject.addProperty("name", name);
toolObject.addProperty("description", description);
JsonObject schemaObject = new JsonObject();
schemaObject.addProperty("type", "object");
schemaObject.add("properties", inputSchema);
addRequiredArray(schemaObject);
toolObject.add("input_schema", schemaObject);
return toolObject;
}
private void addRequiredArray(JsonObject object) {
if (required != null && required.length > 0) {
JsonArray requiredArray = new JsonArray();
for (String req : required) {
requiredArray.add(req);
}
object.add("required", requiredArray);
}
}
}
到目前为止,体验过的LLM模型和工具已经不少:GPT-3.5、DeepSeek、Mistral、Perplexity、GPT-4、Gemini-1.5-pro、Claude-3-Opus、Claude-3.5-sonnet、Dify、Groq等。比较下来,现在主要用Claude-3.5-sonnet来做代码开发。
LLM出现后,市面上的AI代码工具也多了起来,像GitHub Copilot、Codeium、Code Whisperer。个人最常用的是Codeium,它的tab补全质量很高,内联编辑器体验也不错。但随着使用场景越来越复杂,Codeium慢慢不太够用了,于是订阅了poe.com主要用Claude-3-opus(当时Opus质量最高,还没解决Claude被封的问题)。只要提示词清晰,生成的代码错误率比较低。到Claude-3.5-sonnet后,代码质量又上了一个台阶。
为了开发更大规模的工程,让AI更好地理解项目上下文,开发了一个插件,可以把JetBrains IDE中的单文件、多文件或代码片段以Markdown格式复制出来。通过这个copy2md插件在poe和PyCharm、GoLand之间穿梭,工作效率明显提升。100万的积分被消耗光了——主要消耗在200k和128k的模型上,后来干脆办了年订阅。现在,像Cursor和Zed这类支持各种LLM API的编辑器开发体验更是突飞猛进。
在使用Claude-3.5-sonnet的过程中发现,它是少数在多轮对话后还能保持上下文理解的模型。换成qwen2几轮对话后,基本就不知道在干什么了。Claude-3.5-sonnet的注意力机制确实强,很期待Claude-3.5-Opus。
这段时间积累了几个实用技巧:
腾讯ima怎么把微信内容一键导入知识库?
腾讯ima怎么创建共享知识库?
Celestia价格预测2026-2032:TIA币能否引领山寨币上涨行情?历史价格回顾
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
比特币(BTC)核心周期指标复刻历史走势 价格或跌破5.8万美元关键支撑位
比特币 2025 年价格预测:BTC 的未来走势
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
WorkBuddy微信版怎么获得积分?
新浪人工智能热点小时报丨2026年07月30日18时_今日实时人工智能热点速递
男生高性价比充电头?
博世壁挂炉关闭暖气怎么操作
5000元起的鼠标哪个最值得入手?
车载冰箱重置到出厂设置几步?
短剧《史上最强洪荒修为》剧情介绍
管线机怎么接云米净水器
笔记本移动电源推荐哪款?
结婚家电首选:Leader懒人三筒Ultra热泵洗烘一体
腾讯ima知识库怎么分类管理?
海尔消毒柜自动消毒如何中止
kimi提示词专家使用方法新手指南
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc