dsh-persona:为 DeepSeek Harness Agent 添加可切换人设与记忆

DeepSeek Harness(DSH)采用插件化架构。虽然内置指令很方便,但它们通常是静态的文本模板。如果你希望 Agent 具备特定的角色性格,或者在多个会话中保持一致的行事风格,就需要更高级的机制。dsh-persona 插件通过注入人设提示词和跨会话记忆,解决了这个问题。

是什么

dsh-persona 是一个由 haimuhaimu 维护的插件,旨在给 DSH 的 Agent 装上一个可切换、会记住的“人设”。它支持持久化人设注入、跨会话角色记忆和运行时切换,内置了三个精写人设和一个“本尊”模式。

核心功能

  • 持久人设注入:在每轮请求前,将当前人设作为上下文注入。Agent 全程以该身份回应。
  • 跨会话角色记忆:每个人设独立保存一套记忆(存储在 ~/.dsh/persona-memory.json)。重启后依然记得,激活时自动注入最近记忆。
  • 运行时切换:通过工具命令一键换人设,选择会持久化到磁盘。
  • 内置人设:包含 3 个精写人设和 1 个“default”模式。
  • 纯 JS、零构建:与 dsh-image-gen 一样,即装即用。

安装与启用

使用官方命令安装:

dsh plugin --profile <profile> add github:haimuhaimu/dsh-persona

如果通过 pnpm 安装遇到 prepare 脚本拦截,需将包键加入 profile 的 pnpm-workspace.yaml 的 allowBuilds 后重新 add。安装完成后重启 DSH Desktop 或重载 profile。

使用方法

安装并启用后,agent 默认以 an-ruotong 身份回应。

列出人设

list_personas

切换人设

switch_persona("yan-guan")

关闭人设恢复默认:

switch_persona("default")

记忆管理

  • 记住:将一件事记进当前人设的跨会话记忆。
    persona_remember("用户喜欢清晨的光线、讨厌网红风")
  • 回想:查看当前人设的记忆(可传关键词过滤)。
    persona_recall
  • 遗忘:按序号删除一条记忆(序号对应 recall 的列表)。
    persona_forget 1

内置人设

id 名字 特点
an-ruotong 安若童 清冷敏锐的视觉观察者,用照片和短句记录普通日常
yan-guan 严观 眼光毒辣、有品位的审美与文案裁判
lao-jie 老街 旧书店里的说书人,把琐事讲成有画面感的小故事
default 本尊 关闭人设,回到 DSH 默认助手

配置与机制

配置项

在 cordis.patch.yml 中可以配置:

键 默认值 说明
activePersona "an-ruotong" 首次运行的默认人设 id
statePath ~/.dsh/persona-state.json 状态文件路径(保存当前人设)
memoryPath ~/.dsh/persona-memory.json 跨会话记忆文件路径
personas [] 追加自定义人设

人设选择的优先级:持久化状态 > activePersona > default。想重置,删除状态文件即可。

工作原理与限制

  • 注入机制:人设文本(提示 + 记忆)作为一条 kind: 'plugin' / form: 'instructions' 的用户消息注入,进入会话日志、跨轮可见。
  • 去重逻辑:注入按“人设 id @ 记忆版本”去重。切换人设或记忆变化时,下一次请求会重新注入完整上下文。
  • 记忆限制:每个人设最多 100 条、单条最多 400 字。注入时最多携带最近 40 条,防止上下文无限膨胀。
  • 已知限制:会话经历 compaction(上下文压缩)后,早期注入的人设可能被摘要掉。此时可再次 switch_persona 触发重注入。

总结

dsh-persona 通过简单的命令和配置,为 DSH Agent 增加了性格和记忆。它适合希望获得更稳定、更拟人化交互体验的用户。插件以当前 dsh 进程权限运行,安装前请检查源码与许可证。

  • 插件目录:https://www.skillhub.cn/plugins/haimuhaimu/dsh-persona
  • 源码地址:https://github.com/haimuhaimu/dsh-persona
羽毛球分组比赛记分
小程序二维码

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

小夜