dsh-ris-ide:在 DSH Web GUI 里完成日志、启停与 Java 调试

前言

用 DSH 和 agent 协作开发时,常见节奏是:在聊天里改方案,再切到终端看日志、切到 IDE 改一行、再切回来问 agent。独立 IDE 窗口往往不带会话上下文,但「看一眼、改一下、跑一下、断一下」仍要反复换窗口。下面介绍 dsh-ris-ide(RIS-IDE 本地开发面板):挂在 DSH Web GUI 右侧栏,并在可选的独立窗口里提供完整工作台,复用 DSH 已有路由与一条 SSE,不另开端口、不常驻 language server。

这是什么

dsh-ris-ide 是面向 DSH(DeepSeek Harness)Web GUI 的插件,维护者为 ris-cloud。源码主仓库在 Gitee(riscloud/dsh-ris-ide),GitHub 上的 ris-cloud/dsh-ris-ide 为只读镜像,约每 2 小时从 Gitee 同步。

定位不是替代 IDEA 或 VS Code,而是补齐碎片化本地操作:实时日志、工作区内程序启停、Java JDWP 断点调试、git 口径文件树与编辑,以及供 agent 调用的 ris_dev_* 工具。侧栏只保留「RIS控制台」(控制台 + 实时日志,默认高度 240px);文件树、编辑器、调试区可在聊天页右上角 ⧉ RIS-IDE 打开的独立窗口中使用——该窗口不加载 DSH 界面、不带会话历史,长期开着也不会随会话变重。

核心功能

日志与控制台

  • 日志按行着色(ANSI / ERROR-WARN-INFO),支持换行开关、字号、暂停/跟随;默认侧重本次启动段,历史仍可加载。启动/停止/重启/调试后日志面板会立刻补齐;标题栏显示服务状态(如 运行中 (pid N) / 已停止),可直接停止服务。
  • 侧栏「RIS控制台」上段为程序列表(状态、内存、启停与调试入口),点程序名下方跟对应日志;分隔条可拖,双击恢复默认高度。

本地实例与配置

扫描工作区内的 Spring Boot 入口与前端 package.json 脚本,支持一键启动、停止、重启与看日志。首次打开会在工作区根生成 .dsh-ris-ide.json,保存 JVM 参数、env、日志名、停止宽限等;之后按配置启动,漂移时可提示更新。

Java JDWP 调试

仅 Java/Spring 程序:行号断点、线程/调用栈/变量、单步与继续;依赖 jar 可尝试 -sources.jar 或 javap,调试面板可选填反编译工具 jar。自定义 startCommand 时须在 java 后包含 ${JDWP_ARGS} 占位符,否则调试启动会报错。前端程序仅支持启停与日志。

文件树与编辑器

git 口径目录树与文件名搜索;CodeMirror 在首次打开文件时懒加载(约 1.1MB chunk)。支持多页签、保存、新建/移动/删除、Markdown/HTML 内联预览;工作区变更经 SSE 增量更新文件树。超大文本以只读分页预览打开。

与 agent 协作

内置 ris_dev_*:列程序、查状态、启停、读日志、调试、安装 skill 等,与面板共用同一套能力。

运行方式与安全边界

插件零运行时 npm 依赖,客户端产物随包发布;路由为 /dsh-ris-ide/*,HTTP 拒绝非 loopback Host/Origin。文件读写限制在工作区内;启停在本机 DSH 进程权限下执行,不监听公网、无遥测。本机可选依赖:git(无则文件树不过滤 gitignore)、JDK(Java 启停与调试)、Maven(默认 Spring 启动会 mvn compile)、Node(前端 dev server)。

安装与启用

需要 DSH >= 0.2.0-rc.2,且 Web GUI 具备官方右侧栏(sidebarRight / sidebarRightTabs / slots)。peer 依赖包括 @deepseek-ai/dsh-client-ui-sidebar-right 与 @deepseek-ai/dsh-client-ui-slots(均为 optional meta)。

发布到 npm 后,在 web profile 安装:

dsh plugin --profile web add dsh-ris-ide

内网可将 registry 指向内部 npm 源后执行同一条命令;离线也可安装本地 tgz:

dsh plugin --profile web add /path/to/dsh-ris-ide-<version>.tgz

说明:

  1. dsh plugin add 会写入 ~/.dsh(沙箱会话可能需要提权),并更新 profile 的 dependencies 与 bundles。
  2. 装完后重启 dsh web,浏览器硬刷新(Ctrl+Shift+R)以加载新客户端 bundle。
  3. 升级时若 pnpm 跳过更新,可先删除旧副本再重装,例如:rm -rf ~/.dsh/profiles/web/node_modules/dsh-ris-ide,再重跑安装命令。

卸载:

dsh plugin --profile web remove dsh-ris-ide

然后重启 dsh web。

典型用法

  1. 打开 DSH Web GUI,右侧栏进入「RIS控制台」;完整工作台可从右上角 ⧉ RIS-IDE 在独立窗口打开(打开即按工作区尺寸最大化,同工作区复用同一窗口)。
  2. 首次打开生成 .dsh-ris-ide.json,可在面板中调整后再写回配置。
  3. 程序行:启动/停止(停止按 pidfile 校验后 TERM → 宽限 → KILL);调试(Java,JDWP 模式);进入打开含调试区、日志、文件树与编辑器的独立工作台。
  4. 日志在工作台或日志页查看;Ctrl+F 为日志内查找。agent 查看日志等价于 ris_dev_logs。
  5. Java 调试流程:查状态 → 启动调试 → 按类名与行号设断点 → 查看线程/栈/变量并单步。

工作区根配置 .dsh-ris-ide.json 常用字段:

字段 作用
defaults.jvmArgs 全局默认 JVM 参数
程序条目的 jvmArgs / args / env 单程序 JVM、应用参数、环境变量
startCommand 覆盖自动启动命令(含 ${JDWP_ARGS})
logName / stopGraceMs / disabled 日志文件名 / 停止宽限(默认 5000 ms)/ 是否禁用

完整语义见 Gitee 仓库 DEVELOPMENT.md §2.6。

适用场景与注意

适合已在用 DSH Web GUI、需要在同一界面里跟日志和本地 Spring/前端 dev 程序打交道的开发者;大重构与深度语言服务仍建议用 IDEA 等重型 IDE,本插件负责轻量闭环与 agent 共用面板。

安装前建议阅读 Gitee 主仓库源码与 MIT 许可证;插件以当前 dsh 进程的用户权限启动/停止进程并读写工作区文件,安装前应确认信任维护者与包来源。Windows 上启停包装会自动选择 Git Bash 或 PowerShell;WSL bash 不在支持范围内,必要时用 startCommand 调用 wsl.exe。

DSH 生态采用「一切皆插件」;社区插件目录(如 SkillHub 上的 ris-cloud/dsh-ris-ide)为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-ris-ide 把日志跟随、程序启停、Java 调试和工作区编辑收进 DSH 右侧栏与可选独立窗口,并与 ris_dev_* 对齐,减少在聊天、终端和桌面 IDE 之间来回切换。目录页:https://www.skillhub.cn/plugins/ris-cloud/dsh-ris-ide;GitHub 镜像:https://github.com/ris-cloud/dsh-ris-ide;源码与开发文档以 Gitee 为准:https://gitee.com/riscloud/dsh-ris-ide。

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

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

Xiaoye