DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Cross Session — DeepSeek Harness 插件(DSH Plugin)
← Plugins
C

dsh-cross-session

Cross Session

DeepSeek Harness 的跨会话工具:在一次对话中列出、读取其他会话并向其发送消息。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:MrHuangJser/dsh-cross-session#34a2f7d6c4dbe9ec2ed290a2fa20fb8758c9dec5
README兼容性版本

兼容性与来源证明

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

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

版本

0.1.0stable
2026/9/20

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rIm@xmanrui/dsh-im将十一种 IM 渠道和一个公网 AI Office 接入本地 DeepSeek Harness。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理

README

dsh-cross-session

Let one DeepSeek Harness session list, read, and message another session.

One conversation can now discover its peers, read a bounded window of what a peer is actually discussing, and hand work to it — without the user relaying messages by hand and without spawning a subagent.

you ▸ what is the other session doing?
bot ▸ sessions_list({})                       → 3 sessions, ids + titles + live state
bot ▸ sessions_read({ session_id: "session-e218…" })
    → title: Fix the newapi reasoning-effort config
      --- user (seq 407, user) ---
      the reasoning selector is empty for every model
      --- assistant (seq 396, model:opencode-go-deepseek/deepseek-flash) ---
      fixed. root cause: reasoningEfforts was never declared per model entry…
bot ▸ sessions_send({ session_id: "session-4b91…", message: "apply the same fix to the zai rows" })
    → accepted for session-4b91… | mode=queue | chars=214
      The message is queued in that session's inbox.

What this is

The DeepSeek Harness already contains every primitive this needs. What it did not have is a model-facing surface for them: a session could only talk to the subagents it had spawned itself.

This package adds that surface — three tools, one settings card.

ToolWhat it doesBacked by
sessions_listDiscover peer sessions: id, title, workspace, live/cold, top-level/subagentctx.sessionQuery
sessions_readRead a bounded, text-only window of a peer's current conversationctx.sessionQuery.readSurface
sessions_sendDeliver a message into a peer's inbox, queue or steerctx.sessionController

Two properties are worth stating plainly, because they define the shape of the feature:

  • Reading is not transcript injection. sessions_read returns the peer's most recent user and assistant text, capped by count and by characters. It never returns tool output, never returns model reasoning, and hides harness-injected context (system reminders, memory snapshots) unless asked.
  • Sending is asynchronous. sessions_send returns when the target's inbox accepts the message, never when the target finishes thinking. A reply is another explicitly addressed message that you read later with sessions_read.

How this relates to Codex

Codex ships the same idea under the name multi-conversation "agent control" (landed in v0.79.0, 2026-01-07, release note: "a session can spawn or message other conversations programmatically"), exposed as the subagent/collab tools — spawn_agent, send_message, followup_task, wait_agent, interrupt_agent, list_agents.

The mechanisms agree on the parts that matter, and this package deliberately mirrors them:

BehaviourCodexdsh-cross-session
Peer identityThreadId, later path-style /root/task1/task_3durable session id (session-… / UUID)
Discoverylist_agents, live agents only, name + statussessions_list, full corpus, id + title + workspace + liveness
Readfinal message only; no tool returns a peer's historybounded window of the peer's current conversation
Sendasynchronous mailbox; send_message does not trigger a turn, followup_task wakesqueue (= queue) and steer (= insert into the running turn)
Waking a cold peerresume_agent / auto-reload from rolloutresolveAgent resumes, gated by allowResume
Reachsame agent tree onlyany top-level session in the corpus

The one substantive difference is reach. Codex's collab tools resolve names inside the calling agent's own thread tree, so they cannot address an unrelated conversation; followup_task explicitly refuses the root. This package addresses any top-level session by durable id, which is a strict superset — and it inherits one matching restriction from the harness: a subagent session is not addressable this way, because those belong to the agent that spawned them.

Full write-up with sources: docs/comparison-codex.md.


Install

The package is a Host-plane plugin: it must load in the harness process, next to sessionQuery and sessionController, so that every session gets the tools.

# from the repository root
pnpm install
pnpm run check          # format + lint + typecheck + test + build

# install into a profile (the CLI reconciles dsh.profile.bundles for you)
dsh plugin --profile web add /absolute/path/to/dsh-cross-session

Restart the profile, then confirm the tools are visible:

dsh plugin --profile web list

Open Settings → Plugins → Plugin configuration and you should see a dsh-cross-session card. If the card is missing but the tools work, the browser half did not load — see Troubleshooting.

Manual mount instead of the CLI

If you would rather not let the CLI touch dsh.profile.bundles, add the package to the profile's dependencies and insert the row yourself in the profile's cordis.patch.yml:

- insert:
    - id: cross-session
      name: 'dsh-cross-session'

Configuration

Every setting lives in the settings namespace cross-session and is editable from the GUI card. The composition row's config is the base layer; the settings document overrides it field by field.

SettingDefaultWhat it controls
enabledtrueRegister the tools at all
defaultSendModequeueMode used when sessions_send omits mode
allowResumetrueWhether a send may wake a cold session
frameMessagestruePrefix delivered messages with the sending session's identity
includeInjectedByDefaultfalseInclude harness-injected context in reads
maxListResults25Cap on rows sessions_list returns (1–200)
maxReadMessages12Cap on messages sessions_read returns (1–100)
maxMessageChars1200Per-message budget before a read truncates (100–20000)
maxSendChars4000Cap on a delivered body (100–40000)

allowResume: false is the read-only deployment: sessions_send refuses a cold target before resolving it, so nothing is ever woken. Details and the raw settings-document shape: docs/configuration.md.


Documentation

DocumentContents
docs/architecture.mdPlanes, lifecycle, data flow, why each decision was made
docs/tools.mdExact tool schemas, argument semantics, refusal codes
docs/configuration.mdEvery setting, its bounds, and how it reaches the GUI
docs/comparison-codex.mdThe Codex feature, mechanism by mechanism, with sources
docs/development.mdToolchain, scripts, testing strategy, how to add a tool
docs/troubleshooting.mdFailure modes and what each one means

Development

pnpm run build         # tsdown → lib/index.js (host) + lib/client.js (browser)
pnpm run typecheck     # tsc --noEmit, strict + noUncheckedIndexedAccess + exactOptionalPropertyTypes
pnpm run lint          # eslint, typescript-eslint strictTypeChecked
pnpm run format        # prettier, 2-space
pnpm run test          # node --test (Node's own runner, native TypeScript stripping)
pnpm run check         # all of the above, in CI order

Requires Node ≥ 20.11. No runtime dependencies: the plugin binds to the harness's own services and declares its SDK surface locally (src/types/platform.d.ts).


Compatibility

Verified against the harness runtime that ships as @deepseek-ai/dsh@0.1.5-rc.2. The Host services this package consumes are stable product contracts, but the harness is pre-1.0: check docs/troubleshooting.md before assuming a failure is this package's fault, and check the service list with a Cordis Inspect query (Service.listService) when a signature looks different.

License

MIT — see LICENSE.