前言¶
在 DeepSeek Harness 里写 Minecraft 模组,常见摩擦有两处:改完代码要切回 IDEA 点运行;runData 跑完后要自己 git diff 看产物变了什么。模型侧若只能建议你「本地执行 gradlew」,任务是否在跑、日志和 diff 往往对不上你在 IDE 里看到的那套流程。
下面介绍社区插件 dsh-mc-gradle-runner(维护者 mmyddd):在会话头部提供类似 IntelliJ 的 run* 快捷条,并把 runClient / runData / runServer 以及产物 diff、崩溃摘要接到 DSH 的右侧日志与模型工具里。插件对 Forge、NeoForge、Fabric Loom、Architectury 等任意 Gradle MC 项目可用,不绑定具体仓库。
这是什么¶
dsh-mc-gradle-runner 是 DeepSeek Harness 的桌面端插件(package.json 中 dsh.client.platform 为 web,通过 Cordis patch 注入会话 UI)。它在认出工作区是可运行的 MC Gradle 项目时,在聊天窗口右上角显示运行配置选择器、运行/停止按钮和任务状态;同时可向模型暴露 mc_run_* 工具,让任务在后台执行且不阻塞对话。
插件以当前 DSH 进程权限调用本机的 gradlew,安装前建议在 GitHub 阅读源码与 MIT 许可证,确认符合你的安全与合规要求。
核心功能¶
会话头部的 run* 工具条¶
仅在「真正的 MC Gradle 项目」中显示控件;普通 Java 库或非 Gradle 目录不会出现占位按钮。
| 控件 | 作用 |
|---|---|
| 运行配置选择器 | 列出项目中所有 run* 任务(多模块常带 模块 - 类型 名),可从 Gradle 刷新任务清单 |
| 绿键运行 | 执行当前选中配置;跑过后变为重新运行样式 |
| 红键停止 | 结束任务;默认通过 --no-daemon 保证进程树内可干净停止(含游戏子进程) |
| 更多菜单 | 重开日志面板、刷新任务列表、查看项目根与来源 |
| 状态行 | 显示运行中耗时、完成、失败或已取消 |
点运行后,右侧栏自动打开(或复用)日志页签,输出实时滚动;支持运行中自动跟随、输出分档着色,并在任务结束后附加 runData 产物 diff 或 runClient 崩溃摘要。
停止与 Gradle daemon¶
默认 daemonMode 为 no-daemon:避免长命 Gradle daemon 导致游戏进程脱离启动时的进程树,从而在 Windows 上点停止仍留游戏窗口。代价是每次冷启动 JVM;对 MC 项目通常可接受。若改为 daemon,启动更快,但停止可能无法带走游戏进程,且日志底部「向游戏发命令」的 stdin 管道在 README 中说明会基本失效。
runData 后的 diff 展示¶
完成后不是一句「文件变了」,而是:变更总量、按类目(如 lang / recipes / tags 等)分组、逐文件展示真实增删行与内容;并附带 git status,避免只盯默认产物目录而漏掉手改文件。
runClient 崩溃摘要¶
插件识别新产生的崩溃报告,汇总路径、描述、异常、栈顶与可疑 mod,便于你或模型直接分析,而不必从退出码 1 反推。
日志面板命令输入¶
对 runClient:通过 -I 注入 lib/stdin-init.gradle 转发标准输入,并对 runClient 挂载 lib/console-bridge/ 的 Java Agent,在客户端侧补读 stdin(/ 开头走命令,其余走聊天)。runServer 不挂桥,避免与 JLine 抢 stdin。缺桥 jar 时输入框会禁用并提示,而非假成功。
给模型的 mc_run_* 工具¶
工作区判定与是否显示按钮一致时,可向系统提示词注入工具说明(可在设置中关闭「向模型暴露工具」,按钮仍可用)。
| 工具 | 用途 |
|---|---|
mc_run_task |
启动任务;kind 可为 client / data / server,或完整任务名 |
mc_run_output |
读输出;wait: true 可阻塞至结束 |
mc_run_list |
列出运行中任务 |
mc_run_kill |
停止任务 |
mc_send_command |
向运行中的 client/server 发一行;成功写入不等于游戏侧已执行 |
模型发起的任务与手动任务共用同一工具栏与日志页签,状态可带 AI 标记并可点开实时日志。
多模块项目发现¶
任务与 Gradle 根目录的发现优先级为:Gradle 任务清单 > IDEA .run/ > .idea/ > 自解析 settings.gradle;对「子目录仅有 pluginManagement 的 settings」等情况用目录打分,避免任务前缀被截断。
安装与启用¶
需要 DeepSeek Harness(desktop profile) 与本机可执行的 Gradle MC 项目(含 gradlew 等)。
- 打开 设置 → 插件 → 添加插件。
- 在「包名或地址」中粘贴仓库地址并安装:
https://github.com/mmyddd/dsh-mc-gradle-runner
- 装好后:在 MC 项目会话右上角应出现 run 按钮;设置 → 插件配置 → dsh-mc-gradle-runner* 中出现本插件开关与配置项。升级时在插件管理中再次拉取同一地址即可。
常用配置包括:总开关 enabled、显示按钮 showButtons、向模型暴露工具 exposeTools、daemonMode(默认 no-daemon)、同名任务策略 duplicatePolicy(默认 reject)、gradleRoot 自动或手动指定、diff 展示行数 diffHunkLines(默认 40)等;共约 20 项,改后即时生效无需重启 DSH。
典型用法¶
手动点按钮¶
打开工作区为 MC 项目的任意会话,右上角选择 Client(或对应 run* 配置)后点运行。首次探测约数百毫秒。日志在右侧栏;可从 ⋮ 菜单「打开日志面板」。
让模型跑数据并看 diff¶
在对话中说明要重新生成数据并查看产物变化;模型可调用 mc_run_task(例如 kind: "data"),后台执行,完成后你看到的 diff 卡片与模型工具返回一致。
示例意图(非固定话术):
帮我把数据重新生成一下,看看产物变了什么
向运行中的客户端发命令¶
在日志面板底部输入框,或模型调用 mc_send_command:以 / 开头为游戏命令,否则为聊天。日志中会出现 [mc-console] 回执;未进入世界时可能提示命令无处执行。
适用场景与注意¶
适合谁:在 DSH 里用 AI 协作开发 MC 模组、希望少切换 IDEA、且需要把 runData diff 与 runClient 崩溃信息直接交给对话的一方。
前提与限制:
- 插件以 DSH 进程权限执行
gradlew与 git(用于 diff / status);勿在不可信项目目录盲目运行。 - 右上角无按钮:工作目录不是可识别的 MC 项目,或
enabled关闭。 runData显示无变更:结果确实未变,或产物不在默认dataDirs的四条路径内,需在配置中覆盖。- 命令无反应:检查
forwardStdin与daemonMode是否为daemon。 - 社区目录页:skillhub.cn 插件条目;生态上 DSH 强调「一切皆插件」,该目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-mc-gradle-runner 把 MC 模组开发里高频的 runClient / runData / runServer 搬进 DSH 会话:手动有 IDEA 式工具条与实时日志,自动有产物 diff、崩溃摘要和 mc_run_* 后台任务。若你正在 Harness 里写 Gradle MC 项目,可按上文地址安装,并在插件配置里按需调节 daemon、工具暴露与 diff 展示粒度。
- 目录页:https://www.skillhub.cn/plugins/mmyddd/dsh-mc-gradle-runner
- 源码与 README:https://github.com/mmyddd/dsh-mc-gradle-runner