当所有人都在用 TS/Python 写 Agent,我们为什么坚持 Java
1. 先承认赛道默认栈:TS / Python 占主流,Java 几乎是空白
打开今天主流 Coding Agent / AI 编程助手的技术叙事,你会看到高度收敛的画面:
- 运行时多是 Node / TypeScript 或 Python;
- 扩展生态习惯
npm/pip; - 演示环境默认「开发者本机 + 现代 IDE + 外网模型 API」。
这并不奇怪。Agent 需要快速试错、大量胶水代码、丰富的脚本生态;TS/Python 在「个人开发者工具」赛道上确实更轻、更快出 demo。
于是很容易形成一种隐含偏见:
做 Agent = 用 TS/Python;用 Java = 企业遗留、重、慢、不适合 AI。
SolonCode 反其道而行:它公开声明自己是——
基于 Solon AI 与 Java 实现的开源编码智能体,支持 Java 8 ~ Java 26 环境启动。
仓库:https://github.com/opensolon/soloncode
文档:https://solon.noear.org/article/soloncode
协议:MIT
官方差异说明里,第一条就是:
采用 Java 实现,100% 开源。兼容毕昇 JDK(Huawei BiSheng JDK),兼容鸿蒙 PC(Huawei Harmony PC)。
这不是「为了不一样而不同」。技术栈选择,本质上是在回答:你要优先服务哪类组织、哪类部署约束、哪类扩展方式。
2. 选型不是情怀:企业里真正卡住 Agent 的,往往不是模型
个人开发者装一个 CLI、配一个 API Key,一天就能玩起来。
企业里把「编码智能体」推到生产协作,卡住的经常是另一组问题:
| 约束 | 典型表现 | 对 Agent 运行时的要求 |
|---|---|---|
| JDK / 运行时合规 | 指定 JDK 发行版、版本下限/上限、信创目录 | 能在既有 JVM 上跑,而不是强绑某一脚本运行时 |
| 网络与数据边界 | 代码不能随意出域;模型走内网网关 | 本地进程 + 可配置 API 端点,路径可解释 |
| 运维熟悉度 | 会管 JVM、会看日志、会做离线包分发 | 安装/更新/卸载路径清晰,可进服务器与批处理 |
| 长期可改造 | 要接内部权限、审计、工单、CMDB | 扩展机制可被 Java 团队维护,而不是黑盒二进制 |
| 终端形态多样 | 开发机、跳板机、CI、无桌面 IDE | 系统命令形态,有界面/无界面都能调度 |
你会发现:这些约束,和「模型能不能写好一段 React」关系不大,和 Agent 作为进程如何活在企业环境里 关系很大。
SolonCode 的 Java 选型,首先服务的是这类现实,而不是和 TS/Python 比「谁更潮」。
3. 四个硬理由:存量 JDK、信创路径、运维心智、单进程部署
3.1 企业 JDK 存量是基础设施,不是包袱
国内大量业务系统、构建机、运维脚本,仍以 JVM 为默认运行时。
要求每个要用 AI 编码的环境先装一套 Node 20 + 一堆原生依赖,或者维护一套与业务完全无关的 Python 虚拟环境,在团队里经常变成:
- 权限审批多一轮;
- 安全扫描多一类组件;
- 「个人能跑、流水线不能跑」。
SolonCode 的前置条件非常直接(官方安装文档):
- Java 8 或更高(支持到 Java 26);
- 支持 macOS / Linux / Windows(安装脚本亦覆盖 Harmony PC 路径)。
对很多团队来说,这意味着:机器上往往已经具备启动条件,Agent 不必再引入第二条运行时供应链。
3.2 毕昇 JDK 与鸿蒙 PC:不是口号,是可核对兼容声明
README 与官网FAQ明确写出:
- 兼容 毕昇 JDK(Huawei BiSheng JDK);
- 兼容 鸿蒙 PC(Huawei Harmony PC)。
公开技术说明还进一步拆过因果链(架构层面):
- 后端是 纯 Java 应用(基于 Solon 体系)→ 有 JVM 即可启动;
- 鸿蒙 PC 兼容 毕昇 JDK 8 一类 JVM → 后端可运行;
- Web 交互走浏览器 → 系统有浏览器即可访问;
- CLI 走终端 → 有 Bash/终端即可。
结论不是「我们专门为鸿蒙重写了一版」,而是:
Java + 系统命令 + Web 外壳 这套结构,让跨平台/信创终端往往「无需额外适配语言运行时」。
这对政企与行业客户很重要:Agent 能否进短名单,有时先看 能否在指定 OS/JDK 上合法跑起来。
3.3 运维熟悉度:日志、进程、安装目录,都是「企业语言」
官方安装后的主目录结构清晰可审计(文档《安装、更新、卸载详解》):
~/.soloncode/
+-- AGENTS.md
+-- settings.json
+-- bin/
| +-- soloncode-cli.jar
| +-- soloncode
| +-- ...
+-- skills/
+-- agents/
+-- commands/
+-- extensions/ # Java 扩展插件
+-- memory/
对习惯 JVM 服务的团队,这很眼熟:
- 有明确的 bin / 配置 / 插件目录;
- 更新可重复执行安装命令,且说明会保留配置与定义文件;
- 内网可用「联网机下载 tar.gz → 拷贝 →
install.sh/install.ps1」离线安装。
Agent 不再只是「开发者玩具」,而可以按 工具软件/轻量服务 的方式进入资产清单。
3.4 单进程、系统命令心智:服务器与 IDE 控制台同一套入口
SolonCode 强调系统命令形态:在任意工作区目录执行,例如:
soloncode cli # 终端交互
soloncode web 0 # Web 交互(自动选端口)
soloncode run "……" # 单次任务,跑完退出(可编程调度)
官方还说明:可通过编程方式调度(soloncode run "任务描述"),便于批处理、脚本、自动化链路调用。
这对应一种很「企业」的部署心智:
- 一个可执行入口;
- 工作区 = 当前目录;
- 需要界面时开 Web,不需要界面时 CLI/
run; - 远程协作再叠加 Web / ACP 协议(官方差异点之一)。
TS/Python 工具当然也能做到类似事情;但「用 Java 团队已经熟悉的分发与进程模型去承载」,降低的是组织摩擦,不是语法糖。
4. 工程收益:Java 8–26、与 Solon AI 同源、可扩展而不是不可改
4.1 宽版本兼容:老构建机和新 JDK 都能谈
「支持 Java 8 到 Java 26」这件事,对宣传很容易被念成口号,对落地却很具体:
- 仍停在 8/11 的业务线构建环境,不必为了试 Agent 强升全链路;
- 已上 17/21/25 的团队,也不被卡在旧运行时;
- 信创侧常见的 JDK 8 基线,与「追求新语言特性的本机开发」可以并存。
宽兼容的代价是工程纪律(要在旧 JDK 上保持可运行),收益是覆盖面。
4.2 与 Solon AI / Harness 同源:不是「套壳调 API 的脚本」
Solon 生态把 SolonCode 明确放在智能体产品线中,并与 Solon AI 文档交叉引用:
- Solon AI:Java AI 应用框架(LLM、Tool、Talent、RAG、MCP、Agent 等);
- SolonCode:基于该体系实现的编码智能体产品(系统命令 + 多交互外壳)。
对用户的意义是:
- 能力演进有框架层支撑(模型方言、工具、代理、协议),不是单仓库堆脚本;
- 扩展语言与主栈一致——会 Java 的团队可以按官方扩展机制深入定制;
- 与「只用聊天 API + 本地 shell 胶水」相比,更接近可维护的长期产品。
4.3 扩展是一等公民:HarnessExtension + ~/.soloncode/extensions/
官方文档《extensions 扩展开发》写得很清楚:
- SolonCode Extensions 基于 Java 技术栈;
- 类似其它产品里的 Hook / Plugin 定位;
- 实现
HarnessExtension,在configure(agentName, ReActAgent.Builder)中介入装配; - 可添加 Tool、Interceptor 等;
- 打包为 JAR 放入
~/.soloncode/extensions/; - 支持配置显式加载,或基于 Solon SPI / Plugin 自动装配。
依赖示意(文档原文结构):
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-harness</artifactId>
<scope>provided</scope>
</dependency>
这对「平台组要把 Agent 接到内部规范」极其关键:
- 扩展作者是 Java 工程师,代码走公司既有评审与制品库;
- 行为可以进 Git,而不是只能改黑盒配置;
- 与 Skills(流程/提示资产)、Commands(斜杠命令)形成分层:
规范与话术用文档资产,强逻辑与拦截用 Java 扩展。
5. 对用户的直接好处(把选型翻译成工作收益)
5.1 老项目、旧机器,也有机会「先跑起来」
你不需要先把公司全局升级到某一种前端运行时,才有资格试用编码智能体。
只要目标环境有合格 JDK,就可以按官方路径安装:
# Mac / Linux / Harmony PC
curl -fsSL https://solon.noear.org/soloncode/setup.sh | bash
# Windows PowerShell
irm https://solon.noear.org/soloncode/setup.ps1 | iex
新用户推荐:
soloncode web 0
在「设置 → 大语言模型」配置并测试连接(模型不预置绑定,按需接入你信任的供应商或内网网关)。
5.2 私有化 / 内网路径是写进文档的,不是销售口头承诺
官方安装文明确给出:
- 在线安装/更新(重复执行安装命令即可更新,保留配置);
- 离线安装(Gitee Releases 下载
soloncode-cli-bin-*.tar.gz→ 拷贝 → 本地install脚本)。
再叠加隐私说明(官网):
SolonCode 不会存储您的代码或上下文数据。
所有处理均在本地完成,或通过直接 API 调用发送至您的 AI 提供商。
使用信任的提供商或内部 AI 网关时,可以按该模型安全使用。
Java 选型在这里的作用,是让「本地进程 + 可审计目录 + 离线包」与企业既有软件交付方式对齐。
5.3 编码对象不限 Java:运行时是 Java,助手是多语言
需要特别澄清一个常见误解:
用 Java 实现 ≠ 只能帮你写 Java。
SolonCode 作为通用编码智能体,工作对象是工作区里的文件与命令;官方示例任务也包括分析协议、生成材料、以及「Solon + Java17 + Vue3」一类全栈需求。
运行时语言解决的是 Agent 自己如何启动与扩展;业务仓库仍可以是 Go、Python、前端、脚本等。
5.4 多端同一内核:CLI / Web / Desktop,服务不同工位
官方差异点写明同时支持:
- 终端 CLI
- 浏览器 Web
- 桌面 Desktop
- 以及 Web / ACP 远程通讯
Java 后端 + 多外壳,使「服务器上跑 CLI、评审时开 Web、桌面长会话用 Desktop」成为同一产品的不同入口,而不是三个技术栈分裂的项目。
6. 回应常见质疑(只使用可核对事实,不编造对标分数)
质疑 1:「Java 启动很慢、很重,不适合 CLI 工具」
可核对事实:
- 产品形态是系统命令 + 本地进程,安装后通过
soloncode启动;主程序以soloncode-cli.jar等形式存在于~/.soloncode/bin/。 - 早期官方发版说明(团队博客)曾公开描述过资源取向:内存占用小、启动快,并写过「启动内存约 70MB 左右」量级(不同版本/机器会有波动,请以你本机实测为准,本文不把它宣传成永恒基准)。
- 后续发版亦多次强调体积轻量、跨平台;具体安装包尺寸随版本变化,应以 Releases 当前产物为准。
更稳妥的理解:
SolonCode 追求的是「可在企业环境接受的工具级开销」,而不是和最小 shell 脚本比冷启动毫秒数。真正的体感瓶颈,往往在 模型网络延迟与任务步数,不在 JVM 多出来的那一点启动成本。
质疑 2:「Java 生态做 AI Agent 是不是二流,扩展没人会」
可核对事实:
- 上游有完整的 Solon AI 文档体系(ChatModel、Tool、Talent、Agent、Harness、MCP、ACP 等)。
- SolonCode 扩展机制公开、接口明确(
HarnessExtension),安装路径固定。 - 技能(Skills)、子代理、命令、Loop、Memory 等能力在官方文档树中均有专题,不依赖「只能改闭源产品配置」。
是否「主流」,取决于你的团队语言构成。
Java 主力团队维护 Java 扩展,通常比维护另一套 Node 插件链更可持续。
质疑 3:「坚持 Java 是不是为了绑 Solon 框架做生态闭环?」
这里应诚实分层:
- 是:SolonCode 明确基于 Solon AI 与 Java;与 Solon 生态协同是设计事实,不是隐藏关系。
- 不是:它并不要求你的业务项目必须使用 Solon 框架才能被 Agent 修改;工作区可以是任意工程。
- 开源协议是 MIT(SolonCode 仓库),源码可审计、可 fork;是否采用、如何改造,决策权在你。
技术选型服务产品目标;产品目标若是「让国内/企业环境可落地的编码智能体」,Java 是手段,不是宗教。
质疑 4:「那为什么不做成多语言运行时,全都要?」
「全都要」通常带来:
- 安装包与安全扫描面膨胀;
- 支持矩阵爆炸;
- 企业验收说不清运行时边界。
SolonCode 选择 一条主运行时(JVM)+ 多交互外壳 + 模型可插拔,是典型的克制策略:
把复杂度放在「任务与模型」,而不是「再维护三条 Agent 内核」。
7. 边界:Java 选型证明不了什么
为了避免这篇文被读成「Java 沙文主义」,必须写清边界:
- 不证明 SolonCode 在所有场景强于 TS/Python 实现的 Agent。
- 不证明 模型效果由 Java 决定——效果首先取决于你配置的模型、提示、技能与仓库规范。
- 不证明 零学习成本——你仍要配置模型、理解权限与 HITL、学会用 AGENTS.md / Skills。
- 不适合 作为「全面替代开发者」的论据;人仍负责方向、边界与合并。
- 若团队完全没有 Java/JVM 运维能力,且环境禁止安装 JDK,那么 Java Agent 不是你的最优解——应如实换路径。
选型文章的价值,是帮你做 匹配,不是帮你做 信仰。
8. 收束:技术栈选择 = 你决定服务谁
把全文压成一句决策语:
| 如果你更在意…… | Java 路线(SolonCode)的匹配度 |
|---|---|
| 企业 JDK 存量、构建机一致性 | 高 |
| 毕昇 / 鸿蒙 / 内网离线包 | 高(有公开兼容与离线安装说明) |
| 用 Java 做可评审的扩展与拦截 | 高(官方 Extensions) |
| 与 Solon AI 体系长期演进 | 高 |
| 纯个人、极客式 TS 插件生态 | 未必是你的菜 |
| 「不装 JDK、只要一个静态二进制」 | 需另评估约束 |
SolonCode 坚持 Java,不是否认 TS/Python 在 Agent 赛道的成功,而是承认:
有一类用户的主战场在 JVM 企业环境里。
他们需要的不是又一个只能在演示视频里发光的 Agent,而是能进终端、进内网、进扩展目录、进审计清单的数字员工运行时。
人仍然是架构者与审核者;
Agent 仍然只在可控边界里推进实现。
Java 在这里的角色,是让这套分工在真实组织里站得住。
9. 你可以立刻做的 3 件事
-
看官方身份与差异点(5 分钟)
- https://github.com/opensolon/soloncode
- https://solon.noear.org/article/soloncode
-
在已有 JDK 的机器上安装并打开 Web 设置(15 分钟)
curl -fsSL https://solon.noear.org/soloncode/setup.sh | bash # 或 Windows 对应命令 soloncode web 0配置你的模型提供商或内网网关,先完成「你好」级连通。
-
若你是平台组:打开扩展文档,评估是否用 Java 接内部规范
- https://solon.noear.org/article/1444 (extensions)
- https://solon.noear.org/article/1417 (
soloncode run可编程调度)
更多推荐


所有评论(0)