dsh-monkeyai-sessions:在 DeepSeek Harness 里接续 MonkeyAI 会话

前言

用 DeepSeek Harness(DSH)编排智能体时,工作往往分散在多个客户端里。若在 MonkeyAI 桌面端已经开了一段对话,回到 DSH 里继续时,常见做法是复制历史上下文、重新描述任务,既费时也容易丢细节。社区插件 dsh-monkeyai-sessions(维护者 Artenx)把 MonkeyAI 的会话目录和完整对话历史接到 DSH Web 客户端:浏览设备上的会话、打开某条会话阅读全貌,并直接下发新指令,与 MonkeyAI 侧已进行中的轮次对齐,无需整段粘贴上下文。

这是什么

dsh-monkeyai-sessions 是 DSH 的 Web 客户端插件(dsh.client.platform: web),在 Harness 侧边栏挂载远程贡献,通过 MonkeyAI OAuth(授权码 + PKCE)拿到授权后,访问运行时提供的设备列表、会话列表与消息通道。授权结果由 DSH 写入其凭证存储;Host 侧完成交换,面板只负责连接与操作。

仓库:https://github.com/Artenx/dsh-monkeyai-sessions
社区目录页:https://www.skillhub.cn/plugins/Artenx/dsh-monkeyai-sessions

核心功能

下面功能均来自项目 README 与 package.json 说明,并在 README 中注明已在 DSH 0.2.2-rc.1 Web profile 与真实 MonkeyAI runtime 上做过端到端验证。

授权与连接

插件通过已注册的 monkeyai-desktop 公开客户端申请 device:connect、session:read、session:control。OAuth state 与 PKCE verifier 保持在 DSH Host 进程内。

面板提供三种连接方式(按便利程度排列):

  1. Sign in(默认):在面板填写 MonkeyAI 服务器 origin、账号邮箱与密码;Host 在服务端完成登录、授权请求、批准与 code 交换,浏览器无需回传回调。适合手机或其它无法访问本机 loopback 的环境;密码仅用于请求,不存储,成功后面板清空密码字段。
  2. Browser authorization(loopback):Host 监听 127.0.0.1 随机端口,MonkeyAI 重定向到 http://127.0.0.1:<port>/oauth/callback;浏览器与 Host 同机时回调页把 code 回传给面板完成授权。
  3. Paste callback(scheme):使用 monkeyai-desktop://oauth/callback 重定向,用于拒绝 loopback 的环境。

未连接时面板显示连接卡片;已连接后显示工具栏(账号、设备、一并刷新设备与会话的 Refresh、断开),会话以卡片展示;打开会话后显示紧凑标题栏(返回、标题、模型切换)、审批卡片(以普通按钮展示选项而非原始 JSON)、Enter 发送的输入区。

设备列表调用账号级目录 GET /api/v1/endpoints(无 runtime-API 头),展示已注册设备并按 online 标记在线状态,跳过已撤销项。通过 device-code 授权的无头 runtime 设备可能不在该目录中,可在面板 「Device missing?…」 用手动 machine ID 添加,条目保存在浏览器存储并合并进设备选择器。

会话浏览与接续

  • 完整历史:经运行时 HTTP 读通道加载(POST {http_base}/read/session,_monkeyai/session/messages,游标分页),而非有界 ACP session/load 回放,长会话可看到包括最新回复在内的全部轮次。
  • 实时同步:挂载会话并具备与 MonkeyAI 客户端相同的 historyHTTP 能力后,订阅 ACP live 更新;在 MonkeyAI 桌面端开始的 assistant 流式块会即时出现在面板。大块持久化回复触发 history_changed 时,按游标做 HTTP 增量刷新。
  • 状态与控制:会话标题旁状态徽标反映轮次状态(running / idle / error / interrupted),由 _monkeyai/session/state 通知驱动;桌面端发起的轮次在 DSH 中同样显示为 running。轮次进行中时输入区提供停止按钮(session/cancel);模型切换走 live 连接上的 _monkeyai/session/model/set。
  • 展示:Assistant 消息做轻量 Markdown 渲染(代码块、行内代码、粗体、标题、列表)。

回复流式返回;可在不离开 DSH 的情况下停止进行中的轮次或切换模型。

开发与引擎要求

  • 目标 DSH:>=0.2.2-rc.1 <0.3.0(engines.dsh)
  • Node.js:>=24.9.0
  • 许可证:MIT
  • 当前包版本(package.json):0.1.12

安装与启用

插件以 当前 DSH 进程的权限 运行;安装前建议阅读仓库源码与 MIT 许可证,并只在信任的 MonkeyAI 服务器上授权。

从 npm 安装(发布后)

dsh plugin --profile web add dsh-monkeyai-sessions

从插件市场索引添加

在 DSH 中:Plugins → Experimental plugins 启用 Custom plugin indexes,打开 Discover,添加索引源:

https://artenx.github.io/dsh-monkeyai-sessions/index.json

从本地构建包安装

在插件源码目录执行:

npm install
npm run build
npm pack
dsh plugin --profile web add ./dsh-monkeyai-sessions-0.1.12.tgz

说明:README 中的本地示例包名为 dsh-monkeyai-sessions-0.1.12.tgz,与当前 package.json 版本一致;若你本地 npm pack 产出文件名不同,请替换为实际文件名。

安装与联调需在 Web profile 下使用(--profile web)。

典型用法

经过安装并启用插件后,可按下面顺序操作(界面文案以英文面板为准,逻辑与 README 一致)。

  1. 在 DSH Web 客户端打开本插件面板,填写 MonkeyAI 服务器 origin(与你在桌面客户端使用的地址一致)。
  2. 任选一种授权方式完成连接:Sign in、Browser authorization 或 Paste callback。
  3. 在设备列表中选择目标设备(若设备未出现在列表,展开 Device missing?… 按 machine ID 添加)。
  4. 使用 Refresh 同时拉取设备与会话;点击某条会话卡片进入对话视图。
  5. 阅读完整历史;若桌面端正在跑一轮,状态徽标会显示 running,可直接在输入框发送新指令或点击停止。
  6. 需要换模型时使用标题栏中的模型切换器;审批类交互在审批卡片上点选选项按钮。

新建会话等次要操作收折在 details 区域,避免主界面杂乱。

适用场景与注意

适合谁:已在 MonkeyAI 客户端上跑 agent / 会话,希望在 DSH 同一浏览器工作区里查看历史、补发指令、停止轮次或改模型,而不反复复制上下文的重度用户。

环境:插件声明为 Web 客户端;README 验证环境为 DSH 0.2.2-rc.1 web profile。Node 与 DSH 版本需满足 engines 约束。

安全与信任:Sign in 模式下密码经 Host 转发用于 OAuth 流程,插件说明其不持久化密码;Grant 存放在 DSH credential store。请仅对你控制的 MonkeyAI 实例授权。

生态说明:DSH 社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;本插件来自社区维护者 Artenx,非官方内置能力。

结尾

dsh-monkeyai-sessions 把 MonkeyAI 的设备与会话接到 DSH Web 侧:OAuth 登录、完整历史、直播式同步与轮次控制合在一个面板里,减少「换工具就丢上下文」的摩擦。查阅说明与源码可从目录页或 GitHub 进入:

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

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

小夜