DeepSeek Harness 插件

dsh-session-git

Conversation lineage for DeepSeek Harness: fork at a completed turn and show the family tree. Does not rewind files or merge logs.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
JUANWANG-BUAA/dsh-session-git
最近更新
2026年8月17日
分类
记忆
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/JUANWANG-BUAA/dsh-session-git
插件名:dsh-session-git
作者:JUANWANG-BUAA

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh.md来源说明 · 只读预览
README 语言

dsh-session-git

![CI](https://github.com/JUANWANG-BUAA/dsh-session-git/actions) ![GitHub release](https://github.com/JUANWANG-BUAA/dsh-session-git/releases/latest) ![License: MIT](./LICENSE) ![GitHub Repo stars](https://github.com/JUANWANG-BUAA/dsh-session-git/stargazers) ![GitHub last commit](https://github.com/JUANWANG-BUAA/dsh-session-git/commits/main) ![Node](./package.json) ![DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) ![PRs Welcome](https://github.com/JUANWANG-BUAA/dsh-session-git/pulls)

English | 中文

dsh-session-gitDeepSeek Harness 的插件:把会话当成对话谱系,从已完成轮次新建分支、打开子会话,并在顶栏画出家族树。源会话保持原样。本插件不回退工作区文件,也不合并日志。

兼容 DeepSeek Harness 0.1.0-rc.5 的 fork 语义(锁在 src/policy/host-boundary.ts)。本机 CLI 0.1.0-rc.6 上冒烟通过。升级上游后请跑 pnpm test;若 host-boundary 变红,停止发版。

问题

官方 API 已经支持 fork({ sessionId, atSeq })。Web UI 只在当前 transcript 尾部和侧栏「最后一轮」暴露这个切点。无法从更早的完成轮分支,官方侧栏也故意保持扁平。

做法结果
官方 Branch只切最后一轮完成轮;不画家族树
dsh-turn-rewind / dsh-rewind文件回退;部分路径会归档源会话
本插件历史完成轮分叉 + 插件内家族树;不碰文件

需要磁盘时间机器时请装 rewind 类插件,不要让本包「撤销那次编辑」。

解决方案

本插件在官方 fork RPC 之上补产品 UI:

  • 在顶栏选一个已完成轮次,按该轮精确的 turn/end seq 分叉;
  • 更早的轮次在 turnTail 链空闲时提供「从此处新建分支」;
  • 只读父会话芯片与家族树 popover;
  • 不归档、不 cancel、不自动 prompt 源会话。
flowchart LR
    A[已完成第 N 轮] --> B[executeFork]
    B --> C["session.fork atSeq = turn/end"]
    C --> D[尽力递增子会话标题]
    D --> E[打开子会话]
    E --> F[用侧栏 parentId 画家族树]

功能

  • 顶栏 从轮次分支:列出当前窗口里已完成轮的 turn/end seq。触发按钮本身不分叉。
  • 更早完成轮的历史 turnTail 按钮。最后一轮留给官方 Branch。本插件以 priority: 50 注册,有产物文件时不盖掉官方行。
  • 同一 popover 里的家族树:归档或不在列表的父节点显示为占位;origin: subagent 不当作 Git 分支。
  • 父会话芯片可打开父会话。
  • 同一源会话上重叠的第二次 fork 会被拒绝(error.in-flight)。
  • 失败必有 messageKey。产品文案不用「回滚 / 撤销」。

环境要求

  • Node.js ^22.19.0 || >=24
  • DeepSeek Harness 的 web profile。浏览器半边依赖 conversation 插槽,不适用于 headless。

安装

推荐装 GitHub Release 里预构建好的 tarball。包内已有 lib/dsh plugin add 会转给 pnpm,用户不用 clone、不用 allowBuilds、也不走 npm 仓库。

dsh plugin --profile web add https://github.com/JUANWANG-BUAA/dsh-session-git/releases/latest/download/dsh-session-git.tgz
dsh --profile web --dump-config | grep session-git

应出现 # == dsh-session-git 层。启动 Web 时不要带着调试用的 DSH_HOME

env -u DSH_HOME dsh --profile web

钉住某个已发布版本:

dsh plugin --profile web add https://github.com/JUANWANG-BUAA/dsh-session-git/releases/download/v0.1.0/dsh-session-git-0.1.0.tgz

从本仓库开发目录

pnpm install
pnpm run build
dsh plugin --profile web add "$(pwd)"

Git(安装期构建)

钉住所验证过的 commit。pnpm ≥ 10 默认拒跑构建脚本,把包名放进该 profilepnpm-workspace.yaml(通常是 $DSH_HOME/profiles/web/pnpm-workspace.yaml):

dsh plugin --profile web add github:JUANWANG-BUAA/dsh-session-git#<commit-sha>
allowBuilds:
  dsh-session-git: true

allowBuilds 等于允许安装期在你的机器上执行这个包的脚本,只允许你信任的来源。日常请用上面的 Release tarball。

本地 tarball

pnpm pack
dsh plugin --profile web add ./dsh-session-git-0.1.0.tgz

tarball 已含 lib/client.js。没有 tsdown.config.tsprepare 会跳过重建。

使用

1. 打开至少有一轮已完成的会话。 2. 用顶栏 从轮次分支 选切点;或在没有产物文件行的更早轮次用 从此处新建分支。 3. 子会话历史停在所选轮结束(含该轮后、下一轮 turn/start 之前的独立事件,例如改标题)。源会话保持原样。 4. 子会话上的 父会话 与家族树可回到源会话。

源会话
  第 1 轮  ── 顶栏可选 / 历史轮 turnTail
  第 2 轮  ── 顶栏可选 / 历史轮 turnTail
  第 3 轮(末轮)── 只用官方 Branch

卸载

dsh plugin --profile web remove dsh-session-git
dsh --profile web --dump-config | grep session-git

面板和按钮消失。fork 出来的子会话仍是普通会话,parentSession 还在日志里。官方「在新对话中分支」不变。

配置

- id: session-git
  name: dsh-session-git
  config:
    turnTail: true           # false:关掉历史轮按钮,顶栏选择器仍在
    prefillComposer: false   # 接受后忽略;子会话从不预填

完整选项、默认值与校验在包内 Config schema(src/index.ts)。

当前 Web boot 创建客户端条目时不转发 host yaml,浏览器半边默认仍开启 turnTail;单测覆盖关闭路径。

局限

  • 家族树用侧栏 SessionSummaryparentId / 标题 / running / blank / updatedAt)。seedLength 不在摘要里,v0.1 不显示「从 seq N 切开」
  • 归档或不在当前工作区的父节点显示为占位。
  • 树只活在本插件 popover 里,不改官方扁平侧栏。
  • 该轮若有产物文件,官方 deliverables 占用 turnTail 链,请用顶栏选择器切那一轮。
  • 子会话标题按官方 (1) / (n) 递增。从同一源 fork 两次可能撞名。树上看不出切点。
  • session.fork 复制的是当前工作区,不是那一轮当时的文件。本插件不回退文件。
  • 空白英雄页没有会话顶栏,因此也没有本插件选择器。
  • 分支事件 diff 与家族树导出放到 0.2.0。

开发

git clone git@github.com:JUANWANG-BUAA/dsh-session-git.git
cd dsh-session-git
pnpm install
pnpm run check:ci

check:ci 会跑 lint、用 types/ci.d.ts 做类型检查、单测与客户端测试、以及构建。可选的 pnpm run bootstrap 会克隆或构建隔壁的 DeepSeek Harness,以便 pnpm run check 使用真实的客户端 .d.ts

pnpm test = policy 单测(node:test)+ jsdom 组件测(vitest)。0.1 没有 diff 纯函数。

Git 安装会跑 prepare。打包后的 tarball 不含 tsdown.config.ts,安装时跳过重建。打 GitHub Release 的步骤见 [CONTRIBUTING.md](./CONTRIBUTING.md);本包不上 npm。

贡献 · 安全 · 许可证

  • [CONTRIBUTING.md](./CONTRIBUTING.md)
  • [SECURITY.md](./SECURITY.md)
  • [MIT](./LICENSE) © 2026 JUANWANG-BUAA