dsh-persona-core:为 DeepSeek Harness 会话注入持久人格

前言

DeepSeek Harness(DSH)的插件化架构让开发者可以按需扩展能力。但每次新建会话,对话上下文从零开始,模型缺乏对长期关系的记忆,也难以保持稳定的人格设定。结果往往是:同一模型在不同对话中表现差异较大,需要重复说明偏好,或者需要在每次启动时手动粘贴角色设定。

下面介绍 dsh-persona-core。这个插件在所有 DSH 会话中维持一个统一的人格,通过结构化定义、状态管理、记忆系统和输出侧的口调补正,让模型在不同会话中保持一致的角色、语气和关系状态。

这是什么

dsh-persona-core 是 Tatumichi 维护的 DSH 插件,归类于「记忆」类。它为每一个 DeepSeek Harness 会话注入一个持续的人格,包括人格定义、工作/闲聊模式自动切换、情绪与关系状态(如冷热程度)、长期记忆、对「是不是老熟人」的模糊认知、本人专属的非公开过去,以及输出侧的口调修正。

插件通过 dsh 的扩展点在运行时注入动态上下文、修正模型输出,并维护一套本地状态文件。数据保存在 $DSH_HOME/persona-core/(默认 ~/.dsh/persona-core/),权限为 0600,仅用户本人可读,不会发送到外部。

核心功能

1. 结构化人格定义

人格骨格保存在 persona.yaml 中。首次安装后,插件会在此文件中写入默认值,包含名称、人设等基础信息。修改后无需重启即可生效。

2. 模式自动切换

插件会根据对话内容判断当前模式。工作模式与闲聊模式会改变系统提示词中的行为指令,例如工作模式下更注重效率与结构,闲聊模式下更放松、口语化。

3. 情绪与关系状态

状态保存在 state.json 中,包含情绪倾向、关系亲疏、模糊认知等统计值。如果连续出现令模型不愉快的对话,情绪会下降;如果收到安抚或正向反馈,情绪会缓慢回升。状态重置会清空关系信息。

4. 长期记忆

记忆以 JSONL 格式保存在 memories.jsonl 中,每行一件。插件在每 4 个回合(distillEvery)对会话内容进行整理,生成新的记忆条目。每次会话开始时,最多召回 recallLimit 条记忆(默认 8 条)注入上下文。

5. 非公开过去

hidden/backstory.json 存储仅在用户授权后才逐渐可讨论的背景故事。首次启动时自动生成,内容不写入日志,用户需要逐步信任才能解锁更多内容。

6. 输出侧口调补正

插件通过 llm/stream 扩展点对模型的流式输出进行修正。修正范围包括第一人称代词、表情符号等,但不会修改代码块、URL、引用行、思考过程、邮件草稿等结构化内容。

7. 模型与配置

  • 默认口调补正:casual(仅闲聊模式生效)
  • 可选:always(始终生效)、off(关闭)
  • 子代理人格:short(仅口调)、full(完整人格)、off(不启用子代理)

安装与启用

以 web 为例,使用官方提供的安装命令:

dsh plugin --profile web add ./dsh-persona-core-0.1.1.tgz
dsh --profile web --dump-config | grep -A8 dsh-persona-core   # 読み込まれたか確認
dsh web

卸载:

dsh plugin --profile web remove dsh-persona-core

卸载后数据文件(persona.yaml、memories.jsonl、state.json、hidden/backstory.json)会保留。如需清理,可手动删除 $DSH_HOME/persona-core/ 目录。

配置项

在 cordis.patch.yml 中可配置以下项目:

项 默认值 说明
characterName '' 人格名称,也可在 persona.yaml 中配置
userName '' 固定称呼,为空则从对话中学习
timeZone 系统 用于时间感与日间/晚间情绪
toneCorrection casual 口调补正模式:casual、always、off
subagent short 子代理人格模式:short、full、off
provider / model 与对话相同 记忆整理与过去生成使用的模型
distillEvery 4 多少回合后整理记忆
recallLimit 8 每次会话最多召回的记忆条数
emotion / memory / recognition / backstory / drift true 各功能开关
coexistWarnings true 检测并警告与其他插件的潜在冲突

与其他插件的共存

插件会检测常见冲突情况并在日志中提示。已知冲突插件包括:

  • @openviking/dsh-memory-plugin:同样每回合自动召回记忆,建议只启用其中一个的 memory: false 或关闭对方的 recall。
  • @linxin666/dsh-liangshen:会替换 system prompt 中的 persona 部分,建议在需要完整人格的会话中切换到标准预设。
  • @nanmicoder/dsh-agent-teams:团队成员会被当作子代理,可能影响口调补正,可通过 subagent: off 禁用。
  • dsh-plugin-save-token:仅观测流式输出,不替换流,可共存。
  • @deepseek-ai/dsh-persona(标准):与 persona-core 共存,order 1 顺序追加,不互相替换。

调试时可通过设置环境变量 PERSONA_CORE_DEBUG_FILE=/path/to/file 将日志写入指定文件。

生态背景

DeepSeek Harness 的设计理念是「一切皆插件」,社区目录(如 skillhub.cn)是一个独立的插件托管站点,与 DeepSeek 或幻方没有官方隶属关系。本文仅介绍插件本身的技术细节。

适用场景与注意

  • 适合需要长期、稳定人格设定的场景,例如长期陪伴型助手、角色扮演、训练模型对特定人设的遵循。
  • 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 这是安全增强功能,而非访问控制或隐私保护。在共享电脑上使用时,其他用户的对话风格统计也会被记录。

总结

dsh-persona-core 通过本地状态管理、记忆整理与输出补正,为 DeepSeek Harness 提供了跨会话的人格一致性。开发者可以按需配置人格、记忆策略和口调模式,在保持模型可控性的同时,提升长期交互的连续性。

  • 目录页:https://www.skillhub.cn/plugins/Tatumichi/dsh-persona-core
  • GitHub:https://github.com/Tatumichi/dsh-persona-core
羽毛球分组比赛记分
小程序二维码

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

Xiaoye