🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

桌面桥接接口 ignotuss/dsh-desktop-bridge

DeepSeek Harnessv0.1.0
ignotuss32 天前有提交已提供中文文档扫描:含敏感能力

用令牌鉴权的本机 HTTP 接口驱动运行中的会话

30.7/100
综合分
1
GitHub 星标
68
npm 周下载
—/5
用户评分

数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @ignotuss/dsh-desktop-bridge
npm 源 · @ignotuss/dsh-desktop-bridge 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · desktop
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@ignotuss/dsh-desktop-bridge @ 0.1.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 17:40:14

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 读取本地文件
    src/index.js:101
    try { info = await stat(cwd) } catch { return 'cwd must be an existing directory' }
  • 写入本地文件
    src/index.js:286
    ? (entry) => { void appendFile(logPath, `${JSON.stringify(entry)}\n`, { mode: 0o600 }).catch(() => {}) }
  • 写入本地文件
    src/index.js:304
    await mkdir(dirname(descriptorPath), { recursive: true })
  • 写入本地文件
    src/index.js:306
    await writeFile(temporary, descriptor, { mode: 0o600 })
  • 写入本地文件
    src/index.js:307
    await rename(temporary, descriptorPath)
  • 删除本地文件
    src/index.js:315
    await unlink(descriptorPath).catch(() => {})
  • 读取本地文件
    bin/bridge-client.mjs:30
    connection = JSON.parse(await readFile(descriptorPath, 'utf8'))
  • 发起网络请求
    bin/bridge-client.mjs:73
    const response = await fetch(url, init)
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 令牌鉴权本地接口
  • 驱动运行中会话

用 token 鉴权的本地回环 HTTP API,让任何本地程序都能驱动运行中的 DSH(DeepSeek Harness)主机的会话

README

由 DeepSeek 最新模型翻译生成
dsh-desktop-bridge 给正在运行的 DSH(DeepSeek Harness)宿主——桌面端应用,或一个 dsh web 服务——开一个带令牌鉴权的本机 HTTP 接口。任何本地程序都能调用它:脚本、构建工具、别家的 agent、curl。 安全敏感。 插件启用期间,任何能读到 <DSH_HOME>/desktop-bridge.json 的进程,都能列出你的会话、读取它们的事件、往里面发消息、并创建新会话——每个新会话都会启动一个以你的权限运行的 agent。安装前请读 SECURITY.md,不用的时候把插件停掉。 English documentation: README.md。 为什么需要它 DSH 把会话控制留在宿主进程里,也就是 sessionController 服务。这是有意为之,也正因为如此,常规入口都够不着一个已经在跑的应用: - dsh --profile desktop … 直接拒绝——error: profile "desktop" is managed exclusively by the Electron application。桌面端独占的 profile,CLI 既不能启动也不能往里装插件。 - SDK / ACP 那些入口会启动它们自己的宿主,因此够不着你正在看的那个实例里的会话。
展开完整文档(README 剩余 1 节)
dsh-desktop-bridge

给正在运行的 DSH(DeepSeek Harness)宿主——桌面端应用,或一个 dsh web 服务——开一个带令牌鉴权的本机 HTTP 接口。任何本地程序都能调用它:脚本、构建工具、别家的 agent、curl。

安全敏感。 插件启用期间,任何能读到 <DSH_HOME>/desktop-bridge.json 的进程,都能列出你的会话、读取它们的事件、往里面发消息、并创建新会话——每个新会话都会启动一个以你的权限运行的 agent。安装前请读 SECURITY.md,不用的时候把插件停掉。

English documentation: README.md。

为什么需要它

DSH 把会话控制留在宿主进程里,也就是 sessionController 服务。这是有意为之,也正因为如此,常规入口都够不着一个已经在跑的应用:

- dsh --profile desktop … 直接拒绝——error: profile "desktop" is managed exclusively by the Electron application。桌面端独占的 profile,CLI 既不能启动也不能往里装插件。
- SDK / ACP 那些入口会启动它们自己的宿主,因此够不着你正在看的那个实例里的会话。

本插件跑在那个宿主内部,把它的 sessionController 以 bearer 令牌保护的形式重新发布到一个回环端口上。除此之外什么都没有改变:不启动第二个 profile,桥接自身不写会话文件,也不对外网开放。

与其他同名/同类包的区别

| 包 | 机制 | 谁能用它驱动 DSH |
| 本插件 | 回环 HTTP + bearer 令牌 | 任何本地进程、任何语言、curl |
| dsh-session-bridge | 注册在 DSH 内部的 agent 工具 | 只有 DSH 自己的 agent,且要在它的对话里 |
| dsh-agent-bridge | 通过配方拉起别的 agent CLI | 别的 agent CLI,不是任意程序 |
| dsh-desktop-bridge(npm 上另一位作者的包) | 只读的 fetch 路由 | 只读,不能创建与发送 |

npm 上的 dsh-desktop-bridge 已被一个不相关的只读包占用,所以本包以 scope 形式发布。

环境要求

- DSH 的 profile 组合里包含 @deepseek-ai/dsh-web-app(桌面端和 dsh web 都满足)。
该 bundle 挂载 @deepseek-ai/dsh-api-session-controller,它提供本插件注入的 sessionController 服务。
- 随包的命令行客户端需要 Node.js ≥ 20。插件本体用宿主的运行时,且零依赖。

安装

让 agent 帮你装

如果你的会话用的是 cordis 预设,agent 手里有插件管理工具,整件事它自己能办完——直接说:

安装插件 @ignotuss/dsh-desktop-bridge

standard 和 ptc 预设把那个工具关掉了;在这两个预设下 agent 没有任何安装手段,只能退回到下面的命令。想在桌面端用"对话即安装",先在 设置 → Agent 预设 里换成 cordis。

CLI 管理的 profile(web、tui、headless)

dsh plugin --profile web add @ignotuss/dsh-desktop-bridge

本包是 bundle:它自带的 cordis.patch.yml 会挂载插件,所以装上即启用。重启该 profile(或在开启了 HMR 的场合交给它),然后在 设置 → 插件 里确认状态为已启用。

DSH 桌面端

桌面端独占自己的 profile,CLI 按设计拒绝它。请在侧栏 插件 → 添加插件 里填入包名(或本地检出目录),并选择 立即启用。以后改完源码要生效,把该插件的开关关掉再打开即可——在线的 profile 会就地重组合,不需要重启整个应用。

使用

装上包之后还会得到一个 dsh-desktop-bridge 命令:

dsh-desktop-bridge list
dsh-desktop-bridge create ~/projects/demo "发版排查" dsh-desktop-bridge events session-1f0e…-… 50 dsh-desktop-bridge send session-1f0e…-… "请总结一下失败的测试。"

每个请求都要带上 <DSH_HOME>/desktop-bridge.json 里的 bearer 令牌。该文件由插件在挂载时写入、卸载时删除:

{
"version": 1,
"address": "127.0.0.1",
"port": 63339,
"token": "…64 位十六进制…", "pid": 30820, "startedAt": "2026-10-02T02:31:07.114Z" }

端口和令牌每次挂载都会重新随机,所以重载之后要重新读文件,不要缓存。

| 方法 | 路径 | 请求体 / 查询 | 结果 |
| GET | /v1/sessions | — | 200 {items: […]},宿主的会话列表(含实时投影) |
| POST | /v1/sessions | {cwd, title?} | 201 返回新建会话;cwd/title 不合法为 400;被配置禁用或超出白名单为 403 |
| GET | /v1/sessions/{id}/events | ?limit=1..100(默认 30) | 200 {sessionId, events: […]},事件日志的尾部 |
| POST | /v1/sessions/{id}/messages | {text}(1–4096 字节) | 200 {accepted, requestId};文本作为一条用户回合追加 |

curl 示例:

curl -s -H "Authorization: Bearer $TOKEN" "http://127.0.0.1:$PORT/v1/sessions"
curl -s -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
-d '{"cwd":"/home/me/projects/demo","title":"发版排查"}' \
"http://127.0.0.1:$PORT/v1/sessions"

带浏览器 Origin 头的请求一律拒绝,且 Host 必须写明回环地址与端口——因此网页即使通过 DNS 重绑定也够不着这个桥。

配置

插件会读取补丁行里可选的 config,每个键都可省略,省略时即为下面这种宽松默认值:

- id: desktop-bridge
config:
allowCreate: false # 默认 true;false 直接拒绝 POST /v1/sessions auditLog: true # 默认 true;每个请求一行 JSON cwdAllowlist: # 默认 [],不限制
- 'C:\work'

- allowCreate —— 设为 false 后,列表、读取、发消息照常可用,但不能再启动新的 agent。
- auditLog —— 每个请求向 <DSH_HOME>/desktop-bridge.log 追加一行 JSON:时间、方法、路径、路由、状态码、耗时,以及目标目录或会话 id。不记录令牌,也不记录消息正文。
- cwdAllowlist —— 非空时,新会话只能建在这些目录之内(含子目录)。

POST /v1/sessions 传入的路径必须是已存在的目录;桥接不会替你创建。

兼容性

已在 DSH 0.2.0-rc.2(desktop profile,Windows)上验证。插件只是五个 sessionController 方法之上的薄层——list、inspect、prompt、create、 rename——不依赖其他内部 API。若某个 DSH 版本改了方法名,相应路由会返回 500 DSH request failed,真实错误写进审计日志,应用其他部分不受影响。

注入不到服务时,插件会在启动日志里报 sessionController is unavailable,而不是挂载一个半死不活的桥。

开发

node --test # 23 个测试:路由、策略、审计、descriptor 生命周期

测试占用临时回环端口并使用桩 controller,不需要跑着 DSH。

许可证

MIT,见 LICENSE。
预览分享卡片长什么样 ↓ignotuss/dsh-desktop-bridge
分享 · DeepSeek Harness Hub
ignotuss/dsh-desktop-bridge

用令牌鉴权的本机 HTTP 接口驱动运行中的会话

回到顶部