dsh-intercom

DSH PLUGIN会话与消息

仓库 sqhao-o/dsh-intercom

会话与消息 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件

为 DeepSeek Harness 提供会话间通信能力:同一机器上的独立 DSH 会话可互相发现、命名并收发消息,支持 send 与 ask/reply 请求应答。

一句话选型结论

按资料字段整理

dsh-intercom 是会话与消息类的 DSH 可安装插件,未做沙盒验证,暂无安全审查结论,列出 5 项功能,没有现成安装命令,需要按仓库 README 接入。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-09-11 创建于 2026-08-16
README 14.0 KB 正文体量,越大说明说明书写得越细

安装

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

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

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

  3. 3
    确认已挂载

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

  4. 4
    试跑并检查权限

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

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

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

dsh-intercom:让 DeepSeek Harness 的多个会话互相通信

  • 跨会话收发消息
  • 会话发现与状态列表
  • 会话别名寻址
  • 请求应答 ask/reply
  • Web 设置面板

上游标签

ai-agentsdeepseekdeepseek-harnessdshdsh-pluginllm-agent

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

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

值得选的地方

  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 没有现成安装命令,要按仓库 README 手动接入。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-intercom当前 未做沙盒验证 未标注 0 未标注 无
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

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

README 全文

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

dsh-intercom

English | 中文 | 安装提示词



An intercom plugin for DeepSeek Harness (dsh): discovery, 1:1 messaging, and request/reply between independent dsh sessions running on the same machine.

Ported from pi-intercom (MIT, Copyright Nico Bailon) — see NOTICE.

Install with one prompt

No checkout, no build toolchain: paste one prompt into a running DSH session
and the agent installs the plugin from GitHub, verifies the profile, and walks
you through a two-session messaging check. See INSTALL.md
(中文) — or keep reading for the manual quickstart.

Features

  • Cross-session messaging — send (fire-and-forget, with mailbox queueing for
    temporarily disconnected named peers) and ask/reply (blocking request-reply)
    between sessions in one dsh process or across independent dsh processes.
  • Discovery — list / list-cwd show every live session on the machine with
    name, working directory, model, and live status (idle, thinking, tool:).
  • Session aliases — the name action gives a session a stable address; peers
    resolve aliases, full session ids, or unique id prefixes.
  • Inbound relay — messages arrive as a relay from the named sender: idle
    sessions start a new turn with it, busy sessions receive it as steering at the
    next step boundary.
  • Coordination skill — installing the plugin also registers a dsh-intercom
    skill (planner-worker playbooks, send-vs-ask guidance) with dsh's skill
    registry; no manual install step.
  • Web UI panel — in the web profile, an "Intercom" page in the Settings
    panel lists the live roster and can send a message as any session hosted by
    that dsh process.

How it works

Every dsh process hosting the plugin registers each of its agents with a
local broker process (auto-spawned as node lib/broker/broker.js from the
installed plugin, one socket — unix socket or Windows named pipe — per
$DSH_HOME/intercom). Sessions discover and message each other through the
broker; if the broker cannot start, same-process sessions still work through
a direct in-memory fallback (status reports which mode you are in).

Quickstart

Install into the web profile and restart dsh:

dsh plugin --profile web add github:Sqhao-O/dsh-intercom

lib/ build artifacts are committed, so the GitHub install runs no build
step. Then open two sessions and name them (the intercom tool is available
to every session):

intercom({ action: "name", alias: "planner" })    → in session 1
intercom({ action: "name", alias: "worker" })     → in session 2
intercom({ action: "list" })                      → see each other, from either
intercom({ action: "send", to: "worker", message: "hello from planner" })
intercom({ action: "ask", to: "planner", message: "what is the status?" })
intercom({ action: "reply", message: "all good" }) → planner answers the ask

Or hand dsh the whole acceptance scenario as one prompt:

> 安装 github:Sqhao-O/dsh-intercom 插件,重启后开两个 session(分别命名 planner 和 worker),从 planner 给 worker 发一条消息并确认送达。

Usage

Give each session a name, then talk to it from any other session:

intercom({ action: "name", alias: "worker" })                  → name this session
intercom({ action: "list" })                                   → list live sessions (all processes)
intercom({ action: "list-cwd" })                               → list sessions in this working directory
intercom({ action: "list-cwd", cwd: "/path" })                 → list sessions in a specific directory
intercom({ action: "send", to: "worker", message: "..." })     → send a message (queued if the named peer is offline)
intercom({ action: "ask", to: "worker", message: "..." })      → send and block until the reply arrives
intercom({ action: "reply", message: "..." })                  → reply to the current / single pending ask
intercom({ action: "reply", to: "planner", message: "..." })   → disambiguate between multiple pending asks
intercom({ action: "pending" })                                → list unresolved inbound asks
intercom({ action: "cancel", messageId: "..." })               → request cancellation of a message you sent
intercom({ action: "status" })                                 → plugin/transport status

Address sessions by alias, full session id, or the unique id prefix shown in
parentheses by list. send/ask also accept replyTo, messageId,
supersedes, retryOf, and a cwd scope (omit to to target the sole live
peer in a directory). ask never queues: a disconnected target fails
immediately, while send to a recently disconnected named session queues
in the broker mailbox and is delivered when a session with the same alias and
working directory reconnects. DSH_INTERCOM_ASK_TIMEOUT_MS overrides the
10-minute default ask timeout.

Web UI panel

In the web profile, open the Settings panel → Intercom. The page lists
the live roster (auto-refreshing) with name, status, and directory, plus a
send box. The send box never invents an identity: you pick a sender among the
sessions hosted by that dsh process, and the message rides that session's own
broker connection — the receiver sees the real session as the sender.

The panel is served by two plugin routes on the dsh web server
(GET /intercom/roster, POST /intercom/send). Like the broker socket, they
trust the local machine: any local process can read the roster and send as a
host-local session while dsh web runs.

Configuration

Optional $DSH_HOME/intercom/config.json — full reference (every key is
optional; unknown keys are ignored):

Key Type Default Meaning
enabled boolean true When false the plugin loads but never spawns or connects to the broker; every tool action except status answers with a clear disabled message.
inboundTrigger "always" \| "replies" \| "never" "always" Whether an inbound broker message may wake the session into a new model turn: "always" wakes on every message, "replies" only wakes on replies to messages this session sent, "never" only queues messages as context (no turn is triggered).
replyHint boolean true Append the intercom({ action: "reply" ... }) hint to inbound messages that expect a reply.
status string — Custom suffix appended to the automatic idle/thinking presence status shown to peers (e.g. "idle · on-call").
confirmSend boolean false Accepted for pi-intercom config compatibility but a no-op: dsh's host-level tool-approval flow is the equivalent confirmation gate, so the plugin never opens its own dialog.

Example:

{
"enabled": true,
"inboundTrigger": "always",
"replyHint": true,
"status": "custom suffix"
}

A malformed config file fails closed: the plugin keeps working with defaults
except inboundTrigger: "never", and logs a warning. The config is loaded
once at plugin load
— changing config.json afterwards takes effect only
after restarting dsh.

Installation

dsh plugin --profile web add github:Sqhao-O/dsh-intercom

The GitHub install composes exactly like the tarball install below (verified
end to end by pnpm test:dod against a scratch DSH_HOME). The coordination
skill registers itself — there is no separate skill install step.

Install from tarball

The local equivalent of the GitHub install, verified end to end against a
scratch DSH_HOME (never the real ~/.dsh):

pnpm build
pnpm pack --pack-destination "$(mktemp -d)"   # produces dsh-intercom-.tgz
export DSH_HOME="$(mktemp -d)"                # scratch home (Git Bash syntax)
dsh plugin --profile web add /path/to/dsh-intercom-.tgz
dsh --profile web --dump-config | grep dsh-intercom   # verify the composed row

The tarball contains only lib/, client.js, skills/, cordis.patch.yml,
package.json, README*, LICENSE, and NOTICE — no sources or tests. For
a local checkout, see "Local development" below.

Development

Requires Node.js ≥ 20 and pnpm.

pnpm install
pnpm build       # compile sources to lib/ (artifacts are committed)
pnpm test        # node:test via tsx
pnpm lint        # oxlint
pnpm typecheck   # tsc --noEmit
pnpm format      # prettier

See CONTRIBUTING.md for the workflow.

Local development (mount into a real dsh)

Mount the checkout into a dsh profile without touching your real ~/.dsh:

pnpm install && pnpm build   # dsh loads the compiled lib/, no build at install time

# Point DSH_HOME at a scratch directory first (Git Bash syntax):
export DSH_HOME="$PWD/tests/e2e/.tmp/dsh-home-link"

dsh plugin --profile web add link:"$PWD"   # symlinks the repo into the profile
dsh --profile web --dump-config | grep dsh-intercom   # verify the composed row
dsh web                                    # boot with the plugin mounted

link: creates a symlink in the profile's node_modules, so pnpm build
after a source edit is enough — reinstalling is never needed. The same
commands work with --profile headless (or any other profile).

End-to-end tests

All e2e scripts run against scratch DSH_HOME directories with mock LLMs — no
real API key, and the real ~/.dsh is never touched. They are kept out of
pnpm test; see tests/e2e/README.md.

  • pnpm test:e2e boots three real dsh processes (two concurrently, plus
    a worker relaunch) and covers the cross-process path: roster discovery via
    list, a send relay waking the peer process, an ask blocking until the
    peer's reply unblocks it, and — after the worker process is killed — an
    immediately failing ask, a mailbox-queued send, and delivery of that
    queued message to the relaunched worker (same alias + cwd).
  • pnpm test:install runs the tarball install preview: pack, inspect the
    tarball contents, install into a scratch DSH_HOME with the real dsh CLI,
    and boot headless to prove the module loads (and the skill registers).
  • pnpm test:panel boots a real dsh web server with the plugin
    link-installed: the browser half is served and wired into the boot graph,
    the roster route lists two probe sessions through the broker, and the send
    route delivers a real message into the peer's session log.
  • pnpm test:dod is the final acceptance: it runs
    dsh plugin --profile web add github:Sqhao-O/dsh-intercom against the
    pushed GitHub repo in a fresh scratch home, then boots two dsh processes and
    proves planner→worker delivery and a worker→planner ask/reply.

Local acceptance

pnpm test:accept (tests/accept/, also kept out of pnpm test) is the one
suite that deliberately targets the CURRENT DSH_HOME — by default the real
~/.dsh — for an in-place check after installing into the real web profile.
It boots a real dsh web against the repo's mock LLM (child-env
DEEPSEEK_BASE_URL / DEEPSEEK_API_KEY=test; settings.yaml is never
touched and no real model call is made), temporarily appends a single probe
row to the web profile's cordis.patch.yml (backed up first, restored
byte-identical with a sha256 check on every exit path), and asserts the
real-environment wiring: tool + skill registration, broker auto-spawn under
~/.dsh/intercom, the panel roster/send routes (relay + wake in the worker's
session log, and a 400 for a non-local sender), an ask/reply between the
probe sessions, and the served client.js. Probe sessions
(accept-planner-* / accept-worker-*) persist under ~/.dsh/sessions/ and
are listed at the end; the acceptance-spawned dsh web is stopped (the
broker self-exits when idle).

pnpm test:accept

Known limitations

  • Same machine only. Discovery and delivery go through a local socket
    (unix socket or Windows named pipe) keyed by $DSH_HOME/intercom — there is
    no cross-host transport.
  • Text messages only. Attachments (files/snippets/context) exist in the
    vendored protocol types but the tool does not accept or render them yet.
  • confirmSend is a no-op (see the config table).
  • The Web UI panel is web-profile only and English-only (no locale
    namespace yet). There is no TUI overlay.
  • The panel's React rendering is verified by contract, not by a browser
    test
    : the e2e asserts the bundle is served, wired into the boot graph, and
    that its data routes work end to end, but does not automate a real browser.

License

MIT — see LICENSE and NOTICE.

常见问题

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

本站没有抓到该条目的安装命令,请到仓库主页确认安装方式;这类条目多数是生态应用或尚未发布安装包的项目。

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

未标注验证等级。上游未给出验证结论,安装前请自行确认

dsh-intercom 安全吗?

未标注。

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

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

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

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

dsh-intercom 有哪些功能?

跨会话收发消息、会话发现与状态列表、会话别名寻址、请求应答 ask/reply、Web 设置面板。

这条记录的数据可靠吗?

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

同名或近似条目

1 条
不同作者的仓库分开列,请确认你要装的是哪一个
会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

sqhao-o 的其它插件

1 个

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