前言¶
下面介紹的是插件 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