dsh-plugin-java-engineer:DeepSeek Harness 的 Java 工程师工具箱

前言

下面介绍的是插件 flynow-harness/dsh-plugin-java-engineer。它是 DeepSeek Harness(下文简称 DSH)上的 Java 工程师插件,由 flynow-harness 维护,存放在社区目录 SkillHub 上(分类:客户端,星标 0),开源协议为 MIT,适配 dsh@0.2.2-alpha.2(Desktop / Web GUI)。

做 Java 项目的 DSH 开发者通常会遇到两类反复出现的请求:一类是「我这台机器 Java 环境到底装没装对」「我这个 pom 里 Boot 版本和依赖有没有坑」,另一类是「帮我生成一个能跑的 Spring Boot 骨架」「帮我算一下容器里的 JVM 参数」。这些任务如果靠 Agent 现编命令去查,结果不稳定,还可能写出不安全的命令。这个插件的做法是把一批确定性工具注册成 Agent 可调用的 Host 工具,让结论可复现、可审阅:除了脚手架属于写入操作,其余全部只读或纯计算,并且不替用户跑构建,也不伪造构建结论。

安装包名是 @local/java-engineer(版本 1.0.0),包含 6 个 java_ 前缀的 Host 工具,以及 Web 端输入框下方常驻的「Java 工程师工具箱」工具条。

核心功能

插件提供 6 个确定性 Host 工具,再加上 Client 端工具条。工具一览如下:

java_env_probe      扫描本机 JDK / Maven / Gradle,给出安装与配置建议      只读
java_project_audit  离线审计 pom.xml / build.gradle,附文件行号证据      只读
java_scaffold_spring_boot  生成 Spring Boot 3 Maven 工程骨架             仅写入指定目录
java_jvm_tune       按内存预算 + 负载画像计算 JVM 参数                   纯计算
java_review_file    Java 源码模式审查,并声明无法判定的部分              只读
java_snippet        24 条可抄用的 Java 工程片段库                       只读

1、java_env_probe:扫描 JAVA_HOME、SDKMAN、asdf、jenv、Homebrew、常见安装目录、PATH、项目 wrapper 与版本固定文件,给出安装与配置建议。它不执行 java -version / mvn -v,版本来自 JDK 的 release 文件与安装路径推断,Maven/Gradle 版本在非 SDKMAN 安装时可能显示「版本未知」。

2、java_project_audit:用轻量正则离线审计构建文件,覆盖 Spring Boot 与 Java 版本、依赖清单、BOM 版本覆盖、已知安全下限(log4j、snakeyaml、h2、commons-text 等)、javax.* / JUnit 4 遗留引用、源码反模式,报告附文件行号。它不解析完整 Maven/Gradle 模型,也不联网校验 CVE,安全下限表只是离线基线。

3、java_scaffold_spring_boot:生成可编译、可运行的 Spring Boot 3 Maven 工程骨架,含 pom、启动类、健康端点、service、application.yml、JUnit 5 测试、.gitignore、README、Dockerfile,支持 10 种 starter 组合与 dryRun 预览。目录非空(且未传 overwrite)、artifactId/包名非法等会返回明确原因,而不是静默写入。注意本仓库未附带 mvnw,生成物依赖本机或 IDE 提供的 Maven。

4、java_jvm_tune:按内存预算与负载画像计算 JVM 参数,输出堆设置、收集器选择(G1/ZGC/Parallel)、容器百分比模式、元空间、OOM 落盘、GC 日志、参数取舍说明以及可直接使用的 JAVA_TOOL_OPTIONS 一行式。

5、java_review_file:按模式做 Java 源码审查,覆盖字符串 ==、BigDecimal(double)、Optional.get、吞异常、printStackTrace、无界线程池、SimpleDateFormat、资源泄漏、SQL 拼接、字段注入、private @Transactional 等。它是模式匹配审查,无法证明并发、事务、领域语义正确,报告里已显式列出需要人工或测试确认的部分。

6、java_snippet:内置 24 条可抄用的工程片段,覆盖虚拟线程、record 校验、sealed + 模式匹配、Stream 收集器、CompletableFuture、BigDecimal 金额、JPA N+1、JUnit 5、日志规范、时间 API、JDBC 批量、线程池等。

安装后 Host 侧还会注入一段简短 system prompt,告诉 Agent 这些工具存在、什么时候用,以及「不要声称构建通过,除非真的跑过」。

输入框工具条

Client 端在有会话的输入框下方常驻一行「Java 工程师工具箱」,它不自己算,只负责把请求交给 Agent:

  • 环境体检 / Spring Boot 骨架 / pom 审计 / 代码审查 / 片段速查:把一条写好的请求填进输入框(若当前槽位不提供 composer 动作则复制到剪贴板并提示粘贴),按 Enter 后由 Agent 调用对应工具。
  • JVM 调参:展开小面板,选内存(GiB)、负载画像、JDK、是否容器,实时预览要发送的请求,再「填入输入框」。
  • 文案走 Client locale(中/英),配色只用 --dsw-alias-* 主题 token,明暗主题自动适配,不引入任何 Harness Client 包。

这个设计保证了 UI 与 Host 同源:真正的计算始终来自 Host 工具,不会出现 UI 与工具两套逻辑漂移。

安装与启用

安装分两步。先克隆仓库:

git clone https://github.com/flynow-harness/dsh-plugin-java-engineer.git

然后在 DeepSeek Harness 中把本仓库目录的绝对路径交给 plugin_manager:

plugin_manager({ action: "install_bundle", target: "/绝对路径/dsh-plugin-java-engineer" })

安装成功的判据是返回 application: "applied" 且 warnings 为空。之后可以依次核对三点:

1、Agent 工具列表出现 6 个以 java_ 开头的工具;
2、打开一个已有会话,输入框下方出现咖啡杯工具条(若未出现刷新页面);
3、设置 → 插件 中可看到中文/英文标题、描述与图标。

卸载用另一条 plugin_manager 调用:

plugin_manager({ action: "remove_bundle", target: "@local/java-engineer" })

该插件 type: module,engines.node 要求 >=20,dsh.bundle.patch 指向 cordis.patch.yml,Client 声明为 Web 平台且 immediately: true。这些信息都写在仓库 package.json 里,改动前可以先看根目录的 cordis.patch.yml 了解注入位置。

典型用法

以下例子来自 README,可直接对 Agent 说:

用 java_env_probe 看看我本机缺什么,并给出 macOS 上的安装命令。
用 java_project_audit 审计当前项目,重点看 Boot 版本、BOM 覆盖和 javax 迁移风险。
用 java_jvm_tune 帮我算一下 8 核 / 8GiB 容器里低延迟服务的 JVM 参数。
用 java_scaffold_spring_boot 在 ~/projects/order-api 生成骨架,先 dryRun 给我看文件清单。
用 java_snippet 讲讲虚拟线程在 IO 密集服务里的正确用法和 pinning 坑。

建议的日常顺序是:先跑 java_env_probe 确认环境,再用脚手架 dryRun 生成骨架,然后拿 java_project_audit 复核依赖与安全基线。README 也明确写了脚手架「是起点不是答案」,生成物依赖选择仍需审计复核。

测试与开发

仓库自带测试,无需安装任何依赖:

npm test          # 8 组冒烟测试:工具定义、体检、片段、JVM 参数、模板、脚手架、审计、审查
npm run check     # 全部模块的 node --check

测试会创建临时工程并在结束时清理,不联网、不修改仓库文件。CI(.github/workflows/ci.yml)在每次 push / PR 时跑同一套检查。代码风格是零依赖 ESM 加中文注释,Host 侧只用 node: 内置模块,Client 侧只用模块表提供的 React,目的之一是避免依赖解析失败导致整个插件不激活。新增工具时 README 要求同时补一条冒烟测试,并保持「只读或显式声明写入范围」的原则。

适用场景与注意

适合在 DSH 中处理 Java 工程的开发者:需要环境体检、脚手架初始化、构建文件审计、JVM 参数推敲、源码模式审查或片段速查时。它不替代构建、测试和 CI,只提供可复现的起点与检查清单。

需要留意的几点:

1、插件以当前 DSH 进程的权限运行。脚手架会向指定目录写文件,涉及仓库内执行流程时,安装前应先检查源码与许可证(本项目为 MIT),不要把它当作免审计的第三方代码。
2、除脚手架外全部是只读或纯计算;java_project_audit 不联网校验 CVE,安全结论最终以官方公告为准。
3、工具条「填入输入框」依赖槽位提供 inputActions,不可用时降级为复制到剪贴板。

结尾

这个插件的价值在于把 Java 工程里那些可以确定、但让 Agent 现算容易出错的事情固化成 6 个可复现的 Host 工具:环境是什么、构建文件有什么问题、骨架怎么生成、JVM 参数怎么算、常见反模式有哪些、片段怎么查。配合输入框工具条,日常 Java 工程任务可以少一次猜测。

目录页:https://www.skillhub.cn/plugins/flynow-harness/dsh-plugin-java-engineer
仓库:https://github.com/flynow-harness/dsh-plugin-java-engineer

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜