DSH 会话人格插件:为飞书聊天增加人格与表情

前言

DeepSeek Harness(DSH)目前以原生插件和「频道」会话为主,会话层面的个性化能力有限。当需要在某个 DSH 会话中模拟特定人格、使用专属表情,或让该会话在飞书群中自主参与对话时,现有方案往往需要手动转发消息或通过复杂脚本拼凑。

下面介绍 dsh-task-personas 插件,它为 DSH 的飞书会话提供人格切换、表情库和自主群聊能力。插件维护者 chencujinlin,开源在 GitHub。

插件定位

dsh-task-personas 是一个 DSH 插件,为单个会话添加「小鲸鱼」或「傲娇助手」两种预设人格、表情库以及主动聊天与自主参与群聊的能力。每个会话可以单独设置,普通任务和新会话默认关闭。插件依赖配套的 IM Connect 人格扩展版,以实现飞书消息接收与原生发送。

核心功能

人格与表情

  • 支持两种预设人格:「小鲸鱼」和「傲娇助手」。在 DSH 频道目标会话的输入栏人格菜单中选择。
  • 表情库:导入 PNG / JPG / WEBP / GIF,填写名称与适用场景后收藏;也可收藏当前飞书会话收到的图片或原生表情。发布仓库不附带任何个人表情收藏。
  • 人格切换从下一次模型请求生效,聊天记录保留。使用 /new 或重置生成新会话时,不会继承旧人格;子智能体也不继承。

自主参与群聊

  • 在「群机器人」里查看其他机器人的 ID,选择可互聊的对象;为该群开启「自主参与群聊」。
  • 已开启自主参与的群:收到的真人消息与已选机器人消息都会进入模型判断,没有 5% 抽样、每分钟一次或每小时 12 次的群消息唤醒限制。
  • 连续消息先合并约 8 秒,再分批交给模型;每批最多 40 条未读消息。会话忙时排队,超过两分钟也不会丢弃实时未读消息。
  • 未读队列与最近 12 条已读背景分开;消息进入宿主模型输入事件后才确认已读。模型可以调用 feishu_social_skip,安静结束。
  • 台北时间 22:00–次日 08:00 不回应其他机器人,真人消息照常。夜间不补发机器人旧消息;机器人草稿发送前会再检查时段。
  • 旁观文字每条最多 500 字;未 @ 的图片、表情和文件提供占位,不自动下载或声称已看图。实时观察和未读队列暂存在内存,退出应用后不自动补发。
  • 可手动用「补读接入后群消息」读取该会话首次接入后的可见历史:最多查询 200 条,最近 40 条作为背景;模型不会逐条补答旧消息。

主动聊天

  • 人格菜单的「主动聊天」控制冷场开聊:30~90 分钟检查、安静至少 15 分钟、基础概率 30%。
  • 图片和文字保留发送频率保护,未确认的发送不自动重试。发送目标由当前会话绑定决定,模型不能任意指定收件人。

安装与启用

环境要求

  • DeepSeek Harness 桌面端:已验证版本 0.2.1-rc.2。
  • Node.js:22 或更高版本(用于本地开发与验证,不影响安装包)。

桌面界面安装

在 v0.7.0 Release 下载两个安装包:

  1. michengai-dsh-im-connect-1.0.8-personas.6.tgz:配套 IM 插件。
  2. dsh-task-personas-0.7.0.tgz:人格插件。

在 DSH 的「插件 → 添加插件」中依次安装这两个本地安装包并启用,然后重启 DSH。

已有 IM Connect 用户使用第一个包替换上游包;如界面提示同名包已安装,先通过原生插件管理器移除旧包,再安装扩展版。

macOS 桌面端 CLI 安装

先完全退出 DSH,再使用桌面端自带的 CLI:

dsh_bin='/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh'
"$dsh_bin" plugin --profile desktop add --ignore-scripts \
  'https://github.com/chencujinlin/dsh-task-personas/releases/download/v0.7.0/michengai-dsh-im-connect-1.0.8-personas.6.tgz' \
  'https://github.com/chencujinlin/dsh-task-personas/releases/download/v0.7.0/dsh-task-personas-0.7.0.tgz'

Desktop 的 profile 与普通全局/Web CLI 独立。安装后打开桌面应用,在插件页确认两项均已启用。发布包包含预构建 JavaScript,无需修改应用包或编译宿主;--ignore-scripts 跳过依赖安装脚本,本项目不需要执行这些脚本。若界面安装遇到 Ignored build scripts: protobufjs,使用上述命令,无需放宽全局脚本审批设置。

配置飞书凭据

在飞书应用后台配置相应权限及 im.message.receive_v1 事件订阅,发布应用版本使变更生效:

  • 基础私聊、回复、图片:消息接收/发送及图片上传权限。
  • 无需 @ 读取群消息:获取群组中所有消息,如 im:message.group_msg。
  • 接收其他机器人群消息:im:message.group_msg.include_bot:read。
  • 手动补读历史、读取新版卡片正文:群消息和消息读取权限。

权限名称可能随平台变化,以飞书接收消息文档和历史消息文档为准。仅有 @ 权限时,本地开关不能让平台推送未 @ 消息。

使用步骤

  1. 在 IM Connect 中配置飞书账号并建立会话。
  2. 打开 DSH「频道」中的目标会话,在输入栏的人格菜单选择「小鲸鱼」或「傲娇助手」。
  3. 想让机器人参与群聊时,为该群打开「自主参与群聊」。
  4. 在「群机器人」里查看其他机器人的 ID,选择可互聊的对象;在「表情库」里导入或收藏表情。

数据与隐私

插件默认在 DSH_HOME(未设置时为 ~/.dsh)下保存:

  • task-personas/sessions.json:人格选择。
  • task-personas/social.json:聊天设置、已选机器人和时间状态。
  • task-personas/stickers/:个人表情素材及元数据。
  • IM Connect 自己的会话映射、凭据与日志继续由桥接管理。

这些运行数据不属于源码,也不应提交到 GitHub。聊天内容会交给你在 DSH 中选择的模型服务处理;发送消息仍调用飞书接口。项目没有额外的聊天收集服务,公开发布包不包含开发者的聊天、账号、群 ID、凭据、截图或本机安装状态。管理接口沿用 DSH 登录认证与跨站校验。

开发与验证

本地开发需要 Node.js 22 或更高版本:

npm ci
npm run check
npm run check:bridge
npm test
npm run test:privacy

测试使用合成数据和模拟飞书 SDK,不发送真实消息。宿主集成测试使用根目录锁定的 DSH SDK 开发依赖;可用 DSH_SDK_ROOT 指定另一套 SDK 根目录。当前覆盖 59 项行为测试,包含全量读取、106 条消息分批、忙时保留、@ 抢占、夜间规则、鉴权和原子写入失败。

许可与来源

  • 主插件:MIT,见 LICENSE。
  • 人格卡来自 Derpyu520/qq-bridge,固定提交及校验值见 roles/source.json;原文保存在 roles/upstream/,活动卡片为飞书适配版。
  • 配套 IM 插件基于 MichengAI/dsh-im-connect 1.0.8,遵循 Apache-2.0;见配套说明和本地扩展记录。

本项目未移植 QQ 拍一拍、QQ 收藏同步或群友黑话后台学习。它是独立社区扩展,不是 DSH、飞书或上游 IM Connect 的官方发行版。

适用场景与注意

  • 适合需要在某个 DSH 会话中模拟特定人格、使用专属表情,或让该会话在飞书群中自主参与对话的场景。
  • 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证。
  • 配套 IM Connect 人格扩展版会替换同名 IM Connect 包,不要并行启动两份桥接。

结尾

dsh-task-personas 通过人格、表情与自主群聊能力,为 DSH 的飞书会话提供了更贴近真实聊天的交互方式。如需了解更多细节或反馈问题,可访问:

  • 插件目录页:https://www.skillhub.cn/plugins/chencujinlin/dsh-task-personas
  • GitHub 仓库:https://github.com/chencujinlin/dsh-task-personas
羽毛球分组比赛记分
小程序二维码

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

小夜