dsh-persona-cards:按会话绑定人设卡与全局提示词

前言

在 DeepSeek Harness(DSH)里做智能体,系统提示词往往要分两层:一套对所有会话都成立的「总纲」,另一套随任务、随会话切换的具体身份。官方部署人设能覆盖一部分场景,但若要在设置里维护多张人设、在会话里显式选用其中一张,又不想把几张启用的人设叠成互相打架的指令,就需要把「仓库里的卡」和「这次会话用哪张」拆开管理。

下面介绍社区插件 dsh-persona-cards(维护者 lyufeng000):在设置里管理人设卡片与一段全局附加正文,在会话输入区选择当前人设;选中内容拼进系统提示词,改完下一个模型步骤即生效,无需重启进程。默认不注入任何人设,须在会话里显式选择。

这是什么

dsh-persona-cards 是 DSH 的「人设卡」插件,分类为趣味换装。它在 设置 → 人设卡 提供独立管理页,支持新建、编辑、删除多张卡(名字、正文、启用开关),并支持将正文从 .md 人设文件导入;另有一段全局设置,不挑会话、不挑人设,写了就始终注入。

选中的卡与会话绑定:只有当前会话生效,别的会话不受影响。没选卡、全局设置也留空时,插件对该会话的提示词完全不存在(空段落由 DSH 自动丢弃)。

核心功能

设置页与卡片管理

  • 左侧设置导航新增「人设卡」,与「通用」「模型」「插件」并列。
  • 多张卡:每张有名字、正文、启用开关;列表默认只读卡片态,点「编辑」再改,「完成」落盘,「取消」丢弃草稿。
  • 启用开关只决定该卡是否进入备选池,不会自动作用于任何会话;避免「全开」导致新会话叠加多个人格。

全局设置

页面顶部「全局设置」框内的一段正文,永远注入(不依赖会话是否选人设、不依赖某张卡是否启用)。注入顺序在官方部署人设之后、当前会话选中的人设卡之前(段落名 persona-cards:global,order = 90)。留空则不注入。

会话级选择

会话输入框左侧有「人设」选择器(composer 工具行,conversation.input.left)。绑定写入 session-cards.json,只作用于当前会话。不选即为「不使用人设」。

说明:DSH 新建会话时尚无 sessionId,官方不会在 hero 区渲染会话级控件,因此选择器在发出第一条消息后出现;第一条消息仍按「未绑定则不注入人设段」的规则。

提示词注入位置

HARNESS_IDENTITY(-1000) → DEPLOYMENT_PERSONA_PREFIX(0) → persona-cards:global(90)
  → persona-cards:user(100) → PLAN_POLICY(500) → … → 各工具说明(1000+)
段落 内容
persona-cards:global 全局设置(非空即注入)
persona-cards:user 当前会话选中的那张卡;未选则为空串

变量与保存

正文支持 {{model}}、{{provider}}、{{cwd}}:落盘前经白名单校验,与官方 interpolate() 语法一致;段落渲染时设 interpolate: false,由插件本地展开。其中 {{model}} / {{provider}} 为 DSH 0.2.1 注册的官方提示词变量;{{cwd}} 由插件从 agent.session.header.cwd 展开,为会话创建时的原始工作目录,不跟随 working-directory 服务后续切换。

编辑完成、开关/删除/新建会立即落盘;全局设置约 700ms 防抖落盘。

数据文件

数据在 $DSH_HOME/persona-cards/(DSH_HOME 环境变量优先,否则 ~/.dsh):

文件 用途
cards.json 人设卡与启用状态
settings.json 全局设置
session-cards.json 会话 → 卡片绑定

不在会话日志里;fork、replay、换机或删除该目录后无法从日志恢复绑定,插件按未绑定处理、静默不注入。同目录下已有的 .md 人设文件不会被本插件读写或修改。

安装与启用

插件要求 DSH 版本:>=0.2.1-rc.2 <0.3.0(见 package.json 的 engines.dsh)。安装前请自行查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程权限运行。

官方安装命令:

dsh plugin --profile <p> add dsh-persona-cards

将 <p> 换成你的 profile 名称。

若修改过插件 Host 侧代码(lib/index.js),须完全退出并重新打开 DSH,仅刷新页面可能导致界面与 Host 版本错配(例如设置页提示未知接口)。Client 侧 lib/client.js 改完后刷新页面即可。

典型用法

  1. 安装插件后打开 DSH,进入 设置 → 人设卡。
  2. 在 全局设置(可选)填写对所有会话都成立的附加说明,例如统一风格或安全边界;留空则跳过全局段。
  3. 新建人设卡,填写名称与正文,或导入 .md 人设文件;打开启用使该卡进入备选池。
  4. 打开或新建会话,在输入框左侧 人设 选择器里选中一张卡;下一条模型步骤起,系统提示词会带上「全局(若有)+ 当前卡」。
  5. 换会话可绑定不同卡;某会话不选则该会话不注入人设段(全局段仍按上文规则注入)。

适用场景与注意

适合:需要在多套人格/角色说明间切换、又希望「启用」不等于「每个会话都叠加」的开发者;需要一段与会话无关的常驻提示词补充的场景。

注意:

  • 会话绑定是本地状态,不随会话日志迁移;重要绑定请自行备份 $DSH_HOME/persona-cards/。
  • 不要使用官方段名 deployment:persona-prefix,本插件使用自有段名注册。
  • 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态以「一切皆插件」为方向,安装第三方插件前请核对来源与权限。

结尾

dsh-persona-cards 把人设维护放在设置页、把「这次用哪张」放在会话选择器,并用全局段与人设段分离注入,避免多卡启用却无人显式选择时的身份冲突。需要细节、问题反馈与更新说明,见:

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

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

Xiaoye