dsh-plugin-desktop:DSH-desktop 官方伴生插件

前言

DSH(智能体开发框架)的理念是「一切皆插件」。dsh-plugin-desktop 是 DSH-desktop 的官方伴生插件。原版桌面端保持极简;安装此插件才解锁增强功能。它运行在 dsh 服务进程内,一方面把桌面端需要的内部状态以稳定 HTTP 端点暴露出来,替代了过去通过嗅探 webRequest 或解压文件估算用量的 hack 做法,另一方面往 Web UI 注入增强的页内右键菜单与「置顶会话」扩展。

核心功能

该插件提供以下主要能力:

  • 桌面端状态暴露:通过 HTTP 端点直接读取当前会话和用量数据。
  • 全局快捷输入:提供统一的发送通道,用于外部程序向 DSH 发送 prompt。
  • Web UI 增强:为 Web UI 注入完整的右键菜单(会话/工作区/正文/链接/输入框)及「置顶会话」功能。
  • 终端桥接:提供 /api/shell 端点,用于 PTY 终端交互。

安装

官方推荐使用命令行安装:

dsh plugin add github:Quan-Robin/dsh-plugin-desktop

DSH-desktop-for-Linux 托盘或设置页也提供「安装伴生插件」的一键安装功能。若需手动安装,需将目录拷贝至 $DSH_HOME/profiles/web/node_modules/dsh-plugin-desktop/,并在 $DSH_HOME/profiles/web/cordis.patch.yml 中注册:

- insert:
    - id: dsh-plugin-desktop
      name: dsh-plugin-desktop
      inject:
        - webServer
        - apiProxy

典型用法

安装后,桌面端会持续嗅探 /api/session.* 请求以保持同步。以下是几个核心 API 的使用示例:

  • 检查当前会话状态:
    curl http://127.0.0.1:3080/api/state
返回示例包含 `currentSessionId`, `turn` 状态等。
  • 发送全局快捷输入:
    # POST /api/prompt { sessionId?, text }
    # sessionId 缺省用当前会话
  • 查询用量数据:
    curl http://127.0.0.1:3080/api/usage
返回聚合后的会话用量信息。
  • 设置当前会话:
    # POST /api/set-session { sessionId }
    # 用于桌面壳在 Web UI 切换会话时调用

技术细节

  • 零依赖:插件本身不依赖 npm 包,桌面端直接拷贝目录安装即可。
  • 适配机制:插件 API 尚未文档化,交互集中在 lib/index.js 中的三个 ADAPTER 函数(EVENT_BUS_SHAPES、ROUTER_SHAPES、PROMPT_SHAPES)。适配真实 dsh 时只需修改这三个列表。
  • 实时同步:桌面端会持续嗅探 /api/session.* 请求,确保 UI 导航导致的当前会话变化能被正确同步。

适用场景

适合需要深度集成 DSH 状态管理、构建桌面级快捷输入通道或需要增强 Web UI 交互体验的开发者。

参考资料

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜