• 请不要在回答技术问题时复制粘贴 AI 生成的内容
L1ch404
V2EX  ›  程序员

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

  •  
  •   L1ch404 · 14h 3m ago · 1842 views

    背景

    我本人是一个 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
    最后感谢大家能看完这篇文章

    34 replies  •  2026-10-29 03:25:31 +08:00
    L1ch404
        1
    L1ch404  
    OP
       13h 47m ago
    假如说 joLink 这种能力能被证实有效,未来应该会支持其他编程语言,主要是现在样本还太少了,只有我一个人用,上来就支持多语言 工程量太大了
    Zhuzhuchenyan
        2
    Zhuzhuchenyan  
       13h 38m ago   ❤️ 1
    想法是很好的,只不过晚了一年

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

    这个结论目前已经不成立了,随着基模的迭代和 Harness 工具迭代,这类夹在中间的工具很难有竞争力
    ricciz
        3
    ricciz  
       13h 32m ago   ❤️ 1
    ai 已经会在自己觉得合适的时候编译了,而且测试用例也越来越实用
    L1ch404
        4
    L1ch404  
    OP
       13h 19m ago
    @Zhuzhuchenyan 感谢您的评论,现在的工具确实能让 LLM 去启动项目,其实启动一个企业级的项目还是比较困难的,就拿 maven 项目来说要么打成 jar 包启动,或者用 classpath 再去拼依赖包路径启动,这主要就是一个启动成本的问题,而且绝大数情况启动和单元测试都需要编译整个项目,相对耗时,就很容易导致 LLM 即使能运行代码 它也不太愿意去做这件事,这个我在项目初期是有过相对深刻的研究和探索的,这个就有点像 k8s 初期 大家说用 shell 或者脚本也能实现,确实是能实现,只是比较复杂和麻烦,joLink 不完全在于让 LLM 去启动项目 主要还提供了如何快捷、方便的让 LLM 去启动项目
    wxlwsy
        5
    wxlwsy  
       13h 16m ago
    我自己的经验,如果服务器启动复杂,比如需要连环启动,且有顺序地启动,ai 就没办法实际跑, 简单工程 ai 会自己启动取验证.ai 最多只编译看看有没有语法错误.
    L1ch404
        6
    L1ch404  
    OP
       13h 13m ago
    @ricciz 感谢您的评论,确实是会,我在做 A\B 测试的时候发现这个现象了,只不过可能比较慢而已,joLink 提供了一套更方便快捷的方式去执行单元测试
    fridaythx
        7
    fridaythx  
       13h 11m ago
    听起来是在重新造一个自己的 agent harness ,为什么不研究一下比较流行且轻量的 pi coding agent ,或许能少踩很多坑。
    L1ch404
        8
    L1ch404  
    OP
       13h 9m ago
    @fridaythx 不是 agent ,是一个 mcp ,是给 agent 提功能能力的,可以接入目前市面大部分 agent
    ryougifujino
        9
    ryougifujino  
       12h 41m ago
    AI 不会去实际跑一下来验证,你告诉它每次写完后都去跑一下不就行了么,现在的 AI 没这么笨。
    ricciz
        10
    ricciz  
       12h 30m ago
    @L1ch404 承认 OP 的工作是很有意义的,只是对 OP 的项目能否追得上 ai 的进化脚步感到担忧
    L1ch404
        11
    L1ch404  
    OP
       12h 18m ago
    @ryougifujino 感谢回复,是可以这样做,joLink 主要还提供了一套更方便 更快捷的能力供 AI 去启动、测试,就有点像现在大家写代码都用 IDE ,如果脱离 IDE 也能写,只不过没那么方便而已
    crazy0x
        12
    crazy0x  
       12h 17m ago
    看了眼时间,确认是 2026 年
    L1ch404
        13
    L1ch404  
    OP
       12h 15m ago
    @ricciz 哈哈哈,你说的这点没毛病,没准未来 AI 能力大幅度提升、非常智能的话 joLink 确实是没多大意义,不过我觉得 joLink 能做出来就已经很不错了
    lsls931011
        14
    lsls931011  
       9h 47m ago
    我记得 GPT 在写代码的时候就有大量的测试,而且他还会启动我的项目去进行检测,甚至可以自己发送请求或者打开浏览器等等验证, 只要知识库规则设置好就行了。而且 Claude Code 就更加智能了,至于你说的增量编译,Java 我没试过,但是,类似之前使用 AI 进行编译谷歌浏览器内核的时候,第一次是全量编译,后续修改内容也可以增量编译。

    当然,我使用的都是官方的 GPT 桌面版或者 Claude Code 桌面版。

    建议 OP 也使用一下,别使用 Cursor 、Copilot 等第三方的,使用官方完整的 agent 体验一下。
    refear99
        15
    refear99  
       9h 36m ago
    说的是 2026 年的事儿吗,现在 codex 和 claude 还能跑不起来你的项目?
    coefu
        16
    coefu  
       9h 27m ago
    这个世界的迭代速度之快,早就超越了你自以为是且固步自封的小聪明。

    你能想到的任何一件事,在你还没有完成之前,就已经落后于这个世界。

    就算是再聪明的脑袋持续跟进,也感到疲惫乏力。
    stardust21
        17
    stardust21  
       8h 2m ago   ❤️ 1
    @coefu 所以你这一通教训有什么意义呢,说明你很疲惫乏力了么?我理解 LZ 做了一个 Java 垂直方向的 harness 插件,如果能节省一些 token 和时间,为什么不是聪明的表现呢
    chenluo0429
        18
    chenluo0429  
       7h 50m ago via Android
    @stardust21 因为插件的能力已经被大模型原生覆盖了啊。按照现在的主流模型,这个插件大概率只能兼容于某些特定的项目,对于绝大部分项目来说是限制而非是助力。最终的结果是不节省 token 和时间,反而降低性能
    moyupai
        19
    moyupai  
       7h 41m ago
    出来的太晚了,如果你的项目对外部依赖比较少,测试库配好,ai 完全可以一把梭,写完代码就连测试库验证场景,各种测试夹具看的你眼花缭乱,测完还帮你提交代码,你就在那逼逼赖赖的打字就行了
    fovecifer
        20
    fovecifer  
       7h 35m ago
    你说的这个在一年前可能还有点道理,但是现在完全不是了。
    alamaya
        21
    alamaya  
       7h 25m ago
    估计没咋用过现在的 ai ,ai 怎么会不愿意去运行代码,我现在遇到一个 bug 可以只描述现象,ai 会自己看代码分析然后写验证代码进行复现,复现成功了才确认问题,而不是直接就改代码。说实话,你只要给到足够的信息,ai 做得只会比人更好更细致。
    wantDoraemon
        22
    wantDoraemon  
       7h 19m ago
    现在 AI agent 的能力超乎想象,你能把测试方法封装成 MCP ,那对现在的 AI 来说都不算难,给项目配上 harness ,写个 SOP 基本上就能干了。一年前 AI 写的代码我都会 review 一下,现在代码不看了,甚至文档我也不看了,只能说 AI 发展太快了,翻天覆地,彻底的改变了工作方式。不知道自己的饭碗还能保留多久,现在也是很迷茫了
    JasonYip
        23
    JasonYip  
       7h 15m ago
    其实还真不是 以前我用 zcode 的时候他自己就会把一个 jar 包拉到/tmp ,自己写一个 Java 小 demo ,编译运行,然后自己看字节码,我没有提示他这么干,是他自己自发的
    L1ch404
        24
    L1ch404  
    OP
       7h 2m ago
    @chenluo0429 怎么说呢,能用和好用之间还是有些区别的,joLink 更像是给 AI 做的一个 IDE 吧,就是提供了一些方便的入口吧,如果 java bin 去启动一个企业级的 Java 项目还是比较麻烦的,也不说不能,就像以前古法编程一样 用记事本一样可以写代码 只是不好用而已,不过我也没有说 joLink 一定有用或者怎么样,我只是想探索一下,毕竟失败的探索也是有意义的,最后感谢你的回复
    L1ch404
        25
    L1ch404  
    OP
       6h 44m ago
    @crazy0x
    @lsls931011
    @refear99
    @moyupai
    @fovecifer
    @alamaya
    @wantDoraemon
    @JasonYip 我上面表达的有问题,不是说跑不起来,只是启动一个企业级多模块的 Java 项目还是比较麻烦,可以用 classpath 拼接依赖包或者先编译再用 jar 、war 的方式启动,在我有限的测试中发现 ai 不太愿意这样做,这个东西就是给了 AI 一个快捷的启动、测试入口,其次启动前的编译也会快些,并不是说开创了一个什么东西,只是想在这方面做了一个尝试而已,想探索一下 让 ai 快捷的启动、测试对于 vibe coding 这件事情有没有帮助,最后感谢大家的回复,我没有一一回复 我就找了相同疑问的评论一起回复了🙏🏻
    quxiaojuncuiyue
        26
    quxiaojuncuiyue  
       5h 49m ago via Android
    我没看懂这个产品 主要解决了啥问题呀 如果只是为了企业级产品全量编译比较耗时的话 这个又不是 ai 的问题 没有 ai 之前 这个问题也存在 解决它的方法论 不是微服务 不是 osgi 再不行你用 ddd 再不行纯技术领域 就是啥 maven 增量编译 jenkins 增量编译 前面是跟 ai 无关的工程方法论 后面是增量编译技术的现有技术方案 后面这个对于 ai 来说 就是一个全局规则和一个命令行调用的事 再说测试理论和事实理论 根据事实推断这个是 ai agent 的指导规则的 harness 而测试目前来说是要靠你自己想出来的一套黑盒验证方法 感觉这些包不出来一个 mcp 呀
    L1ch404
        27
    L1ch404  
    OP
       5h 29m ago
    @quxiaojuncuiyue 你说的增量编译不是新问题、验证方法属于 Agent 的工作规则,这两点我认同。我前面把开发理念和工具实现放在一起讲了,容易让人理解成“加个 MCP 就能让 AI 学会测试”,这个确实不是 joLink 做的事情。
    joLink 更具体的定位,是给 Agent 用的无界面 Java 开发环境。它从 Maven / Gradle 取得项目的源码、依赖和编译配置,再维护一个持久的 JDT 工作区,后续修改复用已有编译状态。增量编译用的就是现有 JDT 技术,不是我发明的新算法,也不是说原生命令行做不到增量编译。
    它做的不只有编译。比如应用已经启动,Agent 改完代码后,可以让 joLink 增量编译并应用修改,适合的用 HotSwap ,需要重新初始化的就重启;遇到问题,还可以在同一个托管应用上设置断点、读取调用栈和变量。这里管理的是实际的编译状态、应用进程和调试会话,不只是告诉模型“你应该运行一下”。
    至于测什么、怎么造数据、什么结果才算符合需求,仍然需要开发者或 Agent 根据业务设计。配套规则只指导这个过程,joLink 不会自动替业务定义正确答案。MCP 则只是把运行、测试、调试这些操作接给 Agent 的接口,不是在协议里封装一套通用测试理论。
    规则加命令行当然可以完成这些工作,已有脚本或者 IDE 集成也可以。如果一个项目的现有流程已经很顺,确实未必需要 joLink 。我想做的是把这部分能力整理成可复用的组件,让不同 Agent 可以直接接入,而不是各自组织一套。具体能不能减少操作和等待、值不值得多装一层,要看实际项目的对比,不能只因为用了 MCP 就说更好。
    kneo
        28
    kneo  
       5h 1m ago
    OP 的项目,就像一个没用过 AI 的人在教我怎么用 AI 。
    L1ch404
        29
    L1ch404  
    OP
       4h 38m ago
    @kneo 哈哈哈 不至于,joLink 其实真正服务的对象是 AI ,我们作为第二用户可能比较难理解和看到他的用处,你可以把 joLink 的 github 地址发给你经常用的大模型 让他去客观的评判下有没用、怎么看待 joLink 的
    kneo
        30
    kneo  
       4h 22m ago
    @L1ch404 你不如问下你的 AI ,为什么 joLink 这个项目没人用。让它客观分析下,现在的程序员是怎么使用 AI 解决问题的。
    gorvey
        31
    gorvey  
       4h 4m ago   ❤️ 1
    我理解你干的事情,曾经我也折腾过,为了某一个细分的开发领域,让 ai 执行得更快,更好。
    但是基模越来越强,吸收了特别多的开发方法论,已经内化了。现在已经不需要折腾了,只需要写好提示词激活这些能力
    L1ch404
        32
    L1ch404  
    OP
       3h 57m ago
    @gorvey 能详细讲讲吗,是哪一块的领域?有没有项目地址呀 我去瞧瞧
    niubilewodev
        33
    niubilewodev  
       3h 54m ago
    这已经不是君生我已老了。
    君未生的时候,AI 就已经不需要了。
    quxiaojuncuiyue
        34
    quxiaojuncuiyue  
       35 mins ago
    @L1ch404 仔细看了你的回复 我觉得你这个项目 是个有用的东西。就是兄弟,很明显你的抽象能力还不够,还不够把这玩意抽象出来一个简单的模型,讲清楚给大家听。

    我帮你抽象一下你做的东西。你自己也理一理你看我说得对不对。你其实想做的是 ai 时代的 ai navtive 的 ide 这个 ide 通过 mcp 的方式接入进 ai agent 姑且就叫它 ide-mcp 。

    你的这个 ide-mcp 提供两种能力 一种是上下文暴露 一种是工具调用。
    看你的描述 能抽象出来这么几种上下文 CompileContext DebugContext 工具调用的话 就有 compile start hotswap autodebug 等等
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1239 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 20:00 · PVG 04:00 · LAX 13:00 · JFK 16:00
    ♥ Do have faith in what you're doing.