我写了一个开源工具,想让 AI 像 Java 开发一样工作

4 小时 13 分钟前
 L1ch404

背景

我本人是一个 Java 后端开发,大概有两次接触 AI 写代码,第一次是去年十一月份左右,用的是 Cursor,当时高强度使用了一个月后 发现很容易出现幻觉,而且括号经常搞不明白,当时体验是比较差的,就没用了;第二次是今年四月份左右,使用的是 Copilot 说实话我被 AI 的成长给震惊到了,随后我逐步将自己的开发工作转移给 ai 去完成,经过我几个月的使用,很明显的发现 AI 写代码有个短板就是: ai 是根据代码去推测结果的 他几乎不会去运行代码 最多只会根据某些场景写单元测试,这样会导致出什么结果呢 第一个 写完代码后 实际的运行结果达不到期望,有时甚至编译都不通过,原因可能是 当需求稍微复杂一些,就很难根据代码推算出结果。第二个 排查问题很容易钻牛角尖,就是可能某段代码确实有问题 但是问题并不出在这个代码段,这个问题说白了 就是有的时候信息有噪音,导致大模型的注意力全在噪声上面了。我就在想,面对上面这两个比较常见的问题,人类开发者是怎么解决的?其实很简单 写完需求后把项目启动起来,然后实际的去跑一次看下结果对不对,遇到复杂问题的直接 debug 一步一步的走 看问题实际出现在哪里。基于这种需求我在七月初的时候 开始开发 joLink 了

joLink

joLink 大概开发了四个多月,是用 Python 写的,MCP 提供执行能力,Skill 告诉 Agent 如何使用这些能力,还有一套全局规则开发要求: 尽量以“事上磨练”的方式写代码,用简单直接的方式,而不是提前解决所有问题,再根据实际运行取得相关证据,而不是等用户单独要求验证。代码基本都是 gpt 写的,我做的项目管理和技术选型以及验收,中间是遇到了非常多的困难,就比如启动,Java 项目一般都是先将代码编译成字节码文件,编译这部分是非常麻烦的,主流使用的 idea 是有增量编译的功能,就是只编译有改动和改动影响到的代码,这点是非常难实现的,如果没有就只能改一行代码,然后用 maven 去编译整个项目,这里大概摸索了两个多月,经过大量的实验和测试最后选择使用 Eclipse JDT 包去实现这个功能。个人从产品的角度去看增量编译是非常重要 如果不解决就无法实现 写代码->启动->验证->有问题 继续改代码->启动 这个开发闭环的。

dogfood

因为我本人是 Java 开发,所以我自己是 joLink 的一个用户,会在实际的工作中去使用他,经过不断的使用和调整: 目前 joLink 能让 coding agent 交付的代码大概率可信,就是我基本不会去看 ai 写的代码了,但是实际的上线前还需要专业的测试去测试,因为 jolink 目前还是针对开发这个阶段。主要是 joLink 补全了目前 coding agent 的短板:写完代码后能看到实际运行结果,AI 再根据反馈去调整代码。但是这只是我个人的工作流,在其他人身上不知道能不能稳定工作,另外 joLink 的边界还是比较浅的,目前能确定的是能运行大部分 Maven/Gradle 构建的 Spring Boot 的项目 以及 JDK8 到 JDK17,可能还不够稳定,joLink 还在早期阶段,我后续也会继续在 GitHub 上找不同开源 Java 项目来试探并且扩大它的边界。但是我期望大家能尝试一下 joLink 看看他能否对大家的工作有帮助,如果没有帮助,也希望知道原因。

github: https://github.com/L1ch404/jolink-runtime
最后感谢大家能看完这篇文章

821 次点击
所在节点    程序员
13 条回复
L1ch404
3 小时 57 分钟前
假如说 joLink 这种能力能被证实有效,未来应该会支持其他编程语言,主要是现在样本还太少了,只有我一个人用,上来就支持多语言 工程量太大了
Zhuzhuchenyan
3 小时 48 分钟前
想法是很好的,只不过晚了一年

> ai 是根据代码去推测结果的 他几乎不会去运行代码

这个结论目前已经不成立了,随着基模的迭代和 Harness 工具迭代,这类夹在中间的工具很难有竞争力
ricciz
3 小时 42 分钟前
ai 已经会在自己觉得合适的时候编译了,而且测试用例也越来越实用
L1ch404
3 小时 29 分钟前
@Zhuzhuchenyan 感谢您的评论,现在的工具确实能让 LLM 去启动项目,其实启动一个企业级的项目还是比较困难的,就拿 maven 项目来说要么打成 jar 包启动,或者用 classpath 再去拼依赖包路径启动,这主要就是一个启动成本的问题,而且绝大数情况启动和单元测试都需要编译整个项目,相对耗时,就很容易导致 LLM 即使能运行代码 它也不太愿意去做这件事,这个我在项目初期是有过相对深刻的研究和探索的,这个就有点像 k8s 初期 大家说用 shell 或者脚本也能实现,确实是能实现,只是比较复杂和麻烦,joLink 不完全在于让 LLM 去启动项目 主要还提供了如何快捷、方便的让 LLM 去启动项目
wxlwsy
3 小时 26 分钟前
我自己的经验,如果服务器启动复杂,比如需要连环启动,且有顺序地启动,ai 就没办法实际跑, 简单工程 ai 会自己启动取验证.ai 最多只编译看看有没有语法错误.
L1ch404
3 小时 23 分钟前
@ricciz 感谢您的评论,确实是会,我在做 A\B 测试的时候发现这个现象了,只不过可能比较慢而已,joLink 提供了一套更方便快捷的方式去执行单元测试
fridaythx
3 小时 21 分钟前
听起来是在重新造一个自己的 agent harness ,为什么不研究一下比较流行且轻量的 pi coding agent ,或许能少踩很多坑。
L1ch404
3 小时 19 分钟前
@fridaythx 不是 agent ,是一个 mcp ,是给 agent 提功能能力的,可以接入目前市面大部分 agent
ryougifujino
2 小时 52 分钟前
AI 不会去实际跑一下来验证,你告诉它每次写完后都去跑一下不就行了么,现在的 AI 没这么笨。
ricciz
2 小时 40 分钟前
@L1ch404 承认 OP 的工作是很有意义的,只是对 OP 的项目能否追得上 ai 的进化脚步感到担忧
L1ch404
2 小时 29 分钟前
@ryougifujino 感谢回复,是可以这样做,joLink 主要还提供了一套更方便 更快捷的能力供 AI 去启动、测试,就有点像现在大家写代码都用 IDE ,如果脱离 IDE 也能写,只不过没那么方便而已
crazy0x
2 小时 27 分钟前
看了眼时间,确认是 2026 年
L1ch404
2 小时 25 分钟前
@ricciz 哈哈哈,你说的这点没毛病,没准未来 AI 能力大幅度提升、非常智能的话 joLink 确实是没多大意义,不过我觉得 joLink 能做出来就已经很不错了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1252535

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX