dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
把选中的人设注入系统提示词的 DeepSeek Harness 插件:内置三套人设,支持从文件导入或粘贴自定义人设,并可按 profile 全局生效或按会话单独选择(输入框上方有切换条)。
启用后,系统提示词里会注入当前选中的人设 —— 全局、按工作区或按会话,都不用每次手动粘贴。
.md——格式与「导入」一致,导出的文件能原样再导入回来。zh / en);内置人设的名字与简介按当前语言显示,用户自己导入的人设名照原样显示。
text 是动态函数,提示词每次组装都会重新求值,所以切换后下一个请求就用新文本,无需重启、无需重新加载插件。
或只给当前会话单独挑一条;越细越优先,且三档可以叠着用。
dsh-persona-dafeiyu/
├─ package.json dsh.bundle.patch / dsh.client 声明 + peer 依赖
├─ cordis.patch.yml 组合包 patch:把本插件的行插进 profile
├─ lib/
│ ├─ index.js 宿主半侧:人设库 + 动态提示词段落 + 三档生效范围 + 三条回环接口
│ └─ client.js 浏览器半侧:设置页「大肥鱼」小节 + 输入框小条 + 居中选择浮层
├─ test/verify.mjs 不依赖 DSH 运行时的自检(跑一遍会打印项数)
├─ scripts/privacy-check.mjs 本机信息自查:推送前跑一遍
├─ examples/
│ ├─ persona.example.md 人设文件格式示例
│ └─ config.example.yml 插件 config 示例
├─ .github/workflows/ci.yml CI:自检 + 隐私自查
├─ .gitignore / .gitattributes
├─ CONTRIBUTING.md
├─ LICENSE MIT
└─ README.md本包已发布到 npm,不需要克隆仓库、不需要构建。
界面上装:侧边栏 → 插件 → 添加插件 → 输入包名:
dsh-persona-dafeiyu命令行装:
dsh plugin --profile <profile> add dsh-persona-dafeiyu 换成你自己的 profile 名。DSH 随安装自带的模板只有 acp / web / headless / sdk / sdk-minimal`,你自己建的那个叫什么就用什么。
本包是纯 JavaScript、没有构建脚本,所以不会触发 pnpm 的「允许运行构建脚本」提示——
输入包名即可装好,这是最省事的方式。
git clone https://github.com/huaizhuanghub/dsh-persona-dafeiyu.git
cd dsh-persona-dafeiyu
(Get-Location).Path最后一行打印的绝对路径,下面安装命令要用到。然后:
dsh plugin --profile <profile> add "<本仓库绝对路径>"或者在插件页「添加插件」里填这个绝对路径。
本包没有运行时依赖(@deepseek-ai/* 全是 optional peer,由 DSH 运行时提供), 所以克隆后不需要 npm install 就能直接跑自检。
两种方式都会把本包写进 profile 的 dsh.profile.bundles。
lib/index.js / lib/client.js)更新后,要让宿主与浏览器拿到新版本,仍需重启 DeepSeek Harness(客户端 bundle 至少要刷新页面)。这是加载机制,不是人设切换。
本地目录安装是 link:(pnpm 建软链接指向本目录),所以别把本目录删掉再重启。 想彻底自包含,可以先 npm pack 出 tgz 再安装。
区域 · 能做什么 当前生效 · 看当前人设名、来源(内置 / 导入 / config)、启停状态、段落位置、字数、人设库文件路径;内置人设显示简介,自导入人设提示去列表看全文 生效范围 · 三档开关:全局 / 工作区 / 会话(越细越优先,见下一节) 工作区生效规则 · 列出已知的工作目录,每个目录一个下拉框挑人设,默认「跟随全局」;在某个项目里发过消息后,该目录就会出现 人设列表 · 每条显示名称 + 来源徽标 + 字数;可「设为当前」「启用 / 停用」;导入的还可以「重命名」「删除」(删除需二次确认) 内置人设 · 大肥鱼、阿茶、听澜:只读——没有删除 / 重命名按钮,列表里标注「内置人设不可删除或重命名」;正文可以展开查看 自导入人设 · 每条都有「查看全文」:按需拉取并展开完整提示词(含换行),再点收起;另有「导出」把正文存成 .md 导入人设 · 选 .md / .markdown / .txt 文件(自动填入正文与名称),或直接把提示词粘贴到文本框,点「导入」
正文展示的分工:
/status 只给元数据,点「查看全文」才走 /persona?id= 取那一条的正文,内置 / 自导入 / config 一视同仁。开启很多条人设时状态接口也不会被撑成几 MB。
正文同样可以展开查看,但只读(不可删除、不可覆盖),也不提供导出—— 想改就先自己导入一份。
规则说明:
导入用的文件长什么样,见 examples/persona.example.md。
人设可以整个 profile 共用一个、按项目目录各用一个,或只给当前会话挑一条。 三档不是互斥开关,而是越细越优先的阶梯:
会话档:会话选择 → 工作区选择 → 全局当前
工作区档: 工作区选择 → 全局当前
全局档: 全局当前好处:可以先给项目配好工作区人设,再按会话临时覆盖;清掉会话选择时自动落回工作区。
🐟 大肥鱼 [全局] [会话] ← 全局:所有会话都用「当前」那条
🐟 阿茶 ▾ [全局] [会话] ← 会话:显示本会话的人设,点名字弹出选择浮层
🐟 阿茶 · 工作区 [全局] [会话] ← 工作区档:只显示状态,规则在设置页里配shell.overlay 插槽)。人设再多也只是浮层里滚动,不会把输入框旁边堆满;选完自动关闭,点遮罩空白处也能关。
[全局] / [会话] 永远是切换生效范围本身,工作区档也能一键跳出。生效范围 [全局] [工作区] [会话]
工作区生效规则
<项目目录>\backend [阿茶 ▾]
<项目目录>\frontend [跟随全局 ▾]宿主在每次组装提示词时从会话上下文里收集 cwd,所以一个目录要先在那里发过一条消息才会出现。
工作区选择与人设库一起持久化;「选哪一档」这个范围本身也是持久化的。
对应接口:set-mode(global / workspace / session)、set-workspace-persona (cwd + personaId)、set-session-persona(sessionId + personaId; personaId: null 表示清除);GET /status?sessionId=&cwd= 会额外返回 该会话 / 该工作区的视角,以及最终生效的是哪一条(effective)。
/storages/dsh-persona-dafeiyu/personas.json。DSH_HOME 没设时退回 DSH 家目录(Windows 上是 %USERPROFILE%.dsh,类 Unix 上是 ~/.dsh/), 代码里走 os.homedir() 动态求值、不写死任何绝对路径。 写入采用「临时文件 + 改名」,文件损坏时回退到空库而不会让插件挂掉。
方法 · 路径 · 作用 GET · /api/dsh-persona-dafeiyu/status · 当前状态 + 人设列表(只有元数据,不含正文)+ 存储路径;带 ?sessionId=&cwd= 时另给会话 / 工作区视角与 effective GET · /api/dsh-persona-dafeiyu/persona?id= · 按需取单条人设的完整正文(「查看全文」用;内置 / 导入 / config 都走这里) POST · /api/dsh-persona-dafeiyu/mutate · set-current / import / rename / remove / set-enabled / set-mode / set-workspace-persona / set-session-persona
非回环访问返回 403,方法不对返回 405,请求体不是 JSON 返回 400,操作被拒时返回 { ok: false, error }(HTTP 仍为 200,错误语义在 body 里)。
Invoke-WebRequest http://127.0.0.1:<port>/api/dsh-persona-dafeiyu/status -UseBasicParsing在「插件」页选中 dsh-persona-dafeiyu 那一行改 config,或直接编辑 cordis.patch.yml:
字段 · 默认 · 含义 enabled · true · 总开关;关掉即完全不注册段落(设置页会显示「插件被 enabled: false 停用」) prefix · '' · 自定义人设正文,在列表里作为一条 config 人设出现 personaFile · '' · 外部 Markdown 人设文件路径,同样作为一条 config 人设出现 suffix · '' · 追加在工具指导之后的人设后缀(order 对齐 DEPLOYMENT_PERSONA_SUFFIX = 10200) order · 未设 · 显式指定前缀段落顺序,覆盖默认的 0
prefix / personaFile 不是「最高优先级」,而是列表里的一个可选项(id 固定为 config): 想用它就去设置页设为当前;清空配置它就从列表里消失。日常使用建议直接导入人设,不再动这两个字段。
完整示例见 examples/config.example.yml。
配置由 @deepseek-ai/schemastery 描述;本地 link: 安装时该模块可能解析不到, 插件会自动退回内置的最小 standard-schema,配置校验与默认值照旧生效,不会因为缺依赖而加载失败。
克隆下来不需要 `npm install` 就能验证:
npm test # 自检:宿主侧人设库 / 生效范围 / 回环接口 / 客户端 bundle 渲染
npm run privacy-check # 本机信息自查:绝对路径、用户名、邮箱、密钥、公网 IP…
npm run privacy-self-test # 自查脚本自己的自检:身份规则该报的报、不该报的不报DSH_HOME,不碰你真实的人设库。@deepseek-ai/schemastery 时,插件会退回内置兜底 schema,