dsh-turn-fork

DSH PLUGIN记忆与知识

仓库 ruby1304/dsh-turn-fork · npm dsh-turn-fork

记忆与知识 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 会话提供按轮次原子编辑、重试、重生成与版本树导航的 DSH plugin,分支日志在进程重启后依然保留。

一句话选型结论

按资料字段整理

dsh-turn-fork 是记忆与知识类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类记忆与知识 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 2 复刻 0 · 未关闭 issue 1
最近更新 2026-09-10 创建于 2026-08-17
README 7.1 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add dsh-turn-fork@0.1.4
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2 等 12 个,Node.js 要求 >=22;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2 等 12 个版本版本不匹配时安装会报错
Node.js 要求>=22来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名dsh-turn-fork可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-turn-fork:为 DeepSeek Harness 会话提供原子编辑与版本树导航的 DSH plugin

  • 编辑消息并重跑
  • 重试与重生成
  • 版本树导航
  • 重启后日志保留
  • 双语界面

适用场景

记忆

上游标签

deepseek-harnessdshdsh-pluginplugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2 等 12 个),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在记忆与知识场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-turn-fork当前 L5 · 运行验证通过 低风险 2 0.2.0-rc.2 等 12 个 有
ruflo L3 · 安装规范通过 低风险 7.4 万 未标注 无
OpenViking L3 · 安装规范通过 低风险 3.9 万 未标注 无
WeKnora L4 · 沙盒安装通过 低风险 3.3 万 未标注 有
distilly L4 · 沙盒安装通过 低风险 2.5 万 未标注 有
EverOS L4 · 沙盒安装通过 低风险 1.3 万 未标注 有

仓库档案

记忆与知识
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方ruby1304仓库 dsh-turn-fork · 默认分支 main
分类记忆与知识memory
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue2 / 0 / 1收录时的数值,非实时
创建 / 更新2026-08-17 · 2026-09-10最后推送 2026-09-10
本站收录2026-08-27首次进入本站目录的时间

README 全文

7.1 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-turn-fork

为 DeepSeek Harness 会话提供
回合级(turn-atomic)的消息编辑、重试、重新生成与版本树导航。

English

  • 编辑任意已落定的用户消息,并从该回合重新分支执行(后续回合 截断 或 保留)。
  • 重试任意历史回合;重新生成最后一轮的回复。
  • 版本树 Timeline + 跨分支撤销/重做导航。
  • 分支日志在 dsh 进程重启后仍可读取——这正是社区插件 dsh-message-edit
    未通过的 P0 耐久性保证(见下文)。
  • 只使用官方插槽:Timeline 标签页、会话头部操作、每条助手消息的操作区。
    无 DOM 注入、无文本猜测定位。
  • 通过 dsh-client-locale 接入的中英双语界面。

安装

dsh plugin add dsh-turn-fork

重启 dsh 后生效。插件会注册一个 回合分支(Turn Fork) 标签页(位于
Trajectory 与 Prompt Studio 之间)、会话头部的撤销/重做/重新生成按钮,以及
每条已落定助手消息上的重试/重新生成按钮。

为什么会有这个插件

dsh-message-edit(v0.2.3)存在一个 P0 致命缺陷:其持久化溯源事件
message-edit/version 没有 ignorable 标记。live 写盘路径照单全收,
但 dsh 重启后持久层的冷读词汇表守卫(assertEventsSupported)会以
SessionFormatUnsupportedError 拒绝整条日志——所有分支会话集体打不开。
复现与回归见 tests/p0-persistence.test.mjs(live 写入 OK → 重启 → 冷读
REJECTED;补上 ignorable → 重启 → 冷读 PASS),测试直接驱动真实的
dsh-session + dsh-session-persistence-jsonl,并在全新子进程中完成"重启"。

本插件同时修复了评审发现的设计遗漏:

缺陷 本插件做法
自定义事件必须 ignorable: true turn-fork/version 一律 ignorable,且带 schemaVersion 供未来迁移
HTTP 路由无信任围栏(CSRF / DNS 重绑定、烧 token) Origin/Host 回环围栏 + content-type 校验 + 64 KiB body 上限
用 DOM 文本猜测定位消息 仅官方插槽(conversation.view、conversation.session.header.actions、conversation.chat.assistant-actions)
分支丢失 reasoningEffort 等配置 provider/model/maxTokens 取自最后一条 request/header;reasoningEffort 与 adapterDefaults 随 seed 内继承的 header 原样传递
重放时 steering 插话丢失 回合内全部用户输入按序保留并重放
编辑助手回复伪造 source: {kind:'model'} 且丢工具链 不支持(诚实的能力边界,见下)
撤销导航后旧分支仍在后台空转 显示运行中分支并提供显式"停止"控制
preserve 一键重放 N 回合无确认 保存前展示成本提示与显式的级联选择
无测试、无 i18n node:test 套件 + P0 回归 + dsh-testkit 生命周期门禁;中英词典

使用

  • 编辑用户消息——打开 回合分支 标签页,选中一条消息,改好文本,选择
    后续回合策略并保存。插件会从已落定前缀创建新分支会话并重跑该回合。
  • 重试 / 重新生成——标签页内有逐回合按钮,助手消息上有逐条按钮,头部有
    针对最后一轮的重新生成按钮。
  • 版本树——标签页列出每个分支及其操作摘要(原文 "…" → 改为 "…"),
    标注当前版本,支持撤销/重做导航与打开任意分支。正在运行的分支会显示
    警告和"停止"控制。
  • 级联策略——截断 丢弃编辑回合之后的所有内容;保留 重放编辑后的回合
    及其后所有回合(每个重放输入成为独立回合,原同一回合内的输入保持顺序)。
    编辑器会在确认前显示 保留 将重放多少个回合。

设计说明

  • fork 语义。 官方 session.fork(atSeq) RPC 的切割包含锚定回合,无法
    表达"编辑第 N 回合并重跑它"。因此本插件使用官方 fork 内部所用的同一事务缝
    ——ctx.agents.create——在目标回合之前切割 seed,写入官方血缘 meta
    (parentSession、seedLength、cwd、agentPreset),重挂载源会话的
    preset,并在分支发布前完成持久化 flush。
  • 工作区。 分支继承源会话的工作区挂载,语义与官方 fork 完全一致(重新
    attach,不做文件系统快照)。重跑会改写文件的任务时,工作树会停留在新分支
    的状态;需要工作区状态回滚请配合快照类插件(如 dsh-checkpoint-rewind)。
  • 分支删除 / GC。 平台目前没有会话删除 API,分支尚无法回收;版本树即对
    该谱系的如实披露。
  • 从 dsh-message-edit 迁移。 坏格式写出的日志被持久层本身拒绝读取,
    任何读取方(包括本插件)都无法就地修复。Timeline 会检测这一拒绝并明确
    报错。升级前请先用官方导出流程留存旧会话,或等待 upstream 修复。

HTTP 信任围栏

宿主路由 /turn-fork 挂在 dsh web server 上,后者本身不做任何来源检查。
每个请求都必须通过插件围栏:浏览器 Origin 必须是
http(s)://localhost|127.0.0.1|[::1] 且端口与服务器监听端口一致(仅当服务器
监听 0.0.0.0、即运维显式选择对外暴露时放宽);无 Origin 的请求必须携带
回环 Host。POST 请求体必须是 application/json 且不超过 64 KiB。

开发

npm install
npm run build      # tsc 类型检查 + tsdown 宿主/客户端打包
npm test           # 构建 + node:test(core、lineage、P0 持久化回归)

测试

  • tests/p0-persistence.test.mjs —— P0 回归:用本插件真实的 fork seed 构建
    路径,经真实 dsh-session 存储与 dsh-session-persistence-jsonl 后端写盘,
    再由全新子进程冷读(即"重启")。阴性对照证明:去掉标记的同一份日志会被
    守卫拒绝。
  • tests/core.test.mjs —— steering 保真、计划边界、seed 构造、模型配置推导、
    信任围栏矩阵、body 上限、操作解码。
  • tests/lineage.test.mjs —— 版本投影、撤销/重做栈、运行中标记。
  • dsh-testkit.yaml —— 真实宿主生命周期门禁(安装 → 启动 → 注册 → 卸载 →
    重启 → 残留检查),基于社区 dsh-testkit,
    并生成 .github/workflows/dsh-lifecycle.yml CI 工作流。

Testkit 说明

dsh-test --suite full 在 --runner local 下会报告 flaky:每次尝试的所有
阶段都以完全一致的断言通过,但重复性摘要包含按尝试隔离的绝对路径与时间戳,
它们天然互不相同(默认的 Docker runner 下运行根路径稳定,不受影响)。quick
套件是此处的权威生命周期门禁;CI 工作流在 Docker 下运行它。

许可证

MIT。scripts/dsh-client-preset.ts 中的客户端打包预设来自 DeepSeek Harness
仓库(MIT, © DeepSeek)。

常见问题

9 问
答案由本站依据条目字段整理,不引用上游原文
dsh-turn-fork 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add dsh-turn-fork@0.1.4` 即可。对应的 npm 包名是 `dsh-turn-fork`。

dsh-turn-fork 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-turn-fork 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-turn-fork 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-turn-fork 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.1.7-rc.2、0.1.7-rc.1、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2、0.1.3-alpha.2。版本较多,只列出前 8 个。

dsh-turn-fork 需要什么运行环境?

Node.js >=22。环境不满足时安装会失败,建议先确认本机版本。

dsh-turn-fork 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-turn-fork 有哪些功能?

编辑消息并重跑、重试与重生成、版本树导航、重启后日志保留、双语界面。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

记忆与知识
按星标排序,可作替代方案

ruflo

ruflo

L3 · 安装规范通过 7.4 万 星

OpenViking

OpenViking

面向 DeepSeek Harness 的 OpenViking 记忆与上下文插件:pre-step 自动召回与画像注入、会话捕获、`vik

L3 · 安装规范通过 3.9 万 星

WeKnora

WeKnora

把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己

L4 · 沙盒安装通过 3.3 万 星

distilly

distilly

Distilly — Distill how they think into reusable Skills for any Agent o

L4 · 沙盒安装通过 2.5 万 星

EverOS

EverOS

L4 · 沙盒安装通过 1.3 万 星

MemOS

MemOS

L4 · 沙盒安装通过 1.2 万 星

ruby1304 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。