dsh-tuitui-bot:在推推 IM 里直接对话 DeepSeek Harness

前言

DeepSeek Harness(DSH)把智能体能力拆成可组合的插件:模型路由、工具、渠道前端各自独立。若团队日常协作在奇虎 360 推推(Tuitui)里完成,常见做法是在推推外另开终端或 Web 控制台跑 dsh,再把结果贴回 IM,上下文和审批流都割裂。

下面介绍社区插件 @eayonlee/dsh-tuitui-bot(维护者 EayonLee):把推推机器人做成 dsh 的渠道前端,在单聊、群聊和团队频道帖子里直接与 Harness Agent 对话,消息经中间件链归一化后进入 dsh,回复以流式文本、交互卡片和文件回传等形式回到推推。

这是什么

该插件基于 deepseek-harness,传输层使用推推官方 SDK @qihoo/tuitui-bot-sdk。数据路径可概括为:推推消息 → 归一化 → 洋葱式中间件链(访问控制、历史缓冲、触发门控、清洗、限流、命令、并发串行等)→ dsh Agent;Agent 的文本、工具调用、审批、问答与交付物再映射为推推消息、原生交互卡片或原地编辑的流式输出。

在 SkillHub 社区目录中分类为「模型推理」;仓库采用 MIT 许可证,当前 npm 包版本为 0.1.9,要求 Node.js >= 20.3.0、dsh >= 0.2.0 且 < 0.3.0(README 徽章标注与 dsh 0.2.1-rc.5 配套使用)。

核心功能

以下能力均来自项目 README 的功能说明与配置定义。

三种会话形态:单聊、群聊、团队频道帖子(含回帖串),各自维护独立会话上下文。

流式与交互:开启流式时,首条消息取得 msgid 后通过 modifyText 原地刷新,避免刷屏;不可流式时降级为追加片段。审批与提问可使用推推交互卡片,点击后 modifyInteractive 更新为最终状态。

富媒体与回传:图片、文件、语音、视频可落地到本地媒体目录供 Agent 读取;可选视觉工具 tuitui_describe_image(需 vision.enabled)。Agent 可通过 tuitui_send_file 及 present 交付物把文件发回当前会话。

群聊触发与智能插话:群聊默认 mentionPolicy 为 smart——模型根据最近群聊上下文判断是否插话;也可设为 require(仅 @)或 always(每条都回)。智能判定提示词、间隔与历史条数可在 dsh 设置页编辑。

访问控制:单聊、群聊、帖子分别支持 open / allowlist / blocklist / disabled 四档;黑白名单以域账号、UID、群 ID 或频道 ID 等形式配置,allowlist 且名单为空时为 fail-closed。

命令与快捷指令:内置 /new、/compact、/model、/preset、/status、/stop 等,并同步到推推快捷指令面板;另有 /auth 做访问控制自检、/bot-ping 测延迟等。

推推原生能力(可选):通过 client.agent 上报模型与工具步骤供客户端展示;私有化部署可覆盖 apiBaseUrl / websocketBaseUrl。

安装与启用

先在推推机器人后台创建机器人,取得 AppID 与 AppSecret,并准备 DeepSeek API Key。

安装插件(profile 名 tuitui 为 README 示例,可按需改名):

# 一键安装脚本(自动建 profile、装包、提示配置;npm 装不上会自动回落 GitHub)
sh install.sh

# 从 npm 安装(推荐)
dsh plugin --profile tuitui add @eayonlee/dsh-tuitui-bot

# 从 GitHub 安装(npm 不可达时用,仓库已提交构建产物 lib/,无需本地构建)
dsh plugin --profile tuitui add github:EayonLee/dsh-tuitui-bot

配置凭据并启动:

export TUITUI_BOT_APPID="你的AppID"
export TUITUI_BOT_SECRET="你的AppSecret"
export DEEPSEEK_API_KEY="你的 DeepSeek Key"

dsh --profile tuitui

也可不先设环境变量:启动后在 dsh 设置 → 推推机器人 填写 appId / appSecret,插件会调用 property.info() 校验并写入 profile 的 cordis.patch.yml。

高级配置可在同一设置页可视化编辑,或直接 patch cordis.patch.yml(注意 patch 为整体替换 config,需写全要保留的键)。团队频道默认 access.postMode 为 disabled,使用前需在访问控制中显式开启。

典型用法

经过上面的安装步骤后,在推推内即可使用:

  1. 私聊机器人:直接发送消息即可开始对话。
  2. 群聊:将机器人拉入群。默认智能模式下未 @ 时由模型判定是否回复;若只希望 @ 时响应,将 mentionPolicy 设为 require(或与 requireMention: true 一致的行为)。
  3. 团队频道:在频道发帖并 @ 机器人,或回复机器人所在帖子串。

会话管理可在聊天里发送斜杠命令,例如 /new 清空上下文、/model 切换模型、/stop 中止当前生成。群聊历史条数、闲置回收、单聊/群聊/帖子并发策略(queue、abort、merge、drop)等均在 README 配置表中说明,可按团队习惯调整。

适用场景与注意

适合谁:已在用 DSH 做代码与工具型 Agent、且协作主阵地是推推的团队;需要在 IM 内完成审批卡片、文件互传、群聊「该不该接话」等场景时,该插件比外挂控制台更贴合工作流。

运行与安全:插件随当前 dsh 进程权限运行,可读写配置的工作目录(默认 ~/.dsh-tuitui/workspace)、下载媒体文件并代表机器人发消息。安装前请阅读 GitHub 仓库 源码与 MIT 许可证;生产环境建议收紧 access.*、按需开启 sendFile.restrictPaths,并核对 DEEPSEEK_API_KEY 与推推凭据的保管方式。

SkillHub 上的插件目录由社区维护,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库与 npm 为准,使用前自行确认与本地 dsh 版本的兼容性说明(package.json 中 dsh.compatibility 字段)。

结尾

dsh-tuitui-bot 把推推 IM 接进 DSH 插件体系:同一套 Agent、工具与 preset,在同事已有的聊天入口里完成。目录页与源码如下,安装命令与配置以 README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜