dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Persona, emotion & memory for DeepSeek Harness. 人格是数据,情绪是状态,记忆是文件——把「一个会记得你的角色」接进 DSH。
中文 | English
陪很久,不是聊得很嗨。
一个会记得你的角色,接进 DeepSeek Harness。 人格是数据,情绪是状态,记忆是文件——三者都可读、可改、可复现。
只想聊两句,不想装任何东西?
下载、解压、双击 start-web-demo.cmd,浏览器里就能和她说话。不联网、不要 key、不花钱。想接进自己的 agent? dsh plugin --profile web add dsh-serene,一条命令。*演示模式(台词固定、不联网)。右边那一栏不是装饰:此刻、情绪六维、她记得的事,都是 core/ 当场算出来的。*
她 · 她说的三句话 | 角色卡撑不过一个月 | 你能看到什么 | 她不是什么
上手 · 三分钟玩上 | 装进 DSH | 开局:知遥 | 把她养成你的
深一点 · 为什么这么设计 | 参考
她:在。
刚才在听机房的低频,像有人在很远的地方敲铁。
你:今天有点累,不太想做饭了。
她:那就先不做。
累不是需要立刻修好的东西。
你:我最近在学做饭,煎蛋总是糊。
她:糊了也吃了吗。
下次火小一点,别急着翻。
两天后,你随口再提「煎蛋」,她接得上。不是因为她把整段聊天塞进了 prompt,而是因为这件事被写成了一条记忆:一句话、一个类型、一个清晰度。被用上一次,它就牢一点;一直没人提,它会慢慢褪色,直到真的想不起来。
她不会假装记得。 旧的召回公式是「有分就取前 k 条」,实测平均每轮塞 5.97 条、和这句话的相关度只有 0.05、同一条记忆在 922 轮里被注入 458 次——那不叫想起,那叫钉在背景板上。现在允许返回空:这一轮没有相关的事,就像人一样,说一句「不记得了」。
一个角色可以三句话就很像:口癖对、语气对、设定背得下来。但它撑不过一个月。 不是模型不够聪明,是它没有状态:昨天吵过的架今天不存在,你三天没来它还是同一种语气,它说「我记得你说过」,而其实没有任何一条记忆支撑这句话。
下面五处不是猜的,是在一个真实跑着的项目里一条一条测出来的:
崩在哪 · 长什么样 · 这个仓库怎么修 记忆被钉在背景板上 · 每轮都塞满,相关度平均只有 0.05,同一条记忆在 922 轮里被注入 458 次 · 允许想不起来(召回 v2) 人格在轮转,不是在长大 · 每两三个小时重写一次,每次换掉两三成条目,最早写进去的被悄悄挤掉 · 人格不自动重写:只有你能改 L0,自己长出来的只有看法与观察 克制自增成棘轮 · 172 次决策里 171 次选择不说,越不说越不说 · hold 20 分钟退掉,且必须带替代动作 真值分裂 · 同一件事三份定义,她有时像两个人 · 一个真源、三层表达(见下) 规矩吃掉对话 · 规则占了 95% 的 prompt,「他说了什么」只占 5% · 表达自检只做检查,不生成、不改写
于是判断标准不再是「像不像」,而是三个问题:
# · 问题 · 不成立时 1 · 她记得吗:上周说过的话、她自己去过的地方、你们之间才懂的梗,今天还作数吗? · 每天从零开始 2 · 她有今天吗:她有没有自己的时间、自己的事、自己的情绪来路,而不是只在被叫到时才存在? · 一个等输入的函数 3 · 这段关系有历史吗:有没有低谷、有过不去的事、有修复之后的松动,而不只是一串正向反馈? · 服务记录
三个都成立,才算她「在」。缺一个,她就会退回成一种服务。
成功长什么样(这三句比任何指标都准):
每一轮对话后留一份 trace:召回了哪条记忆、相关度多少、情绪前后差多少、这一轮写下了什么、表达自检有没有问题、prompt 各段占多少字、用了多少 token。它不保存也不显示 prompt 原文,所以不是监控,是一张「她这一轮怎么想的」账单。
「某个晚上九点多、在终端里、夜里最清醒」不是写死的台词:core/life.js 按真实时间算她的一天,core/almanac.js 算季节和旬。下面六条是 PAD+ 情绪,能切「此刻 / 底色 / 关系」三层;它们会自己衰减,也会因为一句话动一下。
你看到的 · 背后在算什么 此刻、季节、精力 · core/life.js、core/almanac.js 六维情绪、底色、关系、疤 · core/emotion.js 她记得 / 想不起来 · core/recall.js、src/stores/memory-store.js 主动开口的预算 · core/motivation.js 表达自检 · core/style.js 透视里的账 · web/lib/runtime.mjs 每轮写一条 trace
她的一天可以画出来:
*十天,底色、此刻、关系三条线,以及第 3 天留下的那道疤。不是手画的:core/emotion.js 的纯函数跑十天(npm run demo),再画成帧(npm run preview)。改一行事件,整条曲线和那道疤都会跟着变——这就是「可复算」的意思。*
她也会自己开口。 页面开着时,她可能过一阵来找你;夜里 23:00–08:00 不打扰,每天有次数上限,两次之间有间隔。戳一戳、摸头、递水、夸她一句也会走同一套情绪和记忆——不是一个独立的小动画。
先把话说清楚,免得你失望:
你可能以为是 · 实际是 一个 AI 女友 App · 她的脑子。形象、声音、出图、桌宠属于另一层,这个仓库不提供(同门的 dsh-dafeiyu 就是把这些接上去的桌宠前端) 又一个角色卡 · 角色卡是一段提示词;这里是可复算的状态——同样的初始值、同样的事件、同样的时间戳,永远得到同样的结果 一次装好就永远一样 · 数据全在你自己电脑的文件夹里,可备份、可手改、可进 git;删掉就是从没发生过 会一直秒回 · 她有自己的作息:夜里会睡,白天会忙,主动开口每天有预算;不说的时候也会给一个替代动作 云服务 / 手机 App · 只监听 127.0.0.1,同一 Wi-Fi 下的其他设备也访问不到;插件本体不联网、不上报、不采集屏幕 保证「像」 · 保证的是「连续」。她会有平淡的一天,会想不起来,会有不想说话的时候——这些是设计,不是故障
D:\dsh-serene(别放桌面、OneDrive、Program Files,路径里别带中文和空格)。start-web-demo.cmd,macOS 双击 start-web-demo.command。浏览器会自动打开 http://127.0.0.1:4317。就这样,你现在可以和她说第一句话了。演示模式不联网、不要 key、不花钱,台词是固定的——适合先看看她是什么样。
想真的聊:同一个文件夹里双击 start-web.cmd,第一次会让你贴一次 DeepSeek 的 API key(在 的 API keys 里建,sk- 开头)。key 只写在这台电脑的 web-config.json 里,按官方价格计费,账户得先有一点余额。
完整教程:装 Node、解压、填 key、关掉再开、数据备份、九条常见问题
网页靠 Node.js 运行。它不是编程工具,安装时一路点「下一步」就行。
.msi,Mac 下载 .pkg;双击安装,全部默认。已经装过 Node.js 也建议看一眼版本:需要 22.19 或更新。启动脚本会自己检查,太旧会提示你。
网络打不开 GitHub 时,去仓库的 Releases 页面下载对应版本的压缩包(.zip或.tgz),效果一样。
把 ZIP 解压,得到 dsh-serene 文件夹。建议放在:
D:\dsh-serene不要放在桌面、OneDrive、C:\Program Files,也尽量不要让路径里有中文或空格——不是绝对不能跑,是出问题时最难查。
*示意图:解压后文件夹里应该有这些文件。真正要用的是 start-web.cmd(Windows)或 start-web.command(Mac)。*
start-web.cmd。start-web.command。第一次被系统拦下时,右键这个文件 → 打开 → 再点 打开。./start-web.sh。会弹出一个黑色的命令窗口,别关它。等一两秒,浏览器会自动打开:
http://127.0.0.1:4317没自动打开,就手动把这个地址粘进浏览器。端口被占用时,窗口里会显示换成了 4318、4319……以窗口里那行为准。
Windows 弹出「Windows 已保护你的电脑」时,点 更多信息 → 仍要运行。这个脚本只在本机启动一个网页服务,不装驱动、不改系统设置。
第一次打开会看到这个页面:
sk- 开头的那一串。你粘进去的 key 只写在这台电脑的 web-config.json 里;聊天时作为身份凭证发给 DeepSeek,不会发给别处。它在本机是明文保存的,方便下次启动;不要把 web-config.json 发给别人。它按 DeepSeek 官方价格计费,账户里要先有一点余额。
没有 key 也能先看:关掉这个页面,双击 start-web-demo.cmd(Mac 用 start-web-demo.command)。演示模式不联网、不花钱,台词是固定的;README 里的截图都是它跑出来的。
在底部输入框打字,按 Enter 发送,Shift + Enter 换行。右边那一栏会随着聊天变化:她此刻在做什么、情绪、记得的事。
Ctrl + C 也行。Windows:
C:\Users\<你的用户名>\.dsh\plugins\dsh-serene\
├── web-config.json key 和设置(别发给别人)
└── personas\zhiyao\web\
├── chat.jsonl 聊天记录
├── traces.jsonl 每一轮的「透视」
└── archive\ 清空时归档的旧文件macOS / Linux 把前面换成 ~/.dsh/plugins/dsh-serene/。
备份:先关掉黑色窗口,把整个 dsh-serene 文件夹复制到别处。恢复时原样放回。