Java 开发者写 AI Skill 脚本,JBang 是目前最顺手的方案

发布时间:2026/7/13 15:31:26
Java 开发者写 AI Skill 脚本,JBang 是目前最顺手的方案 打开一个 Claude Code 的 Skills 目录仔细看了看结构。一个 AI Skill 通常由两部分组成SKILL.md描述技能的用途和调用逻辑里面会告诉 Agent 遇到什么情况时、去执行哪个脚本、传什么参数。这些被调用的脚本才是真正干活的部分。轻量的业务逻辑用 Python 或 Shell 脚本实现没什么问题但团队里大部分人是 Java 背景让他们临时去学 Python 只是为了写个 Skill 脚本代价有点高。我一直在找一个方案能让 Java 开发者不换语言就直接上手。找到了。叫 JBang。01JBang一个文件直接运行JBang 在 Java 社区默默存在了好几年大多数时候被当成挺有用但我暂时用不到的工具。然后 AI Agent 来了。它做的事说起来很简单让.java文件直接当脚本运行依赖声明写在注释里不需要任何项目结构。同样是用 Jackson 解析 JSONJBang 版本长这样///usr/bin/env jbang 0 ; exit $?//DEPS com.fasterxml.jackson.core:jackson-databind:2.17.0 import com.fasterxml.jackson.databind.ObjectMapper;import java.io.File;import java.util.Map; public class JsonReader { public static void main(String[] args) throws Exception { ObjectMapper mapper new ObjectMapper(); Map data mapper.readValue(new File(data.json), Map.class); System.out.println(data); }}运行jbang JsonReader.java一个文件。没有pom.xml没有src/main/java没有 Maven 各种默认行为目录。//DEPS那行是核心。JBang 读到这行自动从 Maven Central 拉依赖缓存到本地加进 classpath然后运行你的main02装好 JBang只要一行命令Linux 和 macOScurl -Ls https://sh.jbang.dev | bash -s - app setup这行命令会下载 JBang配置PATH顺带给你装一个j!的 alias——是的感叹号——这是jbang的快捷方式。j! version确认一下安装成功。macOS 也可以用 Homebrewbrew install jbangdev/tap/jbang有 SDKMAN 的直接sdk install jbang。Windows 用 Scoop 或 Chocolatey 都支持。装好之后直接上手做一个真实的 AI Skill。03实战给 Claude Code 写一个 Java Skill 脚本Claude Code 的 Skill 机制里.claude/skills/目录下放着技能定义。每个 Skill 包含一个SKILL.md——告诉 AI 这个技能是干什么的、怎么调用——以及一些可执行脚本AI 在需要时调用它们。以前这些脚本只能是 Python 或 Shell。现在可以是 JBang 脚本。示例IP 地理信息查询 Skill目录结构如下.claude/skills/location-info/├── SKILL.md└── scripts/ └── ipinfo.javaSKILL.md告诉 Claude Code 什么时候调用、怎么调用---name: location-infodescription: 需要根据 IP 地址获取地理位置信息时调用此技能--- ## 查询 IP 地理位置 运行脚本jbang ./scripts/ipinfo.java IP_ADDRESS 脚本会返回该 IP 的国家、地区等 JSON 信息可用于后续分析。核心脚本ipinfo.java用 JDK 17 内置的 HTTP 客户端不需要任何外部依赖荐///usr/bin/env jbang $0 $ ; exit $?//JAVA 17 import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration; public class ipinfo { public static void main(String[] args) throws Exception { if (args.length 0) { System.err.println(Usage: jbang ipinfo.java IP_ADDRESS); System.exit(1); } String ip args[0]; String url https://ipapi.co/ ip /json/; HttpClient client HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build(); HttpRequest request HttpRequest.newBuilder() .uri(URI.create(url)) .timeout(Duration.ofSeconds(10)) .GET() .build(); HttpResponseString response client.send( request, HttpResponse.BodyHandlers.ofString() ); if (response.statusCode() 200) { System.out.println(response.body()); } else { System.err.println(Error: response.statusCode()); System.exit(1); } }}//JAVA 17这行保证脚本用 Java 17 或更高版本运行。本机没有合适版本JBang 自动下载不用手动配置。测试一下jbang .claude/skills/location-info/scripts/ipinfo.java 8.8.8.8终端里会出现 Google DNS 服务器的地理信息 JSON。Claude Code 拿到这个 JSON解析出国家代码可以继续调用其他 Skill 做更多事情。整个流程纯 Java没有 Python没有 Shell。还有更快的写法JBang 最近的版本加入了 AI 辅助生成功能这行命令调用 AI直接生成一个符合 JBang 格式的.java脚本文件。生成完直接跑不用自己拼 HTTP 请求。2026 年的 JBang连脚本本身都可以让 AI 帮你写。荐04几个值得知道的细节直接执行不加前缀脚本开头那行///usr/bin/env jbang $0 $ ; exit $?不是装饰。加上它配合chmod x你的.java文件可以像 Shell 脚本一样直接运行chmod x ipinfo.java./ipinfo.java 1.1.1.1对 AI Agent 调用来说很友好。Agent 不需要知道这是 Java给参数读标准输出完事。固定 Java 版本在脚本里加一行//JAVA 21JBang 就会保证用 Java 21 或以上版本运行低版本自动升级。特别适合团队共享脚本——不用在 README 里反复提醒记得装对 Java 版本。支持 KotlinJBang 不只支持 Java。Kotlin 脚本用同一套机制///usr/bin/env jbang $0 $ ; exit $?//KOTLIN 1.9 fun main(args: ArrayString) { println(Hello from Kotlin ${args.firstOrNull() ?: World})}同一套//DEPS声明依赖同一套jbang xxx.kt执行。脚本装成系统命令jbang app install ipinfo.javaipinfo 8.8.8.8写好的脚本直接装成系统命令随处可用。JBang 还有 AppStore 机制可以把脚本发布到 GitHub让别人一行命令安装你的工具。逻辑有点像 npm 的npx但跑的是 Java依赖从 Maven Central 来。