dsh-plugin-soul:可写、可回滚、每轮在场的 DSH 人格

前言

在 DeepSeek Harness(DSH)里给助手定人格,常见做法是改一次配置、重启生效:官方 @deepseek-ai/dsh-persona 的 config 主要是静态字符串(prefix / suffix / complete / includeRuntimeContext),动人格往往要改 profile patch 并重启。若希望人格像「自我」一样随对话积累、又能用 git 回滚,就需要另一套存储与注入机制。

dsh-plugin-soul(维护者 CC19990113,社区分类「趣味换装」)面向 DSH,在 ~/.dsh/soul/ 维护 Markdown 人格文件,每轮通过 system prompt 注入;支持受闸门约束的自改、日笔记与升格、journal→dream 反思,以及设置页 人格 tab。当前 npm 版本为 0.4.0,许可证 MIT。插件以 DSH 进程权限读写本机文件,安装前建议通读仓库源码与许可证。

这是什么

一句话:给 DSH 一个可写、git 版本化、每轮重新读取的「自我」,而不是设定一次就冻结的静态 persona。

与官方 persona 的差异在于:本插件依赖 dsh-system-prompt 的 section.text 支持函数——assembly 时每轮读 ~/.dsh/soul/*.md,改 Markdown 后不必重启 DSH 即可在下一轮生效(插件自我升级改 lib/** 等仍须重启,见下文)。

记忆层:只管性格与对话

人格记忆与项目记忆 deliberately 分离,避免把 MEMORY.md 的注入预算(约 3000 字符)吃光。

MEMORY.md              长期人格记忆(每轮注入)
memory/YYYY-MM-DD.md   日笔记(不注入,由 soul_recall 检索)

适合记:关于我、关于你、对话里的事、教训、偏好变化。不适合记:项目代码、技术决策、环境配置、踩坑——这些应走项目记忆或其他通道。

升格规则:日笔记默认不注入;条目被 soul_recall 命中 ≥3 次 才够格,经 soul_memory 的 action:"promote" 写入 MEMORY.md 对应小节(CHANGELOG 会记录来源与命中次数)。当人类评分权重 ≥0.75 时,升格门槛可从 3 次降到 2 次。

人类评分与写入闸门

每条 assistant 回复操作栏增加三档:👎 / 😑 / 👍(挂在 conversation.chat.assistant-actions,与官方 👍👎 并列)。

权重由最近 20 条样本、半衰期约 7 天的加权平均映射到 [0,1];样本少于 3 条时不设闸门(冷启动)。大致效果如下:

权重 效果
无样本 / 不足 不设闸门
<0.35 拒绝写人格(仅允许 journal / 日笔记)
0.35 ~ 0.6 单次小修 ≤300 字符
≥0.6 正常写入 ≤800 字符
≥0.75 日笔记升格门槛 3→2 次

每次人格写入会把当时的 rating= 记入 CHANGELOG.md,便于事后核对「这条是在什么评价下写进去的」。

核心能力概览

层 做什么
注入 每轮读 ~/.dsh/soul/*.md 进 system prompt(README 称约 2.1k 字符 ≈ 535 tok)
自改 soul_update:RULES.md 只读;单次 ≤800 字符、每日 ≤3 次;why 必填;落 git + CHANGELOG
反思 soul_journal → soul_candidates(≥3 次且跨 ≥2 天)→ soul_dream 合并升格并写 DREAMS.md
升级 soul_propose_upgrade / soul_apply_upgrade(须 confirm:"APPLY");白名单 + node --check,失败整体还原
评分 三档评价驱动写入闸门与升格门槛

首次加载会在 ~/.dsh/soul/ 播种并 git init,典型布局:

~/.dsh/soul/
  IDENTITY.md   名字 / 化身 / 口癖(可写,1200 字符预算)
  SOUL.md       声音 / 立场 / 边界(可写,4000)
  USER.md       对用户的模型(可写,2500)
  MEMORY.md     长期人格记忆(可写,3000)
  RULES.md      硬规则(只读,2000)
  journal/      日间观察
  memory/       日笔记
  DREAMS.md     反思记录
  CHANGELOG.md  每次自改的 why

安装与启用

推荐:DSH 内置安装器

设置 → 插件 → 添加插件,填写:

CC19990113/dsh-plugin-soul

也可填完整仓库地址 https://github.com/CC19990113/dsh-plugin-soul,或 npm 包名 dsh-plugin-soul。装完重启 DSH。

手动(开发用)

在本地克隆仓库后执行(资料原文,非日常用户必选路径):

cd ~/www/dsh-plugin-soul
node install.mjs          # 预演:symlink + patch(自动备份)
node install.mjs --apply

然后重启 DSH。卸载:删除 symlink 与 patch 中 id: soul 段。

要求 Node.js ≥20(见 package.json engines)。

典型用法

安装并重启后,可直接用自然语言驱动,README 示例包括:

  • 「把 IDENTITY.md 里的名字定成 XX」
  • 「以后都用中文,记到 USER.md」
  • 「跑一次 soul_dream 看看有什么值得沉淀的」

常用工具(完整列表见仓库 README):

工具 用途
soul_status 预算、今日额度、候选、最近反思
soul_read / soul_history 读文件、提交与 diff
soul_update / soul_rollback 改写与回滚
soul_journal / soul_candidates / soul_dream 观察 → 候选 → 反思
soul_remember / soul_recall / soul_memory 日笔记、检索、升格
soul_ratings 评分样本与闸门
soul_propose_upgrade / soul_apply_upgrade 插件自身升级提案与应用

设置页注册 人格 tab(settings.section,id: soul),通过同源 HTTP 读写状态与文件,例如 GET /dsh-plugin-soul/api/state、POST /dsh-plugin-soul/api/file 等(详见 README)。

若希望每晚自动反思,插件本身不带定时器;可用 DSH 的 schedule_create 建 daily 任务,prompt 中依次调用 soul_candidates、撰写短自省、soul_dream({apply:true, narrative:"..."})(README 有完整示例句)。

设计取舍与适用注意

  • 确定性管资格,模型管措辞:升格看次数、跨天与证据,不靠模型自觉。
  • 写入是安全边界:RULES.md 只读;自我升级仅允许 lib/**.js、templates/**.md;package.json、patch、README 不可通过升级改。
  • 攒着改:频繁自改会让 system prompt 前缀 KV cache 失效,成本略涨;宜按天/按次收敛。
  • 自我升级须重启 DSH 才生效。

适合:希望在 DSH 里长期维护「性格 + 对用户认识 + 对话记忆」、并用人 thumbs 约束写人格的开发者。不适合:把技术台账塞进人格层——请用项目记忆。

已知边界(仓库 README):真实浏览器 UI 未逐像素验收;GitHub 安装路径作者未在本仓库实测;对 DSH 0.2.1-rc.2 标 unknown;Windows 未测;/diff 为 git diff HEAD~1 -- <file>,非任意历史提交对比。

社区目录页:skillhub.cn 插件页(独立站点,与 DeepSeek / 幻方无官方从属)。源码与 issue:GitHub CC19990113/dsh-plugin-soul。

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

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

Xiaoye