🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

人设注入器 gosutry/dsh-persona-select

DeepSeek Harness
gosutry1 天前有提交已提供中文文档扫描:未发现敏感能力

DSH注入系统提示词和设置注入上下文插件。内置吃白饭的蓝色大肥鱼拟人鲸鱼娘女仆角色扮演设定!通过预设保存可在会话页快速切…

33.6/100
综合分
5
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装;安装清单取自 packages/dsh-persona-select/package.json。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add gosutry/dsh-persona-select
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · skill
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/27) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装;安装清单取自 packages/dsh-persona-select/package.json

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-persona-select(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖要求 >=0.1.7-rc.2 <1.0.0 · 最新 0.2.1-rc.2 兼容
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 20:43:37

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 3 处,展示前 3 条)
  • 发起网络请求
    packages/dsh-persona-select-picker/client.js:487
    const response = await fetch(ROUTE_PREFIX + path, {
  • 发起网络请求
    packages/dsh-persona-select-settings/client.io-export.js:52
    const response = await fetch(url, { method: 'HEAD', headers: { accept: 'application/json' } });
  • 发起网络请求
    packages/dsh-persona-select-settings/client.js:487
    const response = await fetch(ROUTE_PREFIX + path, {
扫描于 2026/10/31(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-persona-select · 人设管理与人设注入 DSH 插件:把人设正文注入系统提示词,把历史对话注入上下文。设置页的人设管理负责保存与编辑,对话模式选择行下方可以随时切换人设。 Bilingual README. 中文 · English 这个插件做什么 它负责两件事:把一段文字送进系统提示词,把一段对话送进上下文。为了说清楚,本文与插件设置界面统一使用两个叫法: | 叫法 | 指的是 | | 人设正文 | 注入系统提示词的那段内容 | | 历史对话 | 作为上下文注入的一段「已经发生过」的对话 | 两者按人设成对保存:在设置页把人设正文和历史对话写好、存成一条预设「人设」,之后在对话里选中这条人设,两者按各自的规则进入这一次请求。 注入的规则 人设正文进入系统提示词的人设段,注入位置可自行编辑:「段序权重」决定这一段排在系统提示词的哪个位置。 - 数值:按权重大小排序,数字越小越靠前(默认 -1,排在预设里那句 "You are a coding agent…" 之前)。 - 追随:点「追随」后,人设段被放到所有系统提示词段之后。 - 权重只影响排序,永远不会混进人设正文;每条人设各自保存自己的权重,编辑框跟着当前选中的那条人设走。 - 必须填整数(-1000000000 ~ 1000000000):小数、指数、带单位都会被拒绝保存。
展开完整文档(README 剩余 1 节)
dsh-persona-select · 人设管理与人设注入

DSH 插件:把人设正文注入系统提示词,把历史对话注入上下文。设置页的人设管理负责保存与编辑,对话模式选择行下方可以随时切换人设。

Bilingual README. 中文 · English

这个插件做什么

它负责两件事:把一段文字送进系统提示词,把一段对话送进上下文。为了说清楚,本文与插件设置界面统一使用两个叫法:

| 叫法 | 指的是 |
| 人设正文 | 注入系统提示词的那段内容 |
| 历史对话 | 作为上下文注入的一段「已经发生过」的对话 |

两者按人设成对保存:在设置页把人设正文和历史对话写好、存成一条预设「人设」,之后在对话里选中这条人设,两者按各自的规则进入这一次请求。

注入的规则

人设正文进入系统提示词的人设段,注入位置可自行编辑:「段序权重」决定这一段排在系统提示词的哪个位置。

- 数值:按权重大小排序,数字越小越靠前(默认 -1,排在预设里那句 "You are a coding agent…" 之前)。
- 追随:点「追随」后,人设段被放到所有系统提示词段之后。
- 权重只影响排序,永远不会混进人设正文;每条人设各自保存自己的权重,编辑框跟着当前选中的那条人设走。
- 必须填整数(-1000000000 ~ 1000000000):小数、指数、带单位都会被拒绝保存。

历史对话在新对话的第一步作为 user 侧上下文注入一次,并按仿照 DSH 自身注入的格式包裹:

- 整段包进一对 <system-reminder>,开口之后是 CONTEXT_ROAD:,结尾是 CONTINUE_CONTEXT.;正文里出现的收尾标签会被转义,保证壳子不会被提前闭合。
- 往期对话的 user 侧内容包在 <user_message> 里;模型侧的思考包在 <thinking> 里、说的话包在 <assistant_message> 里;双方非对话内容包在 <file> 之类的标记里;压缩摘要保持 <compacted-summary>…</compacted-summary> 原样。

已经注入过的对话不会重复注入(那会把整段对话的缓存读取推倒重来)。所以历史对话只在每个新对话的第一步生效;如果想让一个已经聊起来的对话也带上历史,只能把历史写进人设正文——但效果不好,不推荐。

人设管理

- 新建、编辑、保存、删除人设,复制为新人设(内置人设只读,要改就复制一份副本再改)。
- 每一条人设包含:名称、人设正文、段序权重、历史对话。
- 设置分开保存:每个对话保存自己的选择与开关,切换人设、改动勾选项都不会影响新对话和进行中的对话。设置页有「当前 / 全局」两个页签,分别对应「这一个对话」和「新对话默认跟随的设置」。
- 保存前会先校验:正文为空、名称为空、权重不是整数都会拒绝保存并说明原因;正文超过建议上限会提示但完整保留。
- 未保存的改动在切换人设时会先询问,避免默默丢掉。

屏蔽与「纯聊天」

四个开关各自撤掉一类模型本来能看到的系统侧输入:

| 开关 | 撤掉什么 |
| 只留人设 | 系统提示词里除人设段以外的所有段:harness 身份、部署人设、工具指引、计划模式策略、harness 源码说明。人设为空时,系统提示词就是空的。 |
| 屏蔽 runtime 上下文 | 两类:① 沙箱策略、审批策略、委派规则等以 user 角色快照下发的动态上下文;② 包在 <system-reminder> 里的 runtime 快照与 skill 目录。 |
| 屏蔽 schema 工具 | 工具定义(它走独立的协议字段,不是系统提示词段,通常是最大的一笔 token)。打开后模型没有可调用的工具。 |
| 屏蔽其他注入内容 | AGENTS.md / CLAUDE.md 之类的指令基线与逐步时间读数——它们同样是以 user 角色消息追加进来的,只能按来源过滤。 |

四个开关全开、且没有选中人设,就是纯聊天:系统侧注入归零,模型只看到你发的内容。对话界面的选择框里有「一键纯聊天 / 恢复系统输入」按钮直接切换这两个状态。

工具保活通道(「可复用工具」):屏蔽 schema 工具的保险丝。DSH 的工具账本要求每个对话有一份非空的工具声明基线,基线一旦被清空,回来的工具都会被打上 deferred 标记并被服务方以 INVALID_REQUEST 拒绝。勾上它,插件只在两个时刻保留完整工具列表各一轮——这个对话的第一次请求,以及疑似声明序列重启(例如压缩)时——先让基线建立起来,之后无论怎么开关屏蔽,工具都还能回来。

以下为关闭所有系统测注入后,你能够真实达到的token消耗

导入与导出

导出(设置页编辑器里那条人设的正文 + 段序权重 + 历史对话一起走):

- 导出 JSON:纯 JSON,不压缩、不丢信息。
- 导出图片:由你自己挑一张 PNG 当封面,同样的数据打进图片里一起作为一张角色卡下载。图片本身的数据一个字节都不改,包括AI生图或捏人游戏角色卡(导出为png格式的游戏,例如恋活),任何看图软件照常显示它。
- 单次导出上限 32 MB;选了非 PNG、或 PNG 结构不完整(读不出 IHDR)会被直接拒绝并说明原因。
- 导出取的是编辑器里那条人设已保存的版本:有未保存改动会先询问,新建但还没保存的人设不能导出。

导入:

- 读本插件导出的 .json,或「导出图片」生成的那张 .png,作为新人设追加进列表——绝不覆盖已有条目。
- 直接导入 DSH 自己 /export 出来的会话日志:接受 /export 产生的 .zip,也接受裸的 session.vN.jsonl / session.jsonl,以及 .jsonl.zstd / .zst。导入时有两个独立开关:
- 导入思考过程:决定模型侧的 <thinking> 跟不跟着进来。
- 展开压缩:默认只取压缩摘要 <compacted-summary> 与最后一次摘要之后的对话;勾上后反过来——取除摘要之外的全部内容,把压缩展开回原文。历史从未压缩过时,这个勾选项不改变任何东西。

对话界面的选择框

对话模式选择行下方那个「人设」展开:

- 切换当前对话的人设,或选「不注入」。
- 一键纯聊天 / 恢复系统输入。
- 层徽标告诉你这条设置是本对话的还是全局的。
- 状态点:
- 绿点:工具基线可用,一切正常。
- 黄点:本对话选定人设的历史对话与当初注入的那份对不上了;本对话的人设正文没进系统提示词(例如对话用了声明 complete: true 的「极简模式」);本对话已经聊过,所以这条人设的历史对话不再注入;或「可复用工具」没勾。
- 红点:本对话选的人设已被删除(人设段现在是空的),或这个对话的首次请求没带任何工具(工具基线为空,本对话内工具回不来)。
- 设置页的「当前」页会按来源列出这个对话里被过滤掉的注入块:runtime 快照、skill 目录、工作区指令、时间读数。

数据文件

<DSH_HOME>/persona-select/(DSH_HOME 默认 ~/.dsh):

| 文件 | 内容 |
| personas.json | 全局设置、人设列表、每个对话的选择与开关 |
| personas.json.v2-backup | 旧版升级时的备份,可删 |
| history/<编号>.txt | 各条人设的历史对话正文 |

- 名称最长 40 字;人设正文建议不超过 20000 字(超过会提示,但完整保留、不截断);最多 200 条人设;最多保留 500 条对话记录。
- 会话记录会被自动清理:已经不存在、也不在活动列表里的对话记录会被回收(设置页也可主动触发),避免文件无限膨胀。

界面

设置页与对话界面均跟随宿主语言,内置中文 / English 两套文案。

内置人设声明

插件中“鲸鱼娘、Claude娘、GPT娘、Qwen娘、GLM娘、Kimi娘”的形象描述来自@ZipZipPipe,部分提示词来自项目 ai-chan-sheets,遵守CC BY-NC-SA 4.0协议再创作并开源,请尊重相关形象创造者。

这个插件做什么

两件事:把一段文本放进系统提示词,把一段对话放进上下文。为了措辞精确,本 README 沿用插件 UI 里的两个名字:

| 术语 | 含义 |
| 人设正文 | 注入系统提示词的内容 |
| 历史对话 | 一段「已经发生过」的对话,作为上下文注入 |

两者存在一起,合称一条人设:在设置页写好正文和历史,存成人设预设,然后在对话里选中这条人设,两者就按各自的规则进入请求。

注入怎么工作

人设正文成为系统提示词的人设段,位置由你编辑:「段序权重」决定这一段排在哪。

- 数字:各段按权重排序,小的在前(默认 -1,排在预设行「You are a coding agent…」之前)。
- 跟随:点它,人设段就追加到所有系统提示词段之后。
- 权重只影响排序,绝不进入人设正文。每条人设各留自己的权重,这个字段跟着你正在编辑的那条人设走。
- 必须是整数(-1000000000 到 1000000000):小数、指数和单位在保存时会被拒绝。

历史对话只注入一次,作为用户侧上下文,在新对话的第一步注入,外面套一层壳,模仿 DSH 自己注入上下文的方式:
- 整个块放在一对 <system-reminder> 里,由 CONTEXT_ROAD: 开头,由 CONTINUE_CONTEXT. 结尾;正文里出现的任何闭合标签都会转义,所以外壳永远不会被提前闭合。
- 块内,用户侧的历史内容放进 <user_message>;模型侧的思考放进 <thinking>,说出来的内容放进 <assistant_message>;两侧的非对话内容(工具调用、多模态片段)放进 <file> 这类标记;压缩摘要原样包在 <compacted-summary>…</compacted-summary> 里。

已经注入过的对话不会再注入一次——再注入会拆掉整段对话的缓存输入(KV cache)。所以历史只在每段新对话的第一步生效。如果一段已经在跑的对话必须跨人格切换带上历史,可以把历史写进人格文本本身——效果很差,不推荐。

管理人格

- 创建、编辑、保存、删除人格,以及另存为新人格(内置人格只读,复制一份再改)。
- 每个人格带:名称、人格文本、段落顺序权重、对话历史。
- 设置按对话保存:每段对话保留自己的选择和开关,所以切换人格或拨动开关,永远不影响新对话,也不影响进行中的对话。设置页有「当前 / 全局」两个标签页——「这段对话」和「新对话跟随什么」。
- 保存前先校验:文本为空、名称为空或权重不是整数,都会拒绝并给出原因;文本超过建议上限会提示,但完整保留。
- 有未保存的修改时,切换人格前会先确认,不会悄悄丢掉。

抑制与纯聊天

四个开关,每个都去掉一类模型本来会看到的系统侧输入:

| 开关 | 去掉什么 |
| 仅人格 | 除人格外的所有系统提示词段落:harness 身份、部署人格、工具指引、计划模式策略、harness 源码说明。没选人格时系统提示词为空。 |
| 抑制运行时上下文 | 两类:(1) 以用户角色快照形式送达的沙箱策略、审批策略和委派规则;(2) 以 <system-reminder> 块形式包装的运行时快照和技能目录。 |
| 抑制工具 schema | 工具定义(独立的 wire 字段,不是提示词段落,通常也是 token 占用最大的一项)。打开后模型没有可调用的东西。 |
| 抑制其他注入 | AGENTS.md / CLAUDE.md 指令基线和每步的时间读数——同样是用户角色消息,只能按来源过滤。 |

四个全开、不选人格,就是纯聊天:系统侧零注入,模型只看到你发的内容。对话视图里的选择器有一键切换为纯聊天 / 恢复系统输入按钮。
工具保留通道(「可复用工具」):这是「抑制工具 schema」的安全阀。DSH 的工具账本要求会话里有一份非空的工具声明基线;基线一旦被清空,之后回来的工具全都会被标成 deferred,服务商就会用 INVALID_REQUEST 拒绝请求。插件检查时会在这两个时刻为整整一轮保留完整工具列表——会话的首次请求,以及疑似声明序列重启(比如一次压缩)——这样就能写入一份非空基线。之后不管你怎么切换抑制,工具都能回来。

把所有系统侧注入都关掉之后,token 消耗的真实样子就是这样!

导入与导出

导出(编辑器的角色文本 + 分区顺序 + 历史,一起打包):

- 导出 JSON:纯文本,不压缩,无损。
- 导出图片:自己挑一张 PNG 当封面,同一份数据打包进图片一起下载。图片一个字节都不会被改动,任何普通看图工具照样能显示。
- 单次导出上限 32 MB。封面不是 PNG,或 PNG 结构不完整(读不出 IHDR),直接拒绝并说明原因。
- 导出取的是角色已保存的版本:有未保存的修改会先弹确认;从没保存过的新角色不能导出。

导入:

- 读取本插件导出的 .json,或「导出图片」得到的 .png,作为新角色追加——已有条目永远不会被覆盖。
- 直接导入 DSH /export 的会话日志:接受 /export 产出的 .zip,也接受裸的 session.vN.jsonl / session.jsonl,或 .jsonl.zstd / .zst。两个独立选项:
- 包含思考:模型侧的 <thinking> 要不要一起带进来。
- 展开压缩:默认框里拿到的是 <compacted-summary> 块,加上最后一个块之后的对话;勾上就反过来——除了这些摘要之外的全部内容,压缩部分展开回原文。导入文本里没有摘要时,勾不勾都一样。

对话里的选择器

模式选择器下面的「角色」下拉框:

- 切换当前对话的角色,或选「关闭」。
- 一键纯聊天 / 恢复系统输入。
- 作用域徽标告诉你,设置是作用于当前对话还是全局。
- 状态点:
- 绿色:工具基线可用,一切正常。
- 黄色:本会话的角色历史已经和注入的内容对不上了;角色文本没能进系统提示词(比如对话用了声明 complete: true 的「minimal」预设);对话已经聊过,历史不会再注入;或者「可复用工具」没勾。
- 红色:为本次会话选中的角色已被删除(角色区域为空),或者本次会话的首次请求完全没有携带工具(工具基线为空——工具无法在本次会话内恢复)。
- 设置页的「当前」标签页按类别列出在本次对话中被过滤掉的注入块:运行时快照、技能目录、工作区指令、时间读数。

数据文件

<DSH_HOME>/persona-select/(DSH_HOME 默认为 ~/.dsh):

| 文件 | 内容 |
| personas.json | 全局设置、角色列表,以及每个对话的选择与开关 |
| personas.json.v2-backup | 迁移备份,可安全删除 |
| history/<id>.txt | 每个角色的对话历史正文 |

- 名称最长 40 个字符;角色文本建议不超过 20000 个字符(超出会提示,但仍完整保留,绝不截断);最多 200 个角色;最多 500 条会话记录。
- 会话记录会做垃圾回收:已不存在的对话、且不在活跃列表中的记录会被回收(也可从设置页手动触发),因此文件不会无限增长。

界面

设置页和对话选择器跟随宿主语言,内置简体中文和英文。

内置角色声明

内置角色使用的「DeepSeek chan、Claude chan、GPT chan、Qwen chan、GLM chan、Kimi chan」形象来自 @ZipZipPipe,部分提示词来自 ai-chan-sheets 项目;在 CC BY-NC-SA 4.0 许可下重新创作并开源。请尊重形象创作者。

许可 / License

MIT
预览分享卡片长什么样 ↓gosutry/dsh-persona-select
分享 · DeepSeek Harness Hub
gosutry/dsh-persona-select

DSH注入系统提示词和设置注入上下文插件。内置吃白饭的蓝色大肥鱼拟人鲸鱼娘女仆角色扮演设定!通过预设保存可在会话页快速切…

回到顶部