前言¶
用 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 进程内。
面板提供三种连接方式(按便利程度排列):
- Sign in(默认):在面板填写 MonkeyAI 服务器 origin、账号邮箱与密码;Host 在服务端完成登录、授权请求、批准与 code 交换,浏览器无需回传回调。适合手机或其它无法访问本机 loopback 的环境;密码仅用于请求,不存储,成功后面板清空密码字段。
- Browser authorization(loopback):Host 监听
127.0.0.1随机端口,MonkeyAI 重定向到http://127.0.0.1:<port>/oauth/callback;浏览器与 Host 同机时回调页把 code 回传给面板完成授权。 - 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,游标分页),而非有界 ACPsession/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 一致)。
- 在 DSH Web 客户端打开本插件面板,填写 MonkeyAI 服务器 origin(与你在桌面客户端使用的地址一致)。
- 任选一种授权方式完成连接:Sign in、Browser authorization 或 Paste callback。
- 在设备列表中选择目标设备(若设备未出现在列表,展开 Device missing?… 按 machine ID 添加)。
- 使用 Refresh 同时拉取设备与会话;点击某条会话卡片进入对话视图。
- 阅读完整历史;若桌面端正在跑一轮,状态徽标会显示 running,可直接在输入框发送新指令或点击停止。
- 需要换模型时使用标题栏中的模型切换器;审批类交互在审批卡片上点选选项按钮。
新建会话等次要操作收折在 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 进入: