dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
Multi-channel message bridge for DeepSeek Harness (DSH): route WeChat (ClawBot/iLink), QQ, and Feishu (Lark) chat messages to a DSH agent, and relay the agent's replies back to the sender.
多通道桥接插件:把微信 ClawBot / QQ / 飞书的消息接入 DSH agent,并把回复回传给发消息的人。
| 通道 | 收消息 | 发消息 | 凭据 |
|---|---|---|---|
| 微信 ClawBot | iLink 拉模式 (/ilink/bot/getupdates) |
/ilink/bot/sendmessage(带 client_id + base_info + 回传 context_token) |
botToken(扫码登录) |
| 官方网关 WebSocket(长连接) | POST /v2/users|groups/{openid}/messages(被动消息带 msg_id) |
appId + secret |
|
| 飞书 | 官方 SDK 长连接(@larksuiteoapi/node-sdk,订阅 im.message.receive_v1) |
tenant_access_token + im/v1/messages |
appId + appSecret |
requireMention),私聊始终回复。omni-bridge-<channel>),回复去重用 sessionPersistence.readFrom 水位(持久化 seq),解决「只有第一条回复」的问题。当前以 DSH 持久化 bundle 形式提供(host + client 打包进 profile,跨 DSH 重启生效):
lib/index.js —— host 半区:三个通道的收发 + 会话桥接 + 定时轮询,通过 webServer 路由对外提供 RPC(/omni-bridge/*)。lib/client.js —— client 半区:设置页(微信/QQ/飞书三张卡片),通过 fetch 调用 host 路由。lib/feishu-ws.cjs —— 飞书长连接子进程(由 host 用 node 拉起)。方式一:从 npm 安装(推荐)
# 在 profile(如 ~/.dsh/profiles/web)目录执行
pnpm add dsh-omni-bridge
然后在 profile 的 package.json 的 dsh.profile.bundles 追加 "dsh-omni-bridge",重启 DSH 生效。
方式二:本地 tgz 安装
npm pack 打包成 tgz(或直接用仓库目录)。~/.dsh/profiles/web)的 package.json:dsh.profile.bundles 追加 "dsh-omni-bridge";dependencies 追加 "dsh-omni-bridge": "file:<tgz 路径>"。pnpm install(会自动安装 @larksuiteoapi/node-sdk 依赖)。飞书长连接依赖官方 SDK,由 bundle 的 dependencies 自动安装:
pnpm add @larksuiteoapi/node-sdk # 或随 bundle 一起 pnpm install
lib/feishu-ws.cjs 通过 require('@larksuiteoapi/node-sdk') 加载 SDK,Node 从该脚本所在目录向上解析到 profile 的 node_modules。
配置文件位于 ~/.dsh/omni-bridge-config.json:
{
"runtime": { "provider": "deepseek-official", "model": "deepseek-v4-flash" },
"channels": {
"weixin": { "enabled": true, "botToken": "...", "defaultTarget": "" },
"qq": { "enabled": true, "appId": "...", "secret": "..." },
"feishu": { "enabled": true, "appId": "cli_...", "appSecret": "...", "requireMention": true }
}
}
botToken。defaultTarget 留空则回复私信者。appId / secret。im:message(含 im:message.group_at_msg、im:message.p2p_msg、im:message:send_as_bot)。im.message.receive_v1。安装并重启后,设置页出现「远程桥接」卡片(微信/QQ/飞书三张配置卡)。
weixin-qr / weixin-poll 使用 iLink 扫码登录流程,botToken 会写入 ~/.dsh/omni-bridge-config.json。MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。