dsh-jj-panel:在 DSH Web 界面里直接读 jj 历史

前言

DeepSeek Harness(DSH)的 Web 端主要围绕对话与任务展开;若工作区用 Jujutsu(jj)管版本,改动的图形、详情和 diff 往往还要切到终端或别的工具。社区插件 dsh-jj-panel(维护者 wzciczw)在 DSH Web GUI 里增加 Jujutsu 标签页:数据直接来自本机 jj 命令,不做 git 翻译,在一条 jj 原生工作流里浏览历史并做结构性编辑。

这是什么

dsh-jj-panel 是 DSH 的客户端(Web profile)插件,当前 package 版本为 0.2.1,许可证 MIT。它在对话视图旁注册面板,通过 Cordis 宿主服务调用 jj log、jj show、jj diff 等,并在面板内发起经白名单校验的写操作(新建变更、describe、squash、abandon、拖拽 rebase 等)。

环境与前提

  1. DSH 0.2.1-rc.2 及以上,且仍在 0.2.x 线(Web profile)。
  2. 本机 jj 0.44+ 在 PATH 上,或在插件配置里指定 jjPath。
  3. 工作区必须是 Jujutsu 仓库(例如在已有 git 仓库里执行 jj git init --colocate)。

核心功能

下面介绍 README 中已列出的能力,均围绕「读 jj、改 jj」。

变更树与 revset

  • 将 jj log 渲染为泳道图:变更 ID、commit ID、bookmark、tag、empty / conflict / divergent 标记、工作副本 @,以及 main(或 master)主干高亮。
  • 默认 revset 为 all();可改为 ::@ 聚焦当前栈,或在 revset 框输入任意 revset(如 bookmarks()、description("…"))后按 Enter。

详情与 diff

  • 选中变更可查看完整描述、作者、时间戳,以及变更文件及状态(M / A / D / R)。
  • 点击文件加载 jj diff --git 输出,带 + / - 着色。

结构性编辑与交互

  • 右键或 ⋯:在此新建变更、edit、describe、squash 到父节点、abandon(或整棵子树)、duplicate、在 @ 之前 revert、按文件 split、复制 change id、推送 bookmark。
  • 拖拽一行到另一行做 rebase;按住 Alt 拖到目标前可调整栈顺序;拖到目标自身或其后代会被忽略。
  • 在详情里开启 split 模式,勾选文件后 Split into new change:勾选文件进入 @ 的新子变更,原变更保留描述。
  • 工具栏 Undo、Fetch;abandon、子树 abandon、revert、undo、push 等破坏性操作会先内联确认,写明动作与目标变更。

快捷键

  • j / k 移动选中,Enter 编辑,n 在选中处新建变更,u 请求 undo,/ 聚焦 revset 框。

安装与启用

官方推荐在 Web profile 下安装:

dsh plugin --profile web add dsh-jj-panel

若从本地检出安装,可使用(路径按本机替换):

dsh plugin --profile web add file:D:\path\to\dsh-jj-panel

安装后在 Web 界面中,与其他对话视图并列打开 Jujutsu 标签。宿主侧改动需重启 DSH;浏览器侧可热更新。

也可在 Plugins → Discover 中添加市场源,安装索引里 pinned 的版本:

https://raw.githubusercontent.com/wzciczw/dsh-jj-panel/master/market/index.json

配置(可选)

在 profile 的 cordis.patch.yml 或插件设置页中,可为插件 id jj-panel 增加配置块:

- id: jj-panel
  name: "dsh-jj-panel"
  config:
    jjPath: 'C:\path\to\jj.exe'   # 默认:PATH,再尝试 winget 安装位置
    timeoutMs: 8000               # 每条 jj 命令超时
    maxBytes: 4194304             # stdout 上限
    defaultLimit: 120             # 每次加载的 commit 数(1..500)

未配置时 jjPath 走 PATH;命令超时与输出上限用于避免单次调用拖死界面。

典型用法

  1. 在已是 jj 仓库的工作区启动 DSH Web,打开 Jujutsu 标签,确认变更树与 @ 位置。
  2. 需要只看当前栈时,将 revset 改为 ::@ 并回车。
  3. 选中变更查看文件列表,点文件看 diff;要拆分时在详情里勾选文件并执行 split。
  4. 调整历史:拖拽 rebase,或右键 describe / squash / abandon;误操作可用工具栏 Undo(对应 jj undo)。

架构与安全(简要)

宿主注册名为 jjPanel 的 Remote 服务,提供 snapshot、log、show、diff、op;浏览器通过 RPC 调用,不自行拼 jj 命令。写操作仅允许 op 白名单;revset 校验禁止 -- 与全局 flag;路径限制在仓库内;失败信息原样展示在面板状态行。

适用场景与注意

  • 适合:已在 DSH Web 里做智能体或脚本开发、且版本库用 jj 的开发者,希望在同一界面看历史、diff 并做 jj 原生编辑。
  • 注意:插件以当前 DSH 进程的用户权限在本机执行 jj;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。社区目录 skillhub.cn 插件页 为独立收录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-jj-panel 把 jj 的变更图、详情与 diff 收进 DSH Web 的 Jujutsu 标签,读写都走 jj 本身,适合不想在 GUI 与终端之间来回切换的 jj 用户。更多信息见目录页与仓库 README。

  • 目录页:https://www.skillhub.cn/plugins/wzciczw/dsh-jj-panel
  • GitHub:https://github.com/wzciczw/dsh-jj-panel
羽毛球分组比赛记分
小程序二维码

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

小夜