前言¶
DeepSeek Harness(dsh)把模型和工具、会话和界面都做成可替换插件。它适合搭智能体运行时,但默认并不处理另一类很具体的资产:已经在 SillyTavern 里攒好的角色卡、世界书、Chat Completion 预设,以及 JSONL 聊天记录。
很多人并不是要从零做一套角色扮演前端,只是想把现有卡片迁过来,用 DSH 里已经配好的模型,在原生会话里继续聊。社区插件 dsh-agent-rp 做的就是这件事。
本文按社区目录页、GitHub 仓库 README / package.json / 兼容说明,以及 DeepSeek Harness 官方仓库核对后整理:这个插件是什么、现在能做什么、怎么装、第一次怎么开聊,以及当前明确不做的部分。
这是什么¶
dsh-agent-rp 是一款面向 DeepSeek Harness 的工具与能力插件,由 hewzhew 维护,许可证为 MIT。npm 包名是 @dsh-external/dsh-agent-rp,主要语言是 TypeScript。GitHub 仓库的一句话描述是:SillyTavern migration and next-generation Agent RP for DSH。截至 2026-08-17,仓库星标为 142。
它解决的问题很具体:把 SillyTavern 的角色卡、预设和聊天记录带进 DSH,在原生会话里继续角色对话。可以从角色库选角,设置开场和 Persona,并在会话中使用角色卡、世界书、预设、轻前端与持久记忆。目录页和 README 都把它标成面向下一代 Agent RP 的公开预览版。
先说清生态位置。DeepSeek Harness 是 DeepSeek AI 开源的 agent harness,核心理念是「一切皆插件」,目前处于开发者预览阶段,官方仓库写明未来会出现破坏兼容性的变更。社区用来发现插件的目录站点是独立项目,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。官方推荐的发现方式仍是给仓库加上 dsh-plugin 话题。
核心功能¶
角色就是顶层 Agent¶
README 写得很直接:角色本身就是顶层 Agent。这里没有额外的旁白、协调器或 Character 子代理,角色对话直接发生在普通会话中。
从空白的标准会话选择角色时,插件会自动进入角色会话,不必先挑某个 Agent 预设。已经有聊天内容的普通会话不会被修改。
角色卡与角色库¶
当前可以体验的导入与管理能力包括:
- 导入 Character Card V1 / V2 / V3,格式覆盖 PNG、JSON 与 CHARX
- 把角色保存到可视化角色库,收起或恢复角色,不影响已有对话
- 选择默认或备选开场,并为玩家选择可复用 Persona
兼容说明还补了几条边界:PNG 里同时带 ccv3 和 chara 元数据时,以 ccv3 为准;未知字段和 extensions 会保留,但不进入提示词,除非有受支持字段接管该行为。独立 JSON 会作为不透明附件存放,原始字节和路径都不会发给模型。
世界书、预设与聊天记录¶
迁移不只是一张卡:
- 导入 SillyTavern JSONL 聊天记录,或把对应角色卡和 JSONL 放在同一条消息里一起迁移
- 使用角色自带的世界书;开聊表单可直接导入社区推荐的 SillyTavern Chat Completion 预设
- 独立 World Info 也可以导入当前会话
- 世界书正则关键词在受限 QuickJS 运行时中匹配,不会交给 Host JavaScript 执行
导入会创建新的角色对话,不会修改源文件或来源会话。导入后的预设可以在角色库开聊表单或会话的「预设库」里改名;开始对话后,「会话设置 → 预设」可以调整提示模块与预设正则的开关,修改只属于当前会话。
隔离脚本、轻前端与记忆¶
公开预览版已经把一部分酒馆侧脚本和前端语义迁进来,但执行环境是隔离的:
- 在隔离的 QuickJS 环境中运行世界书、角色提示和预设里的同步 EJS 模板;单条模板或正则失败不会中断会话
- 在隔离脚本环境中运行兼容的 Tavern Helper 脚本、显示正则、轻量 HTML 界面与 MVU 状态
- 可执行卡片 HTML 在没有同源权限的沙箱 iframe 中运行
- Tavern Helper 脚本只能加载内置或玩家明确批准来源的 HTTPS 模块,不能直接访问 Host 页面、文件或进程
- 进入对话前后都可以查看卡片声明的 HTTPS 来源,并由玩家逐项允许
会话里还可以重写、续写和切换回复版本,并保留明确的长期记忆。沉浸视图和调试视图可以来回切换,用来检查实际生效的提示内容。
安装与启用¶
目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:
dsh plugin add github:hewzhew/dsh-agent-rp
如需可复现安装,目录页建议固定 commit 哈希:
dsh plugin add github:hewzhew/dsh-agent-rp#commit
把 commit 换成实际哈希。不要凭插件名自己拼接安装地址。
仓库 README 的推荐写法更明确:需要已经公开发布的 DSH,以及 Node.js 和 pnpm。package.json 里客户端声明的 platform 是 web。不必先克隆仓库,直接从公开仓库安装:
npx -p @deepseek-ai/dsh@latest dsh plugin --profile web add github:hewzhew/dsh-agent-rp#main
npx -p @deepseek-ai/dsh@latest dsh --profile web
以后更新插件时运行:
npx -p @deepseek-ai/dsh@latest dsh plugin --profile web update @dsh-external/dsh-agent-rp
这种安装方式不依赖某个长期留在原位的本地克隆目录。只有贡献者需要改源码时,才应克隆仓库,并在仓库根目录运行 pnpm install、pnpm run build 与 dsh plugin --profile web add .。
早期安装器写入的版本不会自动迁移。若启动错误中出现 .dsh\plugins\dsh-agent-rp,先把该目录移出 plugins 目录作备份,确认 DSH 能启动后,再按上面的 profile 命令安装。不要删除整个 .dsh,会话数据与旧插件目录不是一回事。
如果你正在参与 DSH 内测并使用指定 RC 版本,README 要求把上面两处 @latest 换成对应版本,也不要在 Issue 或日志里公开自己的 NPM Token。
Android / Termux 预览¶
README 还提供了一条手机预览路线:ARM64、Android 11 及以上设备可以在 Termux 本机运行,不需要让电脑保持开机。安装器会准备 DSH 的安卓原生依赖、图片解码后备模块、Agent RP 插件与启动命令;首次安装需要编译原生模块,会比普通插件更新慢。手机安装器默认使用已经验证的 DSH 0.1.0-rc.6,不会在上游发布新版本时未经验证地自动换底座。
curl -fsSL https://raw.githubusercontent.com/hewzhew/dsh-agent-rp/main/scripts/install-termux.sh | bash
dsh-agent-rp --port 3080
随后在同一部手机的浏览器打开 http://127.0.0.1:3080。角色卡和会话位于 ~/.dsh,重新运行安装命令可以更新,安装器不会删除它们。若启动或导入角色卡时遇到问题,可以运行 dsh-agent-rp-doctor,它只检查版本、模块和 Android 文件系统能力,不读取令牌、角色卡或会话内容。
当前这条路线只承诺角色聊天所需能力,不把老设备上的 bash 沙箱或编码 Agent 计入手机预览范围。需要把页面长时间留在后台时,可以先在 Termux 运行 termux-wake-lock,结束后再 termux-wake-unlock;这不会绕过 Android 的电池优化设置。重启手机后,需要先重新运行 dsh-agent-rp --port 3080。
第一次开聊¶
仓库 README 给出的步骤可以直接照做:
- 在 DSH 中新建空白会话。
- 点击输入框下方的「选择角色」。
- 选择已有角色,或导入 PNG、JSON、CHARX 角色卡。
- 选择开场与 Persona,然后点击「开始对话」。
- 进入会话后,可在标题栏打开角色信息、角色库、预设、世界书或调试视图。
要迁移旧聊天,可在角色会话中附加一份 SillyTavern JSONL;将对应角色卡和 JSONL 放在同一条消息中,可以一次迁移角色身份与历史记录。导入会创建新的角色对话,不会改源文件。
需要比较大型卡片改动时,仓库提供了不含社区卡片内容的合成兼容基准,见 docs/compatibility-benchmark.md。更细的格式支持与降级方式见 docs/sillytavern-compatibility.md,EJS 的可执行与保留范围见 docs/ejs-compatibility.md。
适用场景与注意事项¶
适合这类情况:
- 已经有 SillyTavern 角色卡(PNG / JSON / CHARX),希望在 DSH 原生会话里继续单角色对话
- 需要把 JSONL 聊天记录、世界书和 Chat Completion 预设一并迁过来
- 可以接受公开预览版的能力边界,并愿意在调试视图里核对实际生效的提示
当前里程碑明确没有纳入的部分:
- 群聊、多人互动
- 重前端 / 独立前端
- 需要脚本或远程 HTML 的应用型开场:它们不会在角色库预览里后台启动
世界书和 EJS 也不是全量兼容。独立 World Info 里,正则键、装饰器、概率、向量匹配、定时效果、递归控制和高级插入位置等会保留但不执行;导入器在不支持字段会改变激活条件时,不会执行半支持条目。EJS 只执行能从当前 Session 日志确定性重建的模板语义,setvar / incvar / decvar、页面对象、Date、随机数和 Host 异步 API 都不提供。单条模板失败时,只跳过对应模块或世界书条目。
安装前还有几条必须看的安全说明。目录页写明:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证;如需可复现安装,请固定 commit 哈希。角色卡、世界书和脚本都属于不信任内容:EJS 与世界书正则在独立 QuickJS / WASM 运行时中执行,不会获得 Host 的文件、网络、进程或模块接口;远程和 data-URL 资源既不抓取也不解码。
反馈 Issue 时,请说明卡片格式、预期表现、实际表现与最小复现步骤;不要上传无权公开的角色卡、私有社区内容、Token 或完整 Session Log。欢迎带着自己有权使用的卡片来体验,也欢迎一起补全不同卡片生态的兼容性。
小结¶
dsh-agent-rp 把 SillyTavern 侧已经常见的角色卡、预设、世界书和聊天记录,迁进 DeepSeek Harness 的原生会话。角色就是顶层 Agent,对话发生在普通会话里,而不是再套一层旁白或子代理。它现在是公开预览版,聚焦单角色 RP、迁移和轻前端;群聊和重前端还不在范围内。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-agent-rp/
GitHub:https://github.com/hewzhew/dsh-agent-rp