dshplugin.devDeepSeek Harness Plugins
DSH Companion plugin logo
DeepSeek Harness Plugin

DSH Companion

2
Published by yyh-001

DeepSeek 陪伴模式插件 —— 人设、记忆、聊得下去:SOUL 人格 + Hermes 长期记忆,可选 QQ 通道

Sessionscompanioncompanion-modedeepseekdeepseek-harness

Get this plugin

Review the source, then continue to the publisher.

dsh plugin add dsh-companion@latest
Get this plugin
Share on X ↗

About this plugin

Source snapshot 8/13/2026

dsh-companion — 人设、记忆、聊得下去

DeepSeek 陪伴模式 · dsh-companion — 人设、记忆、聊得下去

MIT dsh-plugin DeepSeek 陪伴模式 DeepSeek Harness Hermes memory selfloom compatible


聊天 Agent 做陪伴最容易翻车的三件事:

  • 每回合重新自我介绍,像刚上线的客服
  • 聊过就忘,上次说好的事下次不认账
  • 人格和记忆各写各的,模型看到的是一锅粥

dsh-companion 是 DeepSeek Harness 的陪伴插件:人格(SOUL)+ 长期记忆(Hermes 风格)+ 可选 QQ 通道,agent 核心(回合循环、会话持久化、搜索、工具注册)全部由 DSH 提供。
数据来自 selfloom(单用户陪伴 agent 内核)——记忆文件零迁移SOUL.md / USER.md / MEMORY.md 直接复用。

想配一套表情包?另装 dsh-expression(语义检索 + 发图,经本插件的 QQ 通道)——两者独立、可选搭配。


安装

在 DSH profile 目录(如 ~/.dsh/profiles/web/):

pnpm add file:/path/to/dsh-companion
# 或从 GitHub:
pnpm add github:yyh-001/dsh-companion

配置

agent preset 里加一行(最简单的做法:从 DSH 的 standard 预设拷贝一份,删掉 persona 行——人设由本插件接管,同一作用域不能注册两个同名段):

- id: selfloom-companion
  name: dsh-companion
  config:
    memoriesDir: .selfloom/memories   # 相对路径按会话工作目录解析,也可写绝对路径
    # 可选:QQ 通道——appId/secret 来自 QQ 开放平台(q.qq.com)机器人凭据
    qq:
      enabled: true
      appId: '1905247119'
      clientSecret: 'xxxxxxxxxxxxxxxx'

再补一个 preset.yml(显示名):

name: 陪伴模式
description: 陪伴 Agent——人设 + Hermes 长期记忆 + 技能目录,核心由 DeepSeek Harness 提供。

装完后,设置 → 通用设置 → Agent 预设,选 陪伴模式 · 自定义,再开新会话即可开聊:

DeepSeek 设置:Agent 预设选「陪伴模式 · 自定义」

装完即用

用户: 你是谁
模型: (读 SOUL.md 的人格 → 以 suki 的身份、损友的语气回应)

用户: 记住我喜欢喝 XX
模型: (调 update_memory 写进 USER.md → 下次会话还记得)

用户: 发表情包
模型: (若装了 dsh-expression → 检索图库 → 经 QQ 通道发图)

它做什么

能力说明
人设段 deployment:personaSOUL.md(人格)+ USER.md / MEMORY.md(长期记忆)渲染成单文档,遮蔽部署默认人设;每次组装实时渲染,写入后立即刷新,另有 60s 定时兜底
update_memory 工具长期记忆增删改查:add / replace / remove(§ 条目级)、set / clear(整文件);字符预算(USER 1375 / MEMORY 2200)+ 超预算合并引导
QQ 通道(可选)官方 SDK 网关:QQ 消息经 agent.send 进陪伴会话,回复经表达层分块回发(带引用回复);提供 companionQq 服务(sendImage / isOnline)给其他插件消费
companion_status / qq_status记忆用量、人设文档、QQ 在线状态自检

日常命令(模型视角)

update_memory target=user action=add content=「喜欢喝茶」   # 写记忆
update_memory target=memory action=replace old_text=…       # 合并/更新条目
companion_status                                            # 看记忆用量
qq_status                                                   # 看 QQ 网关状态

给模型的三条铁律

完整约定见人设段与 update_memory 工具描述。

  1. 接着关系聊:不自我介绍、不「有什么可以帮你」、不客服腔
  2. 记忆只存持久事实(偏好/边界/约定),不存任务进度和临时路径;预算快满先合并再写
  3. 回复按表达层拆气泡:短闲聊一句一条,长文干活保持完整段落

接到你的 Agent

组件说明
dsh-companion本插件:人设段 + Hermes 记忆 + QQ 通道(companionQq 服务)
dsh-expression表情包插件:语义检索 + 经 companionQq 发图
selfloom数据源:SOUL.md / USER.md / MEMORY.md(§ 条目 + 预算,零迁移)
dsh-companion/
  index.js        插件本体:人设段 + 记忆工具 + QQ 挂载
  qq.js           QQ 通道:官方 SDK 网关 ↔ agent 会话桥接 + 分块投递 + companionQq 服务
  package.json    name / inject / deps
  README.md
  LICENSE

已知限制

  • 记忆文件跨会话共享,当前每个会话的 store 实例各自读写同一批文件——单用户场景无问题;
  • QQ 通道是单目标 MVP:回复发回"最近聊天"目标;扫码登录尚未移植(凭据直接配置即可用);
  • 表情包管理(上传/删除/改元数据)不在此插件——那是 dsh-expression 图库维护的事;
  • 提醒场景尚未接入(DSH 原生 @deepseek-ai/dsh-schedule 可直接覆盖)。

Roadmap(后续目标)

近期——把通道和调度补齐

  • QQ 扫码登录webServer 注册路由 + 手机 QQ 扫码换凭据,替代手填 appId/secret(移植 selfloom qq_login.ts
  • 多聊天目标:按 QQ chatId 区分会话/回复目标,替代"最近聊天"单目标 MVP
  • 提醒接入dsh-schedule 行进陪伴预设,覆盖 schedule_follow_up / cron_manage 场景
  • 完整预设示例:仓库内 examples/companion.agent.cordis.yml(基于 standard 的完整可复制文件)

中期——记忆与主动性

  • 记忆摘要压缩:长对话自动摘要推进(移植 selfloom ensureSummary,Hermes compaction 语义)
  • 记忆服务 host 化:出现真正的跨会话消费者(如 QQ 通道/其他插件读记忆)时,把 store 提升为 host 侧服务
  • 主动回合:心跳/空闲自省(对应 selfloom heartbeat),结合 dsh-schedule 定时开口
  • 媒体入站:QQ 图片消息进会话(DSH attachments 服务对接)

工程化

  • 测试套件:记忆条目/预算、分块投递、QQ 消息映射的单元测试
  • TypeScript + 构建链:插件代码量上来后走官方 tsdown 模板,main 指向编译产物
  • 发布形态:保持 GitHub 分发(pnpm add github:…),或按需发布 npm

License

MIT