DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Session Tree Extension — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
S

dsh-session-tree-extension

Session Tree Extension

用于 dsh-session-tree 插件包的开发工作区(未发布)

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:robiteame/dsh-session-tree-extension#cee5773721b43838799fa6dcae124d1ec9e0b9c4
README兼容性版本
Session tree panel, light themeSession tree panel, dark themeInline fork branch menu

兼容性与来源证明

Session Tree Extension 以 dsh-session-tree-extension 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/7

版本

0.1.0stable
2026/9/7

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 20
周下载
0
最近提交
2026/9/14
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-session-tree

Append-only, multi-branch conversation trees for DeepSeek-Harness — a PI-Agent-style SessionTree. The agent's history becomes a tree of immutable nodes, forkable at any historical node, with standard LLM message reconstruction, versioned JSON snapshots, and a WebUI tree panel.

Published as four npm packages under the @robiteame scope:

PackageRole
@robiteame/dsh-session-treeCarrier Bundle: one install mounts everything below through its composition layer
@robiteame/dsh-pi-agent-session-treeHost domain service: SessionTree/SessionTreeStore, JSON snapshots, the sessionTree Remote (list/jump/fork/session)
@robiteame/dsh-tool-session-treeModel-facing surface: the session_tree tool, /tree /fork /clone /session commands, system-prompt section
@robiteame/dsh-client-ui-session-treeWebUI tree panel: additive right-side overlay on official builds, native details dock on patched builds

Install (users)

One command — from the plugin market UI, or from a Harness checkout's CLI:

dsh plugin --profile <profile> add @robiteame/dsh-session-tree

Prebuilt tarballs install the same way and need no build scripts:

dsh plugin --profile <profile> add robiteame-dsh-session-tree-0.1.0.tgz

After installing, restart the profile. The composition gains three rows (pi-agent-session-tree, tool-session-tree, ui-session-tree) that load the Host service, the tool and commands, and the browser panel. Type /tree in the composer to open the panel; click a node to bind it as the active context, then /fork [branch] and /clone operate on that selection. /session reports tree status (nodes/messages/branches/tokens/cost) and the active surface mode.

Verify the composed layer:

dsh --profile <profile> --dump-config   # should list the three session-tree rows

Requires DeepSeek-Harness 0.1.2-alpha.3 (or a compatible 0.1.2 build) and Cordis ^4.0.2; the target installation provides those peers. No install scripts run — the tarballs ship prebuilt lib/ artifacts.

Branch switching and graceful degradation

The plugin never modifies Harness core files. It capability-detects the optional branch-selection engine API at runtime:

  • Native mode — on a checkout carrying dev/session-branch-surface.patch (Session.selectMessageSurface()), jump/fork switch the model-visible history directly: the next turn genuinely starts from the new branch.
  • Stock mode — on an unmodified official Harness, the plugin emulates the switch through official append APIs (an empty replace surface event) plus a plugin-owned sidecar under $DSH_HOME/storages/session-tree/ for durable branch state. The log stays resume-valid.
  • Projection mode — if even the emulation is unavailable, navigation moves the tree projection and panel only, and the next turn keeps the canonical history.

Every mode is honest about itself: session_tree's context/session operations and /tree outputs carry a surface field (native, stock, or projection), and the Host log prints a one-time notice when a session runs in a non-native mode. Move the raw session.jsonl.zstd between machines together with the matching sidecar file, or carry the projection explicitly with /tree snapshot save/load.

Semantics

  • Append-only — every node is immutable; branching and jumping only move the cursor. Old branches are never edited or deleted.
  • Every entry is a node — messages, tool calls, model switches, compaction records, branch summaries, and custom entries all become typed nodes (message, tool_call, model_change, compaction, branch_summary, custom; tool_result survives only for orphan results with no matching call); each has a unique nodeId and a parentId (root is null). A node may have multiple children — that is the fork.
  • One entry per tool interaction — a tool/call and its tool/result fold into a single tool_call node whose content carries both the call part and the result part (isError plus the node's error mark failures), whether the pair arrives in one event batch or across sync batches. Legacy snapshots with split pairs fold on restore.
  • Cursor navigation — jump(nodeId) moves the active leaf to a historical node; the next append grows a new branch from there. Sibling branches stay intact. The durable Harness Session log remains the source of truth.
  • LLM context — context returns the standard messages array for the root→cursor path only.
  • Compaction — surface replacement is recorded as an immutable compaction node instead of pretending the shadowed messages were deleted.
  • Snapshots — snapshot.save/snapshot.load round-trip the whole tree as versioned JSON (version: 1).
  • Multiple trees — one independent tree per agent session.
  • Errors — every operation answers {ok: true, value} or {ok: false, error: {code, message}}.

Development (contributors)

The repository is a pnpm workspace building the three implementation packages standalone (no Harness checkout needed):

pnpm install
pnpm verify      # build + typecheck (host & client) + pack dry-run + vitest
pnpm pack:all    # produce the four tarballs

Tests run against the published Harness packages (0.1.2-alpha.3) — the stock-mode paths — with vitest from the repository root. The browser spec in packages/client/ui-session-tree needs the Harness client test runtime and runs inside a source-integrated checkout.

Source integration against a Harness checkout

For debugging against Harness source (native mode, native details dock):

dev/install.sh /path/to/deepseek-harness     # applies both dev patches + copies packages
cd /path/to/deepseek-harness && pnpm install && pnpm run build

See dev/README.md for what each patch does. This flow is for contributors only — user installs never touch a Harness checkout.

License

MIT.