voyager
Nagi-ovo
Enhancement suite for Gemini, AI Studio, Claude & ChatGPT — plus a prompt manager for any web UI, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件;提示词管理器可用于任意 Web UI,含 DeepSeek Harness。
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:AbcdefgXW/dsh-msg-hub
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
dsh(DeepSeek Harness)IM 渠道桥插件:把微信(ilinkai)/ QQ(开放平台)/ 飞书(开放平台)的消息接入 dsh agent 会话,并支持主动推送(供定时任务等场景唤醒 bot 并把 AI 回复回传手机)。
dsh-channels-push cordis 服务):push({channel, peerId, text}):直接向 IM 发文本task({channel, peerId, prompt}):唤醒渠道 agent 执行任务,AI 回复自动回传 IM/sessions 列出最近 5 个会话(名称+ID)、/bind <会话ID> 绑定、/status 查看绑定状态# 方式一:npm 包(推荐)
dsh plugin --profile web add dsh-msg-hub
# 方式二:GitHub 仓库
dsh plugin --profile web add github:AbcdefgXW/dsh-msg-hub
# 方式三:手动(本地开发/内网)
git clone https://github.com/AbcdefgXW/dsh-msg-hub.git
cd dsh-msg-hub && npm install
# 软链进 profile 并加入 bundles:
cd $DSH_HOME/profiles/web && pnpm link /路径/dsh-msg-hub
# 然后确认 package.json 的 dsh.profile.bundles 包含 dsh-msg-hub
dsh plugin add会自动将本插件加入 profile 的dsh.profile.bundles并挂载插件自带的注册行(cordis.patch.yml),无需也不应手动修改任何配置文件。⚠️ 排查注册问题时请检查
package.json的dsh.profile.bundles是否包含dsh-msg-hub;切勿再在 profile 的cordis.patch.yml里手动insert本插件——bundles 已挂载时手动 insert 会导致duplicate loader entry id启动崩溃。
重启 dsh web。
微信(ilinkai 扫码登录)
node scripts/weixin-login.mjs login
state/weixin/,重启 dsh 生效QQ(开放平台官方机器人,两种方式)
先到 QQ 开放平台 注册机器人应用,拿到 AppID 与 AppSecret:
# 方式 A:凭证直填(推荐,机器人已创建时)
node scripts/qq-login.mjs --appid <AppID> --secret <AppSecret>
# 方式 B:扫码绑定(要求该 QQ 账号下已存在机器人应用)
node scripts/qq-login.mjs
配置后重启 dsh 生效。⚠️ 定时主动推送还需在开放平台申请「主动消息权限」,否则推送会静默失败(被动回复不受影响)。
飞书(开放平台企业自建应用)
node scripts/feishu-login.mjs --appid <AppID> --secret <AppSecret>
配置后重启 dsh 生效。
凭证全部保存在插件
state/目录(已 gitignore,不会提交);三个渠道可同时启用。
微信单条消息有长度上限(实测 1280 字符完整、1380 被拒),超长自动分段发送。分段上限可配置(默认 1200 字符/条,留余量):
# 方式一:dsh-toolbox-web 设置页 → 定时任务下方「微信消息分段上限」输入框(改动即时生效)
# 方式二:直接改配置文件
vi state/weixin/config.json # {"segmentLimit": 1200}
改后即时生效,无需重启。
# 方式一:dsh 命令
dsh plugin --profile web remove dsh-msg-hub
# 方式二:手动
# 1. 编辑 profile 的 package.json,从 dsh.profile.bundles 移除 "dsh-msg-hub"
# 2. rm -rf $DSH_HOME/profiles/web/node_modules/dsh-msg-hub
# 3. rm -rf <插件目录>/state # 凭证/日志/会话 token
# 4. 重启 dsh web
卸载后 dsh-toolbox-web 的定时心跳 IM 渠道推送自动不可用(回退主工作区心跳),其余功能不受影响。
① duplicate loader entry id: dsh-msg-hub(最常见)——被注册两次(bundles + 手动 insert):
vi /home/dsh/profiles/web/cordis.patch.yml
# 删除形如以下的手动 insert 块(bundles 会自动挂载,不需要它):
# - insert:
# - id: dsh-msg-hub
# name: 'dsh-msg-hub'
# 保留 sandbox-policy / approval 等系统配置不动
② cannot resolve profile bundle "dsh-msg-hub"(依赖缺失)
vi /home/dsh/profiles/web/package.json # 检查 bundles 与 dependencies 对应
ls -la /home/dsh/profiles/web/node_modules/ | grep dsh-
ln -s /path/to/插件目录 /home/dsh/profiles/web/node_modules/dsh-msg-hub # 恢复软链
通用救急(备份回滚):
ls /home/dsh/profiles/web/cordis.patch.yml.bak-* # patch 备份
ls /home/dsh/profiles/web/package.json.bak-* # package.json 备份
cp 备份名 /home/dsh/profiles/web/cordis.patch.yml # 覆盖回去
修改后重启 dsh 生效;仍失败看日志:docker logs deepseek-harness。
⚠️ 本插件自带
cordis.patch.yml注册行,由dsh plugin add自动挂载,切勿在 profile 的cordis.patch.yml手动 insert(见「安装」警示)。
内置微信 / QQ / 飞书三个渠道;其他渠道通过适配器注册表接入,无需改本插件代码:
// 第三方插件(如 dsh-telegram-bridge)在启动时注册:
const api = ctx.get("dsh-channels-push"); // 服务 id:dsh-channels-push
api.registerChannel("telegram", {
// 必选:向 peerId 发送文本(peerId 为渠道侧的用户/群标识)
send: async (peerId, text) => { /* 调 Telegram Bot API 发送 */ },
// 可选:自定义会话 ID 匹配(默认按 ch-<channel>- 前缀解析)
matchSessionId: (sessionId) => sessionId.startsWith("ch-telegram-"),
});
注册后自动获得完整能力:
push({ channel: "telegram", peerId, text }) —— 定时心跳等可直接推到新渠道task({ channel, peerId, prompt }) —— 唤醒渠道 agent 执行并把回复回传resolveChannel("ch-telegram-<peerId>") —— 与内置渠道一致会话 ID 规范:ch-<channel>-<peerId>(如 ch-weixin-xxx、ch-telegram-xxx)。
| 变量 | 用途 | 默认 |
|---|---|---|
DSH_CHANNELS_STATE_DIR |
渠道状态目录(凭证/日志/数据) | 插件 state/ 目录 |
DSH_CHANNELS_CWD |
渠道 agent 工作区根 | /workspace |
state/ 目录(.gitignore 已排除),请勿提交MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: bot、bridge、feishu、feishu-bot、qq、qq-bot、wechat、feishu-robot。