前言¶
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 等)。
环境与前提¶
- DSH 0.2.1-rc.2 及以上,且仍在 0.2.x 线(Web profile)。
- 本机 jj 0.44+ 在
PATH上,或在插件配置里指定jjPath。 - 工作区必须是 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;命令超时与输出上限用于避免单次调用拖死界面。
典型用法¶
- 在已是 jj 仓库的工作区启动 DSH Web,打开 Jujutsu 标签,确认变更树与
@位置。 - 需要只看当前栈时,将 revset 改为
::@并回车。 - 选中变更查看文件列表,点文件看 diff;要拆分时在详情里勾选文件并执行 split。
- 调整历史:拖拽 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