dsh-companion-one:把压缩、记忆与陪伴收进一个 DSH 插件

前言

在 DeepSeek Harness(DSH)里长期对话,常见矛盾是:上下文窗口有限,而会话却一天比一天长。旧内容被折叠或丢弃后,模型很容易「隔几天就不认得你」。不少开发者会叠多个插件——一个负责压缩、一个记长期事实、一个管人设或陪伴——工具名和注入点互相抢占,维护成本往往不亚于调模型本身。

下面介绍维护者 27Synthesis 开源的 dsh-companion-one(社区目录分类:记忆)。它把自己定位为「单体陪伴插件」:五区可塑人格、七层长期记忆、内置上下文压缩、与其他记忆源的只读合并、沟通风格与 B 站文风学习、陪伴分寸与第一人称心声等能力放在同一个包里;默认不增加额外模型调用,持久化使用 Node 内置 node:sqlite(含 FTS5),不声明外部插件依赖。GitHub 仓库当前约 2 stars,版本 0.1.0,许可证 MIT。

这是什么

dsh-companion-one(npm 包名 companion-one)是面向 DSH ≥ 0.2(dsh-go)的自包含插件。它解决的核心问题是:在不大拆插件栈的前提下,让「记得住、压得住上下文、有人格与陪伴感、且省 token」可以在一套 SQLite 库、一套注入预算和一块面板里协同工作。

与「只接管记忆」或「只做压缩」的单一插件相比,它的设计强调:

  • 不代理网络、不改写请求;压缩通过 DSH Session surface replace 完成。
  • 静态导引常驻注册一次,动态上下文按预算一次性注入后丢弃,以利于 provider 的 KV 缓存。
  • 已安装其他记忆插件时,可只读扫描并合并,源数据不写回。

核心能力(与 README 一致)

七层长期记忆

记忆按 soul / user / project / fact / lesson / topic / rules 分层,可按对话对象(scope)隔离。同层语义相近会合并;fact 层同一键的新值会让旧值失效并可回溯。事实可设 valid_until,启动与周期性任务会清理过期项。检索使用 FTS5,辅以关键词兜底。

用户说「记住……」时,插件用正则写入 fact(auto:explicit),重复内容会合并。注入策略上:system 侧静态说明只注册一次;首轮注入 soul/user/rules 摘要;从第二条消息起注入关键词命中的 top-2;压缩后下一轮在 ≤300 token 预算内重新注入。

内置上下文压缩

提供与宿主压缩语义一致的四类能力,数据与记忆同在库内:

  • compress:只接受比原文更短(约 85% 阈值)的摘要,保留最近 3 条原文。
  • decompress:按块引用还原被折叠内容。
  • search_context:对归档摘要与原文 FTS5 BM25 检索。
  • acp_status:上下文压力、可压缩范围与块列表。

压力提示分 45% / 75% / 95% 三档;压力 ≥95% 时默认只注入一句提示,由当前模型自行决定是否调用 compress,而不是插件再跑一轮总结模型。

陪伴行为、心情与心声

按人隔离(session header → 绑定 → 默认 → global)。惦记清单 followup 支持 add / list / done / silence,带到期时间与大小标记,并有限度的提醒克制。危机相关用语做 0–5 级词法分级,仅用于调整回应分寸,不替代专业判断。

心情用 valence / energy 两因素;heart_voice 每轮可写一句 20–60 字第一人称心声,落库展示,不写回人格叙事。

可塑人格(五区模型落地)

感知、情绪、执行、叙事、表达五区并行;落到 persona_reaction、persona_chain、persona_narrative 与四个阀门(注意、解释、情绪阈值、目标优先级)。每轮最多微调一个阀门,注入预算 ≤150 token;promote / rollback / freeze 管理叙事版本。

风格、文风与 fishtalk

从用户原话统计句长、口头禅、标点等,产出 ≤200 token 的风格卡。内置 fishtalk 判定规则,每轮 turn/end 自检「鱼八股」,下一轮可纠偏。学习中心支持 B 站分区或关键词学习任务、语料投喂与文风包蒸馏;B 站联网与语料蒸馏依赖本机已安装 fishtalk 插件,缺失时返回 fishtalk_missing,其余功能仍可用。关闭 voicePack 可每轮少注入约 60–80 token。

与其他记忆源合并

只读扫描 Mnemon 运行时记忆、项目文档及 DSH_HOME 下其他含记忆表的 SQLite;跳过疑似密钥与过短碎片,单次上限 500 条,导入幂等,重复自动合并。

面板、工具与 API

8 个页签面板(概览 / 记忆 / 设定 / 学习 / 压缩 / 惦记 / 风格 / 人格),13 个对话工具,dshGo 上还有「陪伴速览」面板与输入框上方 moodstrip。HTTP 写操作为 POST /companion-one/api,JSON body 带 op 字段;GET 与错误 Content-Type 会被拒绝,以降低本机端口被跨站滥用的风险。

省 token 的默认策略(简述)

  • 零额外模型调用(无 staging / observer 式二次总结)。
  • 动态注入预算(README 记载):首轮快照 300、关键词命中 120、压缩后快照 300、风格卡 200、人格阀门 150(token),用完即弃。
  • 压缩只收确实更短的摘要;面板压缩页可查看估算用量与块级节省。

安装与启用

运行要求:Node.js ≥ 22.13,DSH ≥ 0.2(dsh-go)。

在已准备好的插件源码目录中,README 提供两种方式(原文如下,不含获取源码步骤):

# 方式一:link 安装(源码即部署,改完重启引擎生效)
dsh plugin --profile web add link:$(pwd)

# 方式二:手动放进插件目录
cp -r . "$DSH_HOME/dsh-go/plugins/companion-one"

装好后在 设置 › 本机引擎 › 重启;面板出现在 设置 › 陪伴 或 插件 › 陪伴,对话中会注册 13 个工具。修改 lib/ 或 index.js 需重启引擎;修改 client.js 刷新面板页面即可。卸载插件不会删除数据库,重装后记忆可恢复。

源码与问题跟踪:GitHub — 27Synthesis/dsh-companion-one。

配置开关

面板「陪伴 › 概览」可一键开关;也可在 bundle 中预置(节选):

- insert:
    - id: companion-one
      name: companion-one
      config:
        compression: true
        memory: true
        companion: true
        style: true
        persona: true
        # dbPath: /absolute/path/companion-one.db

常用项包括:memory、compression、companion、style、persona(默认开);voicePack(文风包,关可省 token);packScene(固定场合语气);personaFrozen(人格只读)。完整表格见仓库 README「配置」一节。

典型用法

1、用工具维护记忆与压缩

对话中模型可调用记忆五件套(memory_add、memory_search 等)与压缩四件套(compress、decompress、search_context、acp_status)。上下文变长且面板显示压力升高时,由模型在适当时机提交更短的摘要折叠较早轮次;需要核对细节时用 decompress 或 search_context 拉回块内容。

2、惦记与心声

用 followup 的 add 记录待关心事项与到期时间;用 list / done / silence 管理。每轮可用 heart_voice 写一句心声,在概览面板查看。

3、人格与风格

用 persona 查看状态或 promote 提交新叙事;需要冻结时用 freeze。用 style_card 查看或开关风格卡。若要从其他插件迁入记忆,在面板记忆页走只读扫描与导入流程(对应 API 的 memoryImportScan、memoryImportRun)。

4、HTTP API 示例形态

向本机引擎发 POST(具体主机与端口以你的 DSH 部署为准):

{"op": "overview"}

写操作须 POST 且 Content-Type: application/json;常用 op 还包括 memories、blocks、persona、setSetting 等,完整列表见 README。

数据、隐私与权限

记忆、压缩块、风格卡、人格轨迹、心情与心声默认落在:

<DSH_HOME>/companion-one/companion-one.db

插件本身不向云端同步;仅学习中心 B 站任务会联网(经 fishtalk)。导入合并为只读,疑似 sk-、ghp_ 等密钥形态会跳过。

注意:插件以当前 DSH 本机引擎的进程权限运行,可读写上述数据库并暴露本机 HTTP API。安装前请自行查阅源码与 MIT 许可证,确认与你的工作流和安全策略相符。DSH 社区插件目录(如 SkillHub 上的条目)为社区索引,与 DeepSeek / 幻方无官方从属关系。

适用场景与取舍

更适合:希望在一个插件里同时解决长期记忆、会话压缩、陪伴节奏与人格演化,且希望控制 token 与避免多插件冲突的 DSH 用户;需要从 Mnemon 等来源迁移记忆但不改源数据的生产力场景。

需要知晓:与 billion-context 等插件若争用同名压缩工具,本插件会整体让位、不抢注册;记忆除「记住……」外不自动从闲聊抽取,以减少错误沉淀;学习中心的高级文风能力依赖 fishtalk。

结尾

dsh-companion-one 把陪伴系统里最常见的一串能力收成单体:七层记忆、压缩引擎、可塑人格、风格与心声,并默认以「少调用、少重复注入」控制成本。若你正在 DSH 上搭长期对话智能体,可以从官方 README 的安装与配置入手,用面板 compression / 记忆页看清 token 与压力,再按需开关 voicePack 与人格 promote。

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

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

小夜