dsh-mc-gradle-runner:在 DSH 里一键跑 MC 的 runClient / runData

前言

在 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 等)。

  1. 打开 设置 → 插件 → 添加插件。
  2. 在「包名或地址」中粘贴仓库地址并安装:
https://github.com/mmyddd/dsh-mc-gradle-runner
  1. 装好后:在 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
羽毛球分组比赛记分
小程序二维码

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

小夜