dsh-agent-rp README

The project's README from github.com/hewzhew/dsh-agent-rp. As one markdown file: README.md.

DSH Agent RP

DSH Agent RP 是运行在 DSH 上的原生角色扮演 Runtime。角色会直接作为顶层 Agent 行动;Persona、世界、提示策略、正则包、状态和记忆都是可以独立选择、复用与组合的一等资源,而不是某张角色卡的附属设置。

Character Card、Chat Completion 预设、World Info、MVU、EJS 和 Tavern Helper 是目前优先接入的内容格式。它们让已有创作可以进入这套 Runtime,但不会反过来定义它的能力边界。

现在可以体验什么

角色本身仍是顶层 Agent,角色对话直接发生在普通会话中。未启用故事工程时没有额外的旁白、协调器或 Character 子代理;启用故事工程后,人物 Worker 只在正文前依据各自私有认知提出行动,最终回复仍由顶层角色 Agent 展示。

一轮中的工作按用途分开:搜索等写作前工具会把结果交还角色,并继续使用当前角色与预设完成正文;可选的正文审阅 Worker 只接收角色已经写完的回复,不重新注入酒馆预设,审阅结果会作为可切换回复版本保存;正文后生成的图片只进入精简的呈现交接,同一回合首次生图尝试完成或失败后都会隐藏生图入口,下一回合才恢复;MVU 状态由后续 Worker 读取最终可见正文,依次生成候选操作并独立核验,只有核验结果可以结算。每项 Worker 都有独立请求和终止记录,单项失败会保留角色 Agent 原文并继续后续阶段。玩家明确要求保存长期记忆时,角色可以在可见回复末尾调用 remember,保存成功后直接结束本轮,不再为工具回执重写一次正文。

故事工程的文件模型、认知范围、写作流水线与失败降级见 docs/story-engine.md。它与正文审阅、状态结算的完整先后关系见 docs/multi-agent-turn-workers.md。

安装

需要 Node.js 22.19+ 或 24+,以及 pnpm 11。没有 pnpm 时可以先运行 npm install --global pnpm@11。安装器会准备经过验证的 Agent Host,从 npm 的 next 标签安装或更新 Agent RP,并保留 ~/.dsh 中已有的角色与会话;它不会静默安装全局工具。

DSH Desktop

DSH Desktop 使用自己封装的 Node、pnpm、DSH Host、数据目录和当前激活的 profile,不会复用下面的 Windows Agent Host。当前正式版 DSH Desktop 2.0.2 及其仓库中的 2.0.3 开发版本均固定在未包含安全插件事件写入能力的官方 DSH 0.1.1-rc.2;把 Agent RP 安装进 Desktop profile 只能按纯对话兼容路径看待,不能完整保存 Agent/MVU 回合。

若只需协助验证纯对话兼容,可以从 Desktop 托盘打开它自带的 DSH Terminal,在当前激活的 profile 中安装插件后重启 Desktop:

dsh plugin add '@hewzhew/dsh-agent-rp@next'

这条路径尚未列为完整支持入口。不要运行下面的 Windows 安装器来“覆盖” Desktop;它会创建一个独立 Agent Host,而不会修改 Desktop 安装包内部的运行时。完整支持需要 Desktop Host 提供与 Agent Host 等价的安全插件事件接口,或允许 Desktop 连接到经过验证的外部 Host。

Windows

$installerPath = Join-Path $env:TEMP 'install-dsh-agent-rp.ps1'
Invoke-WebRequest 'https://raw.githubusercontent.com/hewzhew/dsh-agent-rp/main/scripts/install-windows.ps1' -OutFile $installerPath
powershell -NoProfile -ExecutionPolicy Bypass -File $installerPath -Start

当前 Agent Host 固定在官方 DSH 0.1.1-rc.2,并通过 pnpm 的可审计补丁机制补上插件私有事件写入能力;依赖版本和补丁哈希都由锁文件约束,安装器还会实际导入 Session 模块验证能力已经生效。官方 DSH 发布等价接口后会移除这层补丁。直接运行官方 @deepseek-ai/[email protected] 仍可使用纯对话兼容模式,但不能完整保存 Agent/MVU 回合记录;官方 runner 与 Agent Host 显示相同的 DSH 版本号,不能只按版本号判断能力。

安装器会在默认 DSH 数据目录生成稳定的 Agent RP 专用启动入口。以后更新时重新运行同一安装器;平时启动使用:

& "$env:USERPROFILE\.dsh\bin\dsh-agent-rp.ps1"

设置过 DSH_HOME 时,安装器会打印该数据目录中的实际启动路径。不要改回 npx -p @deepseek-ai/dsh@latest dsh --profile web;这会重新进入尚未包含插件事件能力的官方 runner。若界面提示当前 Host 缺少安全插件事件能力,请关闭旧 DSH 后从上述专用入口启动。安装器发现默认端口 3080 已被其他进程占用时不会停止它或再启动第二个 DSH,而会显示进程 PID 和后续命令。

国内 npm registry 较慢时,可在安装器最后一行加 -ChinaMirror。这个选项会同时用于 Agent Host 依赖和 Agent RP 包;安装器脚本与 runner 文件仍从 GitHub 下载。

macOS

Apple Silicon 与 Intel Mac 使用独立安装器。安装器会在 ~/.dsh/bin/dsh-agent-rp 创建稳定入口,并使用与 Windows、Linux 相同的冻结 Agent Host 和插件事件补丁:

installer_path="$(mktemp)"
curl -fsSL https://raw.githubusercontent.com/hewzhew/dsh-agent-rp/main/scripts/install-macos.sh -o "$installer_path"
bash "$installer_path" --start

若缺少原生构建工具,请先运行 xcode-select --install 并安装 Python 3。使用自定义 DSH_HOME 时必须传入绝对路径;安装完成后始终使用安装器打印的专用入口启动,不能改回官方 runner。更新时以同一用户重新运行安装器。

Linux

普通 Linux 桌面或服务器使用独立安装器。请以以后实际运行 DSH 的非特权用户执行;默认会在 ~/.dsh/bin/dsh-agent-rp 创建稳定入口:

installer_path="$(mktemp)"
curl -fsSL https://raw.githubusercontent.com/hewzhew/dsh-agent-rp/main/scripts/install-linux.sh -o "$installer_path"
bash "$installer_path" --start

Debian/Ubuntu 若缺少原生构建工具,可先安装 build-essential 与 python3。使用自定义 DSH_HOME 时必须传入绝对路径;启动器会从自身位置恢复同一个数据目录,不会退回另一个 ~/.dsh。更新时以同一用户重新运行安装器。

无桌面服务器、systemd、Cloudflare Tunnel 和反向代理部署见 Linux 服务器部署。--trusted-host 只允许指定 Host authority 通过 DSH 的可达性围栏,不提供账号、登录或访问控制;对公网暴露时必须另配认证层。

贡献者需要修改源码时,才应克隆仓库并在仓库根目录运行 pnpm install、pnpm run build,再让 Agent Host 的 dsh plugin --profile web add . 指向本地目录。

早期安装器写入的版本不会自动迁移。若启动错误中出现 .dsh\plugins\dsh-agent-rp,请先把该目录移出 plugins 目录作备份,确认 DSH 能启动后,再按上面的 profile 命令安装。不要删除整个 .dsh,会话数据与旧插件目录不是一回事。

不要把未验收的 DSH 版本强行套用到当前 Host 补丁,也不要在 Issue 或日志里公开自己的 NPM Token。

Android / Termux 预览

Termux 路线面向 ARM64、Android 11 及以上设备,目标是在手机本机运行、不让电脑保持开机。旧预览已经验证过安卓原生依赖、图片解码后备模块和本地启动,但当前安装入口正在迁移。

手机安装器仍固定在旧的 DSH 0.1.0-rc.6,尚未迁移到当前 Agent Host runner,因此不适用于当前 main 的完整 Agent/MVU 回合。现有安装不要为了追随桌面版本而手工覆盖 DSH 包;新的 Termux 安装与更新暂缓,等安卓原生模块和 patched runner 一起完成实机验收后再恢复下面的正式命令。

旧安装仍可运行原来已经落盘的版本,但不要重新执行旧安装器更新到当前 main。

若启动或导入角色卡时遇到问题,运行 dsh-agent-rp-doctor 即可得到一份可直接贴到 Issue 的脱敏体检结果。它只检查版本、模块和 Android 文件系统能力,不读取令牌、角色卡或会话内容。

运行旧安装后仍可在同一部手机的浏览器打开 http://127.0.0.1:3080。角色卡和会话位于 ~/.dsh;不要删除这个目录。当前路线不把老设备上的 bash 沙箱或编码 Agent 计入手机预览范围。

需要长时间把页面留在后台时,可以先在 Termux 运行 termux-wake-lock,结束后运行 termux-wake-unlock,避免系统过早挂起本地服务;这不会绕过 Android 的电池优化设置。

页面正常打开后,可以在 Chrome 或 Edge 的菜单中选择“添加到主屏幕”或“安装应用”。DSH 已提供全屏 Web App 清单,图标启动后仍会连接 Termux 中的本地服务;重启手机后需要先重新运行 dsh-agent-rp --port 3080。

第一次开聊

  1. 在 DSH 中新建空白会话。
  2. 打开 Agent RP,选择「开始游玩」。
  3. 选择「角色对话」或「世界场景」。
  4. 组合角色或场景、Persona、世界、提示策略与独立正则包;角色模式还可以选择开场白。
  5. 启动前检查已知权限,然后进入游玩。会话中仍可打开资源库、设置与调试视图。

导入后的角色、Persona、世界、预设和独立正则包会分别进入资源库。角色卡内置世界书会同时拆成独立 World 资源,并保存角色到主世界的默认绑定;新会话从绑定 World 的独立快照完成世界召回与 MVU 状态处理,导出当前版本时再组装为 SillyTavern character_book。相同内容只保留一份 World,原始 PNG、JSON 或 CHARX 不会被改写。角色卡可以先移入收纳箱;只有没有历史会话引用时才能二次确认永久删除。预设可以在资源中心改名或移除;移除只删除可复用副本,不影响已经开始的会话。独立正则包从资源中心导入,在“开始游玩”中按选择顺序组合;全局正则包先于预设和角色卡正则执行,内容会冻结到新会话,之后移除资源库副本不会改写已有会话。开始游玩后,“会话设置 → 世界书”可以直接添加资源中心已有世界书,或从文件导入新资源;两种方式都把当前内容冻结到本会话并排除重复资源。“会话设置 → 预设”可以调整提示模块与预设正则的开关;修改只属于当前会话。迁移 SillyTavern JSONL 聊天时可以直接选择资源中心已有角色卡,也可以从文件导入角色卡。

无需预先选择某个 Agent 预设;从空白的标准会话选择角色时,插件会自动进入角色会话。已经有聊天内容的普通会话不会被修改。

要迁移旧聊天,可在角色会话中附加一份 SillyTavern JSONL;迁移面板可以选择资源中心已有角色卡,或导入一份新的 PNG、JSON、CHARX 角色卡。将角色卡和 JSONL 放在同一条消息中仍可以直接准备两项资源。导入会创建新的角色对话,不会修改源文件或来源会话。

目前的范围

这个里程碑优先完成可靠的角色与世界场景闭环,而不是按功能数量追赶另一套前端。Agent 模式已经提供固定顺序的故事工程写作流水线、角色 Agent、正文审阅 Worker 与状态结算 Worker;正文审阅默认关闭,可以在 Agent RP 全局设置的「多 Agent 回合」中启用,并在启用时每轮增加一次轻量模型请求。存在结构化状态计划的回合固定增加候选与核验两次轻量请求;核验默认跟随会话模型,也可以显式选择另一个已配置模型来缩短后台等待。Worker 不会自行生成无边界任务图。故事工程已经支持多人物分别依据私有认知参与同一篇正文,但传统群聊界面、多个并列顶层角色 Agent 和重前端/独立前端还没有完成。

需要脚本或远程 HTML 的内容会在启动前检查已知的脚本、样式、字体、图片、媒体、嵌入页与数据连接,并把许可限制在对应角色、预设、脚本和来源;动态出现的新能力仍会在实际触发时确认。可执行 HTML、Tavern Helper、EJS 与世界书正则运行在不同的受限环境中,不会获得 DSH Host 的文件、进程、凭据或页面 DOM。兼容层仍在依据真实内容补全,但新增能力会优先沉淀为可复用接口,不按单张卡片堆特例。

需要 OAuth 或其他回执的外部登录不会给角色卡 iframe 增加弹窗、同源或顶层导航权限。轻前端或 Tavern Helper 脚本发起绝对 HTTPS 窗口请求后,DSH 会展示目标站点;玩家确认后通过独立中转窗口打开登录页,只把有界的登录回执送回发起请求的隔离运行时。中转界面会区分“回执通过安全检查”和“请求运行时已确认接收”,成功后只提供关闭操作,不会继续诱导重复登录。要求 Discord 身份、论坛会员或角色组资格的服务必须继续使用原有第三方 OAuth 与服务端授权判断;DSH 不会以本机身份替代、增加第二登录方式或自动回退。

不依赖既有第三方账号资格的开放服务可以选择接入 DSH 本机身份。玩家在 Agent RP 设置中创建身份后,已接入的轻前端、Tavern Helper 脚本或它们嵌入的 HTTPS 页面可请求一份五分钟有效、绑定目标来源、服务 nonce 和当前卡片或脚本身份的 ES256 证明;显示名称需要单独授权,私钥始终由 Host 保管。这项能力不是 Discord 或其他第三方 OAuth 的替代凭据。协议与接入限制见 安全扩展能力协议。

更具体的格式支持与降级方式见 SillyTavern 兼容说明。

遇到脚本加载、世界书 EJS、行动选项、工作区归属或「RP 互通」问题时,先按 使用与故障排查 取得对应失败详情。全局 Debug 默认关闭;开启后,用户主动点击「复制诊断」会在聚合报告中附加当前会话的 Tavern 脚本与世界书错误详情,世界书「复制失败详情」还会附加有长度上限的 EJS 错误名称、消息和调用栈。EJS 模板可以把运行时值写入错误消息;用户分享 Debug 报告前必须检查报告内容。

需要比较大型卡片改动时,可运行不含社区卡片内容的 合成兼容基准与本地真实卡、预设验收流程。EJS 的可执行与保留范围见 EJS 兼容表;后续世界书与插件生态遵循 安全扩展能力协议。独立 DSH 插件可从 社区插件接入 选择 Host 生命周期接口或 Agent RP 工作台 Slot;安装型第三方扩展另按 SillyTavern 扩展宿主 的单例生命周期设计。npm next 提供经过发布门禁与 provenance 证明的预发布包;源码分支仍只用于贡献和定向验收。

反馈与贡献

如果一张卡片的纯文本部分、世界书、预设或轻前端在 DSH 中表现不对,欢迎提交 Issue。请说明卡片格式、预期表现、实际表现与最小复现步骤;不要上传无权公开的角色卡、私有社区内容、Token 或完整 Session Log。

代码、兼容样本、交互设计和文档改进都欢迎。开始前请阅读 贡献指南。

本项目采用 MIT License。

dsh-agent-rp (hewzhew/dsh-agent-rp)

Searching Database…

What is this?DSH Agent RP is a native roleplay runtime for DSH where the character acts directly as the top-level agent. Personas, worlds, prompt strategies, regex packs, state and memory are first-class resources you pick and combine, not settings attached to one character card.
Is this a standalone app, or does it run on top of DSH?It's a plugin on top of DSH: the installer adds Agent RP to a DSH profile and a local Agent Host serves a web UI you open in a browser. You create a blank DSH session and start a character chat or world scenario from its 'Start Playing' screen.
How do I get it running?Install Node.js 22.19+ (or 24+) and pnpm 11 (npm install --global pnpm@11 if missing), then run the installer for your OS — it prepares a verified Agent Host and creates a stable launch entry under ~/.dsh. To update, re-run the same installer.
Can I bring my SillyTavern cards and chats over?SillyTavern itself isn't needed: Agent RP imports PNG, JSON and CHARX character cards, World Info, Chat Completion presets, standalone regex packs and SillyTavern JSONL chat logs into its own resource library. Original files are never rewritten.
Does it work with the official DSH runner and DSH Desktop?Only in pure-chat compatibility mode: the official DSH runner and DSH Desktop's bundled host lack the plugin event capability, so full Agent/MVU turns aren't saved. Use the installer's patched Agent Host — both display the same DSH version number, so don't judge by it.
Which platforms can I run it on?Separate installers exist for Windows, macOS (Apple Silicon and Intel) and Linux desktops or servers, all using the same frozen Agent Host; the interface is a web app in your browser. An ARM64 Android/Termux preview exists, but new installs are paused mid-migration.
What is Story Engineering?An optional mode that maintains an editable outline, foreshadowing, public history, per-character private knowledge, source material and prose sections. When enabled, research, character, director, section and editor workers collaborate before the prose, and events that actually happened are written back into the project afterwards.
Do the multi-agent turn workers send extra model requests?The prose review worker is off by default and adds one lightweight request per turn when enabled; turns with a structured state plan add a candidate plus an independent verification request. A worker failing never destroys the character's original reply — the turn continues without it.
Can I deploy it on a headless Linux server?Yes — the Linux installer covers servers too, with docs for systemd, Cloudflare Tunnel and reverse proxy setups. But --trusted-host grants no accounts, login or access control, so you must add your own authentication layer before exposing it to the public internet.
Is the Android/Termux version usable right now?Not for new installs: the mobile installer is still pinned to old DSH 0.1.0-rc.6 and hasn't migrated to the current Agent Host runner, so it can't run the full Agent/MVU turns of current main. Existing installs keep working; installs and updates resume after real-device acceptance.
Creator
hewzhew
Size
31.4 MB
Stars
218
Updated
CommitAug 31
Age
2mo
Commits · 90 Days