baosfeng/my-dsh-plugins--plugins-dsh-my-remote ↗★ 11
dsh-my-remote
将事件下发至外部通道并支持远程控制 适合需要通过手机或IM机器人远程审批和交互的用户。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:baosfeng/my-dsh-plugins#e7fff48bc3ce67cc99f28fa7f1f8175814da76eb&path:plugins/dsh-my-remote说明文档
阅读完整 README ↗配置
设置页(推荐)
设置 → 插件 → 远程控制 面板可视化编辑 4 项配置,保存即生效(写回 profile 层 cordis.patch.yml 的 remote 行):
| 项 | 说明 |
|---|---|
apiToken | 密码型输入框;已配置时提示「留空则不修改」,不回显原文 |
askTimeoutMs / approvalTimeoutMs | 毫秒,0 = 无限等待 |
webhooks | 列表编辑器:增 / 改 / 删 / 启停(名称、URL、事件多选) |
两处刻意的边界:webhook 的自定义 headers 与 end/ask/approval 事件开关不在面板里,仍需在 yml 手写;面板保存会先读该行已有配置再合并,不会覆盖这些手写项。
手写配置
cordis.patch.yml 中插件行的 config: 字段,全部可选:
config:
apiToken: 'your-token' # 写指令鉴权;留空则仅靠 loopback 围栏
askTimeoutMs: 0 # 远程回答等待超时(0=无限;>0 超时返回空 answers 由模型自行决策)
approvalTimeoutMs: 0 # 远程批准等待超时(0=无限;>0 超时 fail-closed 拒绝)
webhooks:
- name: '我的中转服务'
url: 'https://relay.example.com/hook'
events: ['ask', 'approval', 'end'] # 缺省 = 全部
enabled: true
headers: # 自定义请求头(中转服务鉴权等);设置页不暴露,保存时按名称保留
Authorization: 'Bearer xxx'
手写配置
cordis.patch.yml 中插件行的 config: 字段,全部可选:
config:
apiToken: 'your-token' # 写指令鉴权;留空则仅靠 loopback 围栏
askTimeoutMs: 0 # 远程回答等待超时(0=无限;>0 超时返回空 answers 由模型自行决策)
approvalTimeoutMs: 0 # 远程批准等待超时(0=无限;>0 超时 fail-closed 拒绝)
webhooks:
- name: '我的中转服务'
url: 'https://relay.example.com/hook'
events: ['ask', 'approval', 'end'] # 缺省 = 全部
enabled: true
headers: # 自定义请求头(中转服务鉴权等);设置页不暴露,保存时按名称保留
Authorization: 'Bearer xxx'
使用(外部通道侧)
外部中转服务/IM 机器人收到下行事件帧(JSON,POST)后,可调用这些端点应答:
| 端点 | 说明 |
|---|---|
GET /remote/api/info | 插件开关信息 |
GET /remote/api/status | 活动会话 / 待回答 ask / 待批准 approval 快照 |
GET /remote/api/audit | 操作审计日志(指令留痕) |
POST /remote/api/command | 远程指令统一入口(x-remote-token 头鉴权) |
command 动作:answer(按问题 id 选项或自由文本回答)、approve(outcome 为 allowed-once 或 rejected)、continue(经 agent.steer 注入用户消息继续会话)。
远程调用(非本机)需把 DSH 的
trustedHosts配置为你的中转服务域名,并用apiToken鉴权。详见 docs/远程控制/概述.md。