把 DSH 接入各大聊天平台,随时指挥并查看思考轨迹
30.1/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add temotee2103/dsh-overdrive该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 59 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-overdrive(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 14:41:55
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 49 处,展示前 45 条)
- 发起网络请求packages/gateway/src/asr.ts:55
const audioRes = await fetch(voice.url); - 发起网络请求packages/gateway/src/asr.ts:64
const res = await fetch(`${baseUrl}/audio/transcriptions`, { - 读取本地文件packages/gateway/src/feed.ts:75
if (file && existsSync(file)) { - 读取本地文件packages/gateway/src/feed.ts:77
const parsed = JSON.parse(readFileSync(file, 'utf8')) as Feed[]; - 写入本地文件packages/gateway/src/feed.ts:88
mkdirSync(dirname(this.file), { recursive: true }); - 写入本地文件packages/gateway/src/feed.ts:89
writeFileSync(this.file, JSON.stringify(this.feeds, null, 2), 'utf8'); - 读取本地文件packages/gateway/src/index.ts:222
if (!existsSync(path)) { - 写入本地文件packages/gateway/src/index.ts:422
writeFileSync(tmp, Buffer.from(ev.data, 'base64')); - 删除本地文件packages/gateway/src/index.ts:432
.finally(() => rmSync(tmp, { force: true })); - 读取密钥环境变量packages/gateway/src/index.ts:459
const dshToken = process.env.DSH_OVERDRIVE_TOKEN ?? process.env.DSH_TOKEN ?? 'dev-token'; - 读取本地文件packages/gateway/src/memory.ts:80
if (file && existsSync(file)) { - 读取本地文件packages/gateway/src/memory.ts:82
const parsed = JSON.parse(readFileSync(file, 'utf8')) as Record<string, MemoryEntry[]>; - 写入本地文件packages/gateway/src/memory.ts:95
mkdirSync(dirname(this.file), { recursive: true }); - 写入本地文件packages/gateway/src/memory.ts:96
writeFileSync(this.file, JSON.stringify(Object.fromEntries(this.data), null, 2), 'utf8'); - 读取本地文件packages/gateway/src/memory.ts:142
if (file && existsSync(file)) { - 读取本地文件packages/gateway/src/memory.ts:144
const parsed = JSON.parse(readFileSync(file, 'utf8')) as Record<string, string>; - 写入本地文件packages/gateway/src/memory.ts:155
mkdirSync(dirname(this.file), { recursive: true }); - 写入本地文件packages/gateway/src/memory.ts:156
writeFileSync(this.file, JSON.stringify(Object.fromEntries(this.map), null, 2), 'utf8'); - 请求外部主机api.deepseek.compackages/gateway/src/setup.ts:82
const r = await fetch('https://api.deepseek.com/user/balance', { headers: { authorization: `Bearer ${v.DEEPSEEK_API_KEY}` } }); - 发起网络请求packages/gateway/src/setup.ts:82
const r = await fetch('https://api.deepseek.com/user/balance', { headers: { authorization: `Bearer ${v.DEEPSEEK_API_KEY}` } }); - 请求外部主机api.telegram.orgpackages/gateway/src/setup.ts:86
const r = await fetch(`https://api.telegram.org/bot${v.TELEGRAM_BOT_TOKEN}/getMe`); - 发起网络请求packages/gateway/src/setup.ts:86
const r = await fetch(`https://api.telegram.org/bot${v.TELEGRAM_BOT_TOKEN}/getMe`); - 请求外部主机discord.compackages/gateway/src/setup.ts:91
const r = await fetch('https://discord.com/api/v10/users/@me', { headers: { authorization: `Bot ${v.DISCORD_BOT_TOKEN}` } }); - 发起网络请求packages/gateway/src/setup.ts:91
const r = await fetch('https://discord.com/api/v10/users/@me', { headers: { authorization: `Bot ${v.DISCORD_BOT_TOKEN}` } }); - 请求外部主机slack.compackages/gateway/src/setup.ts:95
const r = await fetch('https://slack.com/api/auth.test', { headers: { authorization: `Bearer ${v.SLACK_BOT_TOKEN}` } }); - 发起网络请求packages/gateway/src/setup.ts:95
const r = await fetch('https://slack.com/api/auth.test', { headers: { authorization: `Bearer ${v.SLACK_BOT_TOKEN}` } }); - 请求外部主机open.feishu.cnpackages/gateway/src/setup.ts:100
const r = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', { - 发起网络请求packages/gateway/src/setup.ts:100
const r = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', { - 请求外部主机api.dingtalk.compackages/gateway/src/setup.ts:108
const r = await fetch('https://api.dingtalk.com/v1.0/oauth2/accessToken', { - 发起网络请求packages/gateway/src/setup.ts:108
const r = await fetch('https://api.dingtalk.com/v1.0/oauth2/accessToken', { - 读取本地文件packages/gateway/src/setup.ts:233
const current = existsSync(envPath) ? readFileSync(envPath, 'utf8') : ''; - 读取本地文件packages/gateway/src/setup.ts:233
const current = existsSync(envPath) ? readFileSync(envPath, 'utf8') : ''; - 写入本地文件packages/gateway/src/setup.ts:235
writeFileSync(envPath, merged, 'utf8'); - 读取本地文件packages/gateway/src/status.ts:44
const html = await readFile( - 读取本地文件packages/gateway-core/src/autosend.ts:37
entries = readdirSync(dir); - 读取本地文件packages/gateway-core/src/autosend.ts:46
st = statSync(full); - 读取本地文件packages/gateway-core/src/bridge.ts:100
const data = readFileSync(found.path).toString('base64'); - 发起网络请求packages/gateway-core/src/dsh-runtime.ts:191
const res = await fetch(url); - 读取密钥环境变量packages/gateway-core/src/index.ts:167
const token = rawConfig.token ?? process.env.DSH_OVERDRIVE_TOKEN; - 发起网络请求packages/sdk/src/client.ts:16
const res = await fetch(`${this.baseUrl}${path}`, { - 发起网络请求packages/sdk/src/client.ts:30
return this.request('GET', '/v1/health'); - 发起网络请求packages/sdk/src/client.ts:34
return this.request('POST', '/v1/sessions', req); - 发起网络请求packages/sdk/src/client.ts:38
return this.request('POST', `/v1/sessions/${encodeURIComponent(sessionId)}/messages`, req); - 发起网络请求packages/sdk/src/client.ts:43
return this.request('POST', `/v1/approvals/${encodeURIComponent(reqId)}/resolve`, body); - 发起网络请求packages/sdk/src/client.ts:47
return this.request('POST', '/v1/tasks', req);
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.deepseek.com、api.telegram.org、discord.com、slack.com、open.feishu.cn 等 6 个
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 接入多平台聊天
- 会话内轨迹追踪
- 子代理与定时任务
DeepSeek Harness 的 OpenClaw——把 DSH 变成多平台聊天智能体,支持会话内轨迹追踪、子代理与定时任务,一条命令即可部署。
README
由 DeepSeek 最新模型翻译生成⚡ dsh-overdrive
DSH 界的 OpenClaw:把 DeepSeek Harness 变成"看得见思考过程、可以随时指挥"的聊天智能体。
dsh-overdrive 是 Hermes Agent / OpenClaw 的多平台平替,但基于 DeepSeek Harness —— 桥接进 WhatsApp · Telegram · Discord · Slack · 飞书 · 钉钉 · 企业微信 —— 做到了它们做不到的事:每一步思考和工具调用都在聊天里可见,危险操作永远等你点头。
MIT License
CI
DSH
npm
Platforms
Listed in awesome-dsh-plugin
为什么不用 OpenClaw?
Hermes / OpenClaw 是"终端智能体 + 20 多个聊天频道",但它是黑盒——你只看到答案,看不到过程。
DSH 的 append-only session log 是它们抄不走的。dsh-overdrive 把这份能力变成聊天原生的体验:
- 🧠 看得见思考 —— /trace 把 agent 的推理与工具调用轨迹回放成摘要卡片,就在聊天里
- 🤖 指挥一个团队 —— /task 派发并行子任务,/cron 0 9 * * * …
展开完整文档(README 剩余 1 节)
⚡ dsh-overdrive
DSH 界的 OpenClaw:把 DeepSeek Harness 变成"看得见思考过程、可以随时指挥"的聊天智能体。
dsh-overdrive 是 Hermes Agent / OpenClaw 的多平台平替,但基于 DeepSeek Harness —— 桥接进 WhatsApp · Telegram · Discord · Slack · 飞书 · 钉钉 · 企业微信 —— 做到了它们做不到的事:每一步思考和工具调用都在聊天里可见,危险操作永远等你点头。
MIT License
CI
DSH
npm
Platforms
Listed in awesome-dsh-plugin
为什么不用 OpenClaw?
Hermes / OpenClaw 是"终端智能体 + 20 多个聊天频道",但它是黑盒——你只看到答案,看不到过程。
DSH 的 append-only session log 是它们抄不走的。dsh-overdrive 把这份能力变成聊天原生的体验:
- 🧠 看得见思考 —— /trace 把 agent 的推理与工具调用轨迹回放成摘要卡片,就在聊天里
- 🤖 指挥一个团队 —— /task 派发并行子任务,/cron 0 9 * * * … 用自带调度器安排定时任务
- 🔒 危险操作你说了算 —— 危险工具调用会暂停,直到你点 ✅ 同意 / 🚫 拒绝(Telegram / Discord / Slack / WhatsApp 原生按钮)
- 🚀 一条命令部署 —— docker compose up,扫码即用。多数平台无需公网 URL。
效果长这样
纯文本版
你: 帮我看看这个项目有多少个包 Agent: 📋 轨迹(2 步) 🧠 分析消息 🛠️ mock.tool: echo ✅ Mock agent received: 帮我看看这个项目有多少个包
你: /task 写一句营销口号 Agent: 🤖 子任务已派出 ✅ 任务完成 5c399346…
你: /cron 0 9 * * * 每天给我一条技术新闻 Agent: ⏰ 定时任务已注册
你: dangerous rm -rf / Agent: ⚠️ 需要批准:执行危险操作(120s 内有效) [✅ 同意] [🚫 拒绝] ← 点一下,agent 继续或停止
🎬 完整演示剧本 → docs/demo.md(中英双语)
按 docs/demo.md 的 3 分钟剧本录制:普通对话 → /trace 轨迹回放 → /task 子任务 → /cron 定时任务 → 审批按钮 → 收尾。
支持的平台
| 平台 | 接入方式 | 状态 |
| Telegram | Bot API(长轮询) | ✅ 真机验证通过(2026-08-16) |
| WhatsApp | Baileys + 扫码配对,原生交互按钮 | ✅ |
| Discord | Bot token,原生按钮 | ✅ |
| Slack | Socket Mode(免公网 URL) | ✅ |
| 飞书 | 官方 SDK,长连接 | ✅ |
| 钉钉 | Stream 模式(WebSocket,免公网 URL) | ✅ |
| 企业微信 | 回调 API(AES 加解密) | ✅ |
| CLI | stdin/stdout(开发与 E2E) | ✅ |
快速开始
Docker 一条命令(推荐):
git clone https://github.com/temotee2103/dsh-overdrive && cd dsh-overdrive
cp deploy/.env.example .env # 填 DEEPSEEK_API_KEY + TELEGRAM_BOT_TOKEN
docker compose -f deploy/docker-compose.yml up -d --build
控制台 http://localhost:3190/ DSH Web UI http://localhost:3080/
已有 DSH?一行装完:
npx dsh-overdrive-setup # 引导向导:API key + 平台凭据(实时验证)
dsh plugin --profile web add @dsh-overdrive/gateway-core # 装插件
npx dsh-overdrive-gateway # 起 gateway
gateway-core 的 token 配置:
- 图形界面(推荐给非技术用户):装好插件后,在 DSH Web 设置 → Plugins → overdrive 里填 Telegram Bot Token(保存后重启 dsh web 生效)。
- 进程内原生模式:设置 DSH_TELEGRAM_TOKEN=(@BotFather 创建)后重启 dsh web,直接在 DSH 里聊 Telegram。
- 旧外部 gateway 模式:设置 DSH_OVERDRIVE_TOKEN=(DSH 与 gateway 进程共用);或
- 在 profile 的 cordis.patch.yml 覆盖:- update: [{ id: overdrive-gateway-core, config: { token: } }]
- 未配置任何 token 时插件以禁用态加载(打印告警、桥接不启动),不会阻塞 dsh 启动,可随时补配后重启。
给 bot 发第一条消息后,输入 /help 查看全部命令。完整方案见 docs/quickstart.md
不会写代码?这样上手
不需要会编程。dsh-overdrive 的设计是:一个人装好,全家都能用。
1. 找一位懂行的朋友,花 10 分钟
2. 把下面这条发给他:
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/temotee2103/dsh-overdrive/main/install.sh | bash
Windows: 下载 install.ps1,右键 → "使用 PowerShell 运行"(或双击)
3. 安装器只问你 3 个问题(API key → 平台 → bot token),然后自动全部搞定
4. 之后你只需要聊天:发消息、/help 看命令、危险操作点 ✅ 同意 / 🚫 拒绝
English: No coding needed — have a friend run the 10-minute installer once; afterwards you just chat.
聊天命令
| 命令 | 作用 |
| /help | 命令列表 |
| /trace | 回放最近一轮轨迹(思考 + 工具调用) |
| /task | 派发子任务 |
| /cron | 定时任务(自带 5 字段调度器) |
| /crons | 查看已注册的定时任务列表(含下次触发时间) |
| /cronrm | 删除定时任务 |
| /remind in 10 分钟 | 一次性定时提醒(也支持 at HH:MM) |
| /remember | 记住关于你的事(长期记忆) |
| /recall | 回忆相关记忆 |
| /forget | 删除一条记忆 |
| /send | 把本地文件/图片发到当前聊天 |
| /status | 查看适配器/记忆/定时任务状态 |
| /digest · /digest daily 09:00 | 即时或定时每日摘要 |
| /feed add · /feed list · /feed rm | RSS 订阅推送到聊天 |
| /agents | 子任务状态(简化) |
| /new | 重置会话 |
agent 产出的文件(图片/文档)会在每轮 turn 结束后自动发送回聊天(扫描 agent 工作目录,经协议 base64 传输)。
架构
flowchart LR
subgraph PLAT["你的聊天软件"]
WA[WhatsApp] & TG[Telegram] & DC[Discord] & SL[Slack]
FS[飞书] & DT[钉钉] & WM[企业微信]
end
subgraph GW["dsh-overdrive gateway(独立 Node 进程)"]
AD[平台适配器] --> CORE[会话映射 · 白名单 · 命令 · 轨迹卡片]
end
subgraph DSH["DeepSeek Harness(docker)"]
PLUGIN[gateway-core 插件] --> AG[DSH Agent]
AG --> LLM[DeepSeek / 任意模型]
AG --> TOOLS[工具 · 沙箱]
end
PLAT |Remote Session Driver / HTTP+WS+token| GW
GW |协议| PLUGIN AG -. session/event .-> PLUGIN
packages/gateway-core 是一个 DSH 插件(已备好 dsh.bundle.patch),对外暴露 Remote Session Driver API;packages/gateway 是独立的多平台网关。"灵魂"——轨迹、审批、多智能体——都在插件里,不依赖平台适配器,经得起插件 API 变动。
开发
npm install
npm run build
npx vitest run # 128+ 单元测试
npm run e2e # 全链路 mock E2E(消息 / 审批 / 白名单)
文档
- 📦 快速开始 · 🎬 演示剧本 · 📣 渠道清单 · 📤 npm 发布
- 🧪 平台验收清单
- 📐 设计文档 · 🔭 DSH 接口调研
路线图
- [x] M1–M2b:协议、真实 DSH 桥接、国际平台
- [x] M3:飞书 / 钉钉 / 企业微信
- [x] M4:轨迹卡片、/task /cron、流式打字、图片收发、WhatsApp 原生审批按钮
- [x] M5:docker-compose 一键部署、Web 控制台、MIT + CI、npm 分发
- [x] v0.2a:语音转写 ASR(OpenAI 兼容端点,ASR_API_KEY)、飞书原生交互审批卡片、钉钉 actionCard 审批
- [ ] v0.2b:个人微信(实验性)
📚 收录情况
已被社区索引与精选列表收录:
| 列表 | 收录内容 |
| awesome-dsh-plugin(社区精选) | dsh-overdrive#gateway-core |
| dsh-index(官方插件索引) | dsh-overdrive |
| 0xsline/awesome-deepseek-harness | dsh-overdrive |
| Dominic789654/awesome-deepseek-harness | dsh-overdrive |
| Anil-matcha/awesome-dsh-plugin | dsh-overdrive |
| losebird/dsh-plugin-market | dsh-overdrive |
开源协议
MIT © dsh-overdrive contributors预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
temotee2103/dsh-overdrive
把 DSH 接入各大聊天平台,随时指挥并查看思考轨迹
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7
这是你的仓库?认领条目