dsh-conductor

DSH PLUGIN记忆与知识

仓库 lucagiftzek/dsh-conductor · npm @lucagiftzek/dsh-conductor

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

dsh-conductor 是 DeepSeek Harness 的上下文管理插件:在同一会话内用模型交接刷新上下文、回退到任意提示词、自动压缩并支持失败恢复,全部集中在一个侧边栏标签页。

一句话选型结论

按资料字段整理

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

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

安装

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

    兼容的 DSH 版本为 0.2.2-rc.1,Node.js 要求 >=22.5;版本不匹配时安装会报错。

  2. 2
    执行安装命令

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

  3. 3
    确认已挂载

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

  4. 4
    试跑并检查权限

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

兼容 DSH 版本0.2.2-rc.1版本不匹配时安装会报错
Node.js 要求>=22.5来自仓库 package.json 的 engines 字段
前置依赖react@^18.2.0需要同时安装的同级依赖
npm 包名@lucagiftzek/dsh-conductor可用 npm view 查看包信息

能做什么

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

dsh-conductor:DeepSeek Harness 的长会话上下文管理插件

  • 同会话内 /new 刷新上下文
  • 回退到任意提示词与文件
  • 自动压缩与 /drop 精简
  • 固定消息跨重置保留
  • 多会话编排与幽灵消息

适用场景

记忆存储

上游标签

ai-agentscheckpointscompactioncontext-managementdeepseek-harnessdshdsh-better-sidebardsh-plugin

验证等级与安全审查

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

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

逐项检查结果

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 插件清单中已激活 方式:插件清单查询

风险详情

  • 结论说明 静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。
  • 风险计数 严重 0 / 高 0 / 中 1

选择建议

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

值得选的地方

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

先想清楚的地方

  • 需要同时装好同级依赖,漏装会启动失败。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

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

不太适合

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

同类对比

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

仓库档案

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

README 全文

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

dsh-conductor

Fresh context in the same chat, rewind to any prompt (chat and files), automatic compaction at your level and recovery after failed turns, all in one sidebar tab.

dsh plugin --profile web add dsh-better-sidebar   # the tab host, skip if installed (on DSH 0.2.1: dsh-better-sidebar@0.28.2)
dsh plugin --profile web add @lucagiftzek/dsh-conductor
# or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-conductor
# restart dsh web, then open the Conductor tab from the sidebar's + menu

Screenshot from a demo DSH instance with sample data.

Keep long DeepSeek Harness chats cheap and under control. /new gives a chat a fresh context in place: the model writes a handoff from the full conversation, and that handoff becomes the whole history. Same chat, same title, same pin, same position in the sidebar, same id for every script that talks to it. Nothing is lost: the full transcript stays visible above and is archived as Markdown.

Around that: /clear, /drop single items out of the context, pins that survive every reset, message versions shown right in the chat, "ghosts" (silent messages between chats that never wake the receiver, shown in the chat with a Ghost label), and multi-chat orchestration (agents, tasks, runners). One plugin, one sidebar tab with five sub-tabs, three model tools.

Ghosts and a v2 answer in the chat /new in progress (Cancel keeps the context) History: resets and edits with a diff
Rewind: chat and files, with a preview of what comes back Automation: level, scheduled /new, relay, template, recovery

Why

Every request a chat sends carries its whole surviving history. A coordinator chat that has run for a week sends hundreds of thousands of tokens per step, most of it stale tool output. Compaction helps but keeps piling summaries on summaries; starting a new chat loses the chat's identity (scripts, pins, title, the place in the sidebar) and its accumulated context.

/new measured in the test lab: the first request after /new is the size of a brand new chat's first request plus the handoff (within 2K tokens), while the chat keeps its id, title and pins. The only fixed cost left is what every chat pays anyway: system prompt, workspace instructions and tool definitions.

Features

What it does How
/new [focus] Fresh context in the same chat from a model-written handoff A compaction whose summary is the handoff. One model call over the full context (reuses the provider cache); the handoff is also saved as a file
/clear Empty the model context, keep the chat A compaction with a short placeholder; no model call
/force-compact [--pointer] [focus] Compact even past the model window (from dsh-force-compact) Map-reduce summary in parts that fit, or a mechanical checkpoint with no model call
/context What fills the context, largest items first Reads the live surface and the token meter
/drop ..., /undrop Take tool outputs, messages or whole steps out of the context, put them back Surface replacements that cite the originals; the transcript and a saved file keep them
/pin, /unpin, star button Keep a message verbatim across every /new, /clear and compaction Side store; pins are re-added to every checkpoint
Versions Edit a message or an answer (you or the model); the chat shows the current text with a "v2" marker, every version is kept with a diff Surface replacement plus a version list; the chat renders through its own message renderer
Ghosts: /post, dsh-post, chats post Silent message into another chat: shown there as a message with a Ghost label, read by its model on the next turn, never wakes it Appended notice the chat renders as a message; script API with a secret
/checkpoint, /rewind Go back to any earlier prompt: the conversation, the files the agent edited, or both; or continue from there in a new chat A checkpoint per prompt; pre-images of the agent's file edits in Conductor's own store (your git is never touched); the rewound part is archived
Automatic level (/auto level) The chat compacts, or hands off to a fresh context, by itself at the percentage of the model window you choose, after one heads-up to the model Wraps the engine's pressure check with a per-chat threshold
Scheduled /new (/auto new) A fresh context every day at a set time or every N turns Runs when the chat is idle
Recovery (/recovery) Resumes by itself after rate limits, provider errors, cut-off answers and restarts; stops at once on quota or credential errors Reads how each turn ended, after DSH's own retries; replaces dsh-continue
Relay (/relay) Every final answer of this chat arrives in a coordinator chat as a ghost No scripts needed for worker reports
/recall Search this chat's earlier epochs (archives, dropped items, handoffs) Keyword ranking over line windows, no model, no index
Handoff template Your own handoff sections, for all chats or one Replaces the eight default sections
Orchestration Agents (spawn, prompt, fork, cancel), tasks (command, scrape, http, agent), runners, provider cards From dsh-orchestrator, see docs/ORCHESTRATION.md
Conductor tab Context meter, then sub-tabs Context, Pins, Inbox, History, Agents Better Sidebar tab

Install

Requires DSH 0.2.1-rc.5 or newer, the web profile and dsh-better-sidebar (pin 0.28.2 on DSH 0.2.1; its latest needs DSH 0.2.2).

cd ~/.dsh && dsh plugin --profile web add dsh-better-sidebar && dsh plugin --profile web add @lucagiftzek/dsh-conductor
# on DSH 0.2.1 pin the sidebar: dsh plugin --profile web add dsh-better-sidebar@0.28.2 (its latest needs DSH 0.2.2)
# or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-conductor
# restart dsh web

A brand new npm release is picked up by dsh plugin add about a day after it is published (pnpm's minimum release age); the GitHub line works at once.

From a checkout: add "@lucagiftzek/dsh-conductor": "link:/path/to/dsh-conductor" to ~/.dsh/profiles/web/package.json dependencies, append @lucagiftzek/dsh-conductor to dsh.profile.bundles, run pnpm install there and restart.

First run. On a fresh install the Conductor tab opens with a one-minute setup guide (what the assistant may do on its own, ghosts and the script secret, agents and tasks). "Use defaults" skips it; it can be run again from the tab's "..." menu or Settings. An agent that installs and configures the plugin for you can skip the guide by writing setupCompleted: "" into the dsh-conductor row (the migration below does this).

Coming from dsh-orchestrator, dsh-force-compact or dsh-continue? Their features are inside dsh-conductor. Install it as above, then run the migration (dry run first) and restart:

M=~/.dsh/profiles/web/node_modules/@lucagiftzek/dsh-conductor/scripts/migrate-profile.mjs
node $M                                          # shows what changes
node $M --apply                                  # backs up, then edits package.json and cordis.patch.yml
cd ~/.dsh/profiles/web && pnpm install           # then restart dsh web

It removes the old plugins, carries the orchestrator's runners, providers and trusted hosts and dsh-continue's resume text over, keeps shell tasks on if you used runners, keeps the old orch_* tool names (tools.legacy) and the old /dsh-orchestrator/api route (legacyRoute) so existing prompts and scripts keep working. Archives stay in ~/.dsh/compact-archive. Roll back by copying the two *.bak-conductor-* files back.

Using it

The Conductor tab

Open it from the sidebar's + menu (or type /conductor, /pins, /inbox, /versions). The header is one line: "12K of 200K 6%" over a thin bar (click the numbers for the breakdown by category), the New context button (/new) and a "..." menu with Clear (asks once, because it has no undo), Compact and Refresh. While a reset runs, the header shows its elapsed time and a Cancel button that leaves the context untouched; afterwards, View handoff and View archive open the files in the sidebar.

Below, one sub-tab at a time (the last one is remembered per chat):

Sub-tab Shows
Context the 8 biggest items with a Drop button each; "Show all items" or "Select several" opens the full inspector
Pins pinned messages, their size, notes, unpin
Inbox ghosts received, unread first, Mark all read, Add to context, Post to another chat
History one timeline of resets (tokens before and after), edits (versions, diff, Restore) and other activity
Agents what is running now; all agents, tasks, runners and providers behind two links

Reversible actions (drop, unpin, mark read, dismiss) show a toast with Undo for 10 seconds (Ctrl/Cmd+Z works too). The tab polls only while it is visible.

/new

Type /new (optionally with what matters: /new focus on the migration). The chat shows a command row while the handoff is written (usually under a minute), then:

Fresh context from a handoff: 212K to 9K tokens. 2 pin(s) kept.
Handoff: ~/.dsh/dsh-conductor/handoffs//.md
Archive: ~/.dsh/compact-archive//.md

Keep typing in the same box. The model now sees: the system prompt, the workspace instructions, the handoff, your pins and a pointer to the archive it can search when it needs an old detail. The handoff has fixed sections: role and standing orders, goal and state, decisions, open items (your latest requests quoted), files and commands, running work, gotchas, next step.

There is no undo, by design: nothing is destroyed. The transcript stays visible above the divider and verbatim in the archive.

/clear

Empties the model context without a summary (no model call). Pins are kept. Use /new when the work should carry on, /clear when it should not.

/drop and /context

/context                     what fills the context, with the numbers /drop uses
/drop last 3                 the 3 most recent tool outputs
/drop tool browser_snapshot keep 1
/drop file src/app.ts        tool outputs whose call mentions it
/drop larger 10K             every tool output above 10K tokens
/drop 41 57                  exact items
/undrop                      put the last one back (/undrop all, /undrop )

Bare /drop opens the Conductor tab on the Context inspector: tick items, the footer shows what you save, one click drops them. A dropped item leaves a one-line placeholder for the model, so it knows something was there, and the original is saved to a file it can read if needed. An assistant step is dropped together with its tool results. DSH's log format only accepts a rewritten tool output inside a turn, so tool outputs dropped while the chat is idle leave the context at the start of your next message (the inspector marks them as pending); messages and steps leave at once.

Pins

/pin pins the last answer, /pin user your last message, the star in an answer's action row toggles it. Pins are kept verbatim through every /new, /clear and compaction (up to 50 per chat; each shows its token cost). The model can pin too, and cannot remove your pins.

Versions

Open a message in the Context sub-tab and choose Edit (or the model edits its own final answer through the chat tool). The chat shows the new text in place with a small "v2" marker (click it for the versions and Restore), and the model sees the new text from its next step, marked as edited. Every version is kept with a word diff in History. User messages keep their role; an edited assistant answer is shown to the model as a quoted correction, because DSH's log never accepts a rewritten assistant message.

Ghosts: silent messages between chats

/post "Coordinator" the nightly import finished: 1,204 rows

The target chat shows it as a message with a Ghost label (and Report or Alert), lists it in the Inbox sub-tab with an unread count, and its model reads it on its next turn. It is not woken, so a coordinator chat does not pay a full-context turn for every worker report. From scripts and cron:

export DSH_CONDUCTOR_SECRET_FILE=~/.dsh/dsh-conductor/api-secret   # set the secret in Settings first
scripts/dsh-post --kind report --from "nightly import" "Coordinator" "done: 1,204 rows"

Raw API: POST /dsh-conductor/api/remote/post with header x-conductor-secret and body { "to", "text", "from", "kind": "report|alert|note", "visible": "user+model|user" }.

Checkpoints and rewind

A checkpoint is made at the start of every prompt; /checkpoint marks one by hand (the model can too, before something risky). /rewind lists them, newest first.

/rewind 1              back to before the last prompt: conversation and files
/rewind "before migration" --files    only the files
/rewind 3 --chat       only the conversation
/rewind 3 --branch     continue from there in a new chat; this one stays as it is
/rewind undo           put back the files the last rewind restored
  • Conversation: everything after the checkpoint leaves the model's context (archived first); the chat window keeps the old messages and shows a "Rewound" divider. This part cannot be undone in place, but the archive keeps the text and --branch works on any checkpoint. If a reset or compaction has since merged that point into a summary, an exact in-place rewind is impossible and Conductor says so; --branch still works.
  • Files: before the agent's file tools change a file for the first time in a turn, its content is copied into Conductor's own store. A rewind puts every such file back and removes files created after the checkpoint. A file someone changed after the agent's last edit is a conflict and is skipped unless you add --force. The current content is saved first, so /rewind undo reverses a file restore. Changes made by shell commands, scripts or other programs are not tracked (as in Claude Code); use git for those.
  • Up to 100 checkpoints per chat; older file copies are removed with them. Files over 2 MB, symbolic links and hard links are not copied.

Automation: level, scheduled /new, relay

/auto                      what is active in this chat
/auto level 50             compact by itself at 50% of the model window
/auto level 50 handoff     at 50%, hand off to a fresh context instead (like /new, automatically)
/auto level default        back to the global level (Settings); DSH's own default is about 80%
/auto pause | resume       stop or restart the automatic level for this chat
/auto new daily 03:00      a fresh context every night (only when the chat is idle)
/auto new turns 40         a fresh context every 40 turns
/relay "Coordinator"       every final answer of this chat arrives there as a ghost; /relay off stops

Shortly before the level (at 85% of it) the model gets one short heads-up to read less and finish cleanly. The level applies to automatic compaction during a turn; DSH's own recovery when a request overflows the window is unchanged.

Recovery

When a turn ends badly, Conductor carries on by itself, after DSH's own quick retries have given up:

What happened What Recovery does
Rate limit, provider error, connection problem Resumes after the provider's Retry-After, or with growing waits (2 s, 4 s, 8 s, ... up to a minute), at most 5 times in a row and 20 times an hour
Quota or balance exhausted, credentials rejected, invalid request Stops at once and leaves a ghost in the chat (and in the coordinator it relays to)
The context overflowed and DSH could not recover Hands off to a fresh context (/new), then continues
The answer was cut off at the output limit Asks the model to continue exactly where it stopped
dsh-web restarted or crashed during a turn When the chat is loaded again (chats active in the last 20 minutes are loaded at start), continues and names tools whose outcome is unknown

An optional fallback model (Settings, Recovery) takes over after a number of failures, for that chat only, and the chat goes back to its own model after a good turn. /recovery off lets failed turns wait for you in one chat. Recovery stays off while @weibaohui/dsh-continue is still installed, so the two never both send "continue".

Searching earlier context

/recall deploy key (or "exact phrase") searches this chat's earlier epochs: the archive of every /new, /clear, compaction and rewind, dropped items and handoffs, and shows the best passages with file and line. The model has the same search (chat tool, action recall) and is told to use it instead of reading archive files.

Handoff template

The handoff has eight sections by default. Settings, Conductor, Handoff template replaces them for every chat; the Automation panel (or POST .../template) sets one for a single chat, for example with "Customers" and "Deploy state" sections.

Model tools

Three tools instead of sixteen, because every tool definition is paid on every request (about 1.8K tokens for all three; the 14 old orch_* tools alone were about 2.2K):

Tool Actions
chat this chat: context, drop, undrop, pin, unpin, pins, edit, versions, new, compact, clear, inbox, mark_read, recall, relay, checkpoint
chats other chats: list, status, prompt (wakes), post (silent), spawn, fork, cancel
tasks overview, create (command, scrape, http, agent), list, status, output, cancel, runners, providers

Changes the model asks for during its own turn are applied before its next step, never inside a tool call; new, compact and clear run when the turn ends. What the model may do is set in Settings, Conductor, "The model may" (default: everything except clear). Every model action is written to the chat's Activity log.

How it works

  • In place, through core compaction. /new, /clear and /force-compact call the chat's own /compact. DSH's compaction engine keeps the locking, the events and the surface replacement; Conductor only decides what the checkpoint says, through the engine's documented summarize() hook. Manual compaction replaces everything except the system prompt and the last answer, and DSH re-adds the workspace instructions and runtime context on the next request (verified in the lab).
  • Checkpoints use DSH's file hooks. The agent's file tools announce every write and edit through DSH's file service; Conductor copies the file just before the first change in each turn. A rewind of the conversation is the same kind of replacement as a drop, over everything after the checkpoint.
  • Nothing is deleted. DSH keeps an append-only log. Every change is a replace event that shadows earlier nodes and cites them. The chat transcript keeps showing the originals; archives and saved files keep them verbatim.
  • Side store. Pins, versions, inbox, epochs, drops and activity live in one JSON file per chat (/sessions/.json, mode 0600), never in the session log, so removing the plugin never makes a chat unloadable.
  • Log format rules found and enforced: a rewritten tool output must sit inside a turn; an assistant message cannot be a replacement; the system prompt is never touched; nothing changes while a compaction is open; every change keeps tool calls paired with their results.

Settings

Settings, Conductor (or the dsh-conductor row of the profile's cordis.patch.yml):

Key Default Meaning
modules all on context (/new, /clear, /drop, /force-compact), pins, posts, versions, orchestration
tools chat, chats, tasks on, legacy off which model tools exist; legacy adds the 14 orch_* names
modelMay all on except clear what the model may do: drop, edit, pin, new, compact, clear, post, prompt, spawn, cancel
handoffDir /handoffs where handoff files go
posts.maxChars, posts.chatRow 8000, off longer posts are saved to a file and linked; chatRow adds a command row in the target for clients without the Conductor UI (the web UI shows ghosts as messages)
resetTimeoutMs 15 min cap for one /new
tasks.allowCommandTasks, tasks.allowRemoteRunners off shell tasks and ssh/http runners are opt-in
compact engine defaults archiveDir, archiveEveryCompaction, overflowFallback, chunk sizes (row config, applied at start)
legacyRoute off also serve the API under /dsh-orchestrator/api
setupCompleted empty when the first-run guide was finished; empty shows the guide in the Conductor tab
autoCompact { percent: 0, action: compact, nudge: true } the automatic level for every chat: percent of the model window (0 = DSH default, about 80%), compact or handoff, and the heads-up before it
recovery on enabled, maxAttempts 5, baseDelayMs 2000, maxDelayMs 60000, hourlyCap 20, continueTruncated, overflow (handoff or stop), resumeCrashed, crashWindowMinutes 20, fallbackProvider, fallbackModel, fallbackAfter 3, resumeText
handoffTemplate empty your handoff sections for every chat (empty = the eight default sections)
stateDir ~/.dsh/dsh-conductor side store, handoffs, saved posts, task history

The orchestration settings (runners, providers, limits, the machine secret) are described in docs/ORCHESTRATION.md.

Files

Path What
~/.dsh/compact-archive//.md verbatim transcript of every replaced span (every /new, /clear, compaction)
~/.dsh/compact-archive//drops/ originals of dropped items
/handoffs//.md handoff documents
/sessions/.json pins, versions, inbox, epochs, drops, checkpoints, automation, activity
/checkpoints// copies of files before the agent changed them (content addressed) and one manifest per turn

All 0600 in 0700 directories. Archives can contain anything that passed through the chat, including tool output: keep them private. They are not pruned automatically.

Security

  • Browser routes: loopback peer, trusted Host, same-origin, JSON content type, x-requested-with: dsh-conductor and the harness session cookie on every mutation. No GET mutates.
  • Machine routes (/remote/*): secret only (x-conductor-secret or Authorization: Bearer), constant-time compare, rate limited, fail closed without a configured secret.
  • Shell tasks and remote runners are off until you enable them. The model cannot clear a chat or remove your pins unless you allow it.
  • Known limit: if DSH's session-log upload to the official DeepSeek API is enabled, dropped originals are still part of the log it uploads.

Testing

npm test               # unit tests: engine modes, surface rules, store, commands, tools, orchestration, settings, client
test/lab/setup.sh      # once: create the lab, a separate DSH home (~/dsh-lab) that never touches ~/.dsh
npm run lab start      # the lab on 127.0.0.1:3193 with a scripted mock model on 127.0.0.1:3194
npm run test:e2e       # end to end against the lab, including a restart and a reload check of every chat it touched

The end-to-end suite asserts on the real session log, the real surface and the exact requests the model receives. test/lab/demo.sh runs a separate demo instance with sample chats (the README screenshots come from it). See test/lab/.

Compatibility

Built and tested on DSH 0.2.1-rc.5 with dsh-better-sidebar 0.28.2. The plugin resolves every DSH package at run time and degrades with a clear warning when a seam is missing (no compaction engine: /new and /clear report it; no Better Sidebar: no tab, everything else works).

More plugins by the same author

All of them are open source and run on DeepSeek Harness 0.2.x.

Plugin What it does
dsh-artifacts An Artifacts tab that lists the files an agent produced and previews them in place, plus a template library agents can use and extend
dsh-mail Mail client and agent mail tools: IMAP, POP3, SMTP and OAuth2 accounts, scheduled and bulk sends with unsubscribe handling
dsh-note-keeper Obsidian-compatible Markdown notes in the sidebar with search, graph, audio notes and transcription, OCR and client-side encryption
dsh-phone SMS and calls (Twilio, SIP via Asterisk) with call audio through your own server, live voicemail and Telegram
dsh-voice Read-aloud, dictation and language-aware speech with 23 TTS and STT providers, per-language routing and word highlighting
dsh-orchestrator The earlier standalone agent and task orchestration plugin; dsh-conductor includes all of it
dsh-workspace-rail A workspace-first sidebar rail: pinned chats, projects as folders, live Recents, search and unread markers
DSH-Idle-Watchdog Idle-chat nudges and an authenticated HTTP API that posts a prompt into any chat
dsh-plugin-updates Update checker that only offers releases your running DSH core can load
dsh-subagent-tiering Subagents default to a cheaper sibling of the parent model unless the agent names a route
dsh-fs-reobserve Ends self-inflicted stale-file errors after an agent's own shell commands
dsh-request-image-cap Clamps every image sent to the model to a pixel cap, fixing many-image request errors
dsh-seal An encrypted channel in front of DSH: a Go reverse proxy plus a service worker that seal all DSH browser traffic

Built by Luca Tzekos, who also makes Job Opportunities API: employer-direct job data with per-field provenance you can verify yourself, free to read and available as an API. If this plugin is useful to you, a star on this repo or a look at jobopportunitiesapi.org is the best thanks.

License

MIT. Includes the code of dsh-orchestrator and dsh-force-compact (same author).

常见问题

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

在 DSH 里执行 `dsh plugin --profile web add @lucagiftzek/dsh-conductor` 即可。对应的 npm 包名是 `@lucagiftzek/dsh-conductor`。

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

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

dsh-conductor 安全吗?

低风险。静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。

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

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

dsh-conductor 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.2-rc.1。

dsh-conductor 需要什么运行环境?

Node.js >=22.5;需要同时安装 react@^18.2.0。环境不满足时安装会失败,建议先确认本机版本。

dsh-conductor 用的是什么许可证?

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

dsh-conductor 有哪些功能?

同会话内 /new 刷新上下文、回退到任意提示词与文件、自动压缩与 /drop 精简、固定消息跨重置保留、多会话编排与幽灵消息。

这条记录的数据可靠吗?

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

同名或近似条目

2 条
不同作者的仓库分开列,请确认你要装的是哪一个
记忆与知识
按星标排序,可作替代方案

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 万 星

lucagiftzek 的其它插件

6 个

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