dalintian / dsh-means-digital-sweet-heart

Listed

DSH means Digital Sweet Heart — A DSH Plugin to turn your DeepSeek Harness to AI girlfriends. 一个DSH插件将你的DeepSeek Harness改造成AI女友。

mainOther View source

Installation

pnpm dsh web

This command is generated from the GitHub repository address. Inspect the upstream README and source before running it; pin a release or commit when reproducibility matters.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 24796d4Synced Aug 18, 2026

💘 Digital-Sweet-Heart(甜心助手 · AI 女友插件)

项目仓库: https://github.com/dalintian/Digital-Sweet-Heart | npm 包名:dsh-client-ui-girlfriend

「把 DeepSeek Harness 变成你的 AI 女友」—— 一个微信风格、会记住你的 TA 的聊天插件。

打开 DSH 的 Web 界面,你会发现左侧不再是干巴巴的会话树,而是「我的女友」好友列表;右侧是熟悉的聊天窗口。从添加一位专属角色、生成她的肖像,到她用你设定好的语气回你消息、给你"拍"照片、"录"视频——全程只花几分钟。


🎀 她(和 TA)能做什么

1. 微信同款界面,零学习成本

好友列表展示头像、昵称、最后一条消息、时间;点左键进入对话,输入框、气泡、发送箭头一应俱全。你不需要学任何新东西——就像在用一个你熟悉的聊天软件,只不过对面不是真人。

2. 亲手"捏"一个 TA(重点!)

点左上角的 + 添加好友,填写:

设定项举例
名字小雅
外形参数黑色长发、165cm、笑起来有酒窝、爱穿浅色连衣裙…
性格温柔体贴,偶尔调皮,很粘人
爱好画画、听民谣、做甜点、晚上散步
对话语气叫我「亲爱的」,句尾爱加「呀」「啦」
角色背景我们是大学同学,她现在是插画师,我们在一起三个月

填完点击「生成预览图」——文生图模型按你的描写画出肖像;不满意?「重新生成」,想看几版看几版,直到你心里那个 TA 出现在屏幕上,再**「满意,保存」**。TA 的完整人设会写进一个 Markdown 设定文件,肖像图也会存成文件,随时可以改、可以备份。

3. 对话真的"像 TA"

每次聊天,插件都会把 TA 的完整设定注入模型提示词——外形、性格、语气、你们的背景故事,全都会体现在回复里。她不会跟你讨论"我是 AI 模型",只会用她的方式和你说话。

4. 三个魔法按钮

  • 📷 发张照片:根据最近的聊天内容,自动生成一张应景的照片发给 TA;
  • 🎬 发个视频:同样按上下文生成一段短视频;
  • ⬆️ 上传照片:把你自己拍的照片丢进去,视觉模型先"看"一遍,再让 TA 结合聊天上下文自然回应——「哇亲爱的,你窗外的夕阳好美呀!」

5. 管理一个"通讯录"的 TA

右键任何一个好友:编辑人物设定(改人设、重生成肖像)、删除好友(两次点击确认,防手滑)。想要几个就养几个——温柔邻家、傲娇学姐、元气学妹,随你开心。

6. 你的数据你做主

  • 角色设定与肖像图存在本机 <DSH 主目录>/storages/girlfriend/,Markdown 明文可读,直接改文件就能改人设;
  • API Key 只存浏览器 localStorage,只发给你自己配置的接口;
  • 四组模型(对话/视觉/文生图/文生视频)完全自由配置,OpenAI 兼容即可——DeepSeek、OpenAI、智谱、通义、本地 vLLM……谁便宜用谁,随时在左下角 ⚙ 里换。

✨ 一句话总结:这是一个关于"情感陪伴 + 角色扮演 + 一点点 AI 魔法"的玩具,也是一个完全私有、按你喜好运行的聊天室。


📋 系统要求

项目要求
操作系统Windows 10+ ✅ 已实测;macOS / Linux ⚠️ 见下方说明
Node.js≥ 22
包管理器pnpm
模型接口自备,任意 OpenAI 兼容端点(/chat/completions/images/generations/videos/generations

不需要任何 DeepSeek 官方 Key,四组模型全部由你自由配置。

⚠️ 平台兼容性说明(如实声明):本插件代码本身没有平台特有逻辑——宿主端只用 Node 跨平台 API(node:fs/node:http),浏览器端是标准 Web 技术(fetch/FileReader/crypto.randomUUID),安装脚本在 Windows 用 junction、macOS/Linux 用符号链接(process.platform 分支)。目前只在 Windows 上进行了实机验证;macOS / Linux 按代码推演应当可用,但未经真机测试。如在 macOS / Linux 上遇到问题,欢迎到仓库提 Issue 反馈,会尽快修复。


🚀 安装

场景 A:还没有 DeepSeek Harness(从零开始)

先装 DSH,再装本插件。DSH 目前是 0.1.0-rc 阶段,以源码仓库形态分发:

# 1. 获取 DSH 源码并构建(第一次稍久,几分钟)
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build

# 2. 验证 DSH 能启动(看到 dsh web: http://127.0.0.1:3080 即成功,Ctrl+C 停掉)
pnpm dsh web

# 3. 安装本插件(推荐从 GitHub 仓库安装)
pnpm dsh plugin --profile web add github:dalintian/Digital-Sweet-Heart
# 备选来源(三选一):
#   npm 已发布:  pnpm dsh plugin --profile web add dsh-client-ui-girlfriend
#   本地目录:    pnpm dsh plugin --profile web add /path/to/Digital-Sweet-Heart
#   手动:        cd ~/.dsh/profiles/web && pnpm add github:dalintian/Digital-Sweet-Heart   # 再补跑一次 postinstall,见下

# 4. 重新启动 DSH Web
pnpm dsh web

装完即自动生成两套配置:插件安装钩子(postinstall)会在 ~/.dsh/profiles/ 下创建一个 girlfriend 配置,同时不影响现有 web 配置——所以接下来你有两条命令,随时切换、永远不用再改设置:

pnpm dsh web                     # 原生界面 → http://127.0.0.1:3080
pnpm dsh --profile girlfriend    # 女友界面 → http://127.0.0.1:3081
  • Git 源安装若被 pnpm 拦截 build 脚本(postinstall):把提示的键加进 ~/.dsh/profiles/web/pnpm-workspace.yamlallowBuilds 后重试(dsh plugin 会打印具体操作)。
  • 拿到别人构建好的 DSH 发行包?跳过第 1 步,解压后直接执行第 3、4 步。
  • 手动安装(不走 dsh plugin)者:pnpm add 后若 postinstall 未执行,手动运行一次 node node_modules/dsh-client-ui-girlfriend/scripts/postinstall.cjs

场景 B:已经装了 DeepSeek Harness

pnpm dsh plugin --profile web add github:dalintian/Digital-Sweet-Heart   # 1. 安装(自动注册;postinstall 自动生成两套配置;GitHub 源首次按提示放行 build 脚本)
pnpm dsh web                                                            # 2. 重启(仍是原生界面)

安装完成后的两条启动命令:

pnpm dsh web                     # 原生界面    → http://127.0.0.1:3080
pnpm dsh --profile girlfriend    # 女友界面    → http://127.0.0.1:3081

正在运行的老实例不受影响;新配置对下次启动生效。

手动安装(不用 dsh plugin 命令时)

cd ~/.dsh/profiles/web
pnpm add github:dalintian/Digital-Sweet-Heart   # 或 npm 包名 dsh-client-ui-girlfriend / 本地目录
node node_modules/dsh-client-ui-girlfriend/scripts/postinstall.cjs   # 若未自动执行,补跑一次生成女友配置

手动安装会同时生成两套配置:web(默认原生)+ ~/.dsh/profiles/girlfriend/(女友)。上面 pnpm dsh --profile girlfriend 即可用。

如果某次安装没有执行 postinstall(例如通过 git/path 依赖安装时 pnpm 默认跳过生命周期脚本),也可以手动把以下内容加入 ~/.dsh/profiles/web/cordis.patch.yml 后重启 dsh web(插件以默认禁用加入,不改变原生界面):

- insert:
    - id: ui-girlfriend
      name: 'dsh-client-ui-girlfriend'
      disabled: true

升级 / 卸载

pnpm dsh plugin --profile web update github:dalintian/Digital-Sweet-Heart   # 升级
pnpm dsh plugin --profile web remove  dsh-client-ui-girlfriend              # 卸载

卸载后重启即恢复原生界面;角色数据文件不会被删除(在 <DSH 主目录>/storages/girlfriend/)。彻底移除女友配置:顺手删掉整个 ~/.dsh/profiles/girlfriend/ 目录即可(里面只有本插件生成的 4 个配置文件)。


⚙️ 首次使用:配置 API(30 秒)

点好友列表左下角的 ⚙,配置四组模型(可都指向同一个服务):

分组负责接口路径
💬 对话模型聊天、生成图片/视频提示词POST {地址}/chat/completions
👁️ 视觉语言模型分析上传的照片POST {地址}/chat/completions(带图片消息)
🎨 文生图模型肖像图、「发张照片」POST {地址}/images/generations
🎬 文生视频模型「发个视频」(可配置轮询路径)POST {地址}/videos/generations

哪组没配,用到时界面会温柔地提醒你(「文生图 API 未配置,请先配置」),不会静默失败。


💾 数据都放在哪

数据位置
角色设定(Markdown,含 ## 肖像图 路径)<DSH 主目录>/storages/girlfriend/<角色ID>.md(如 ~/.dsh/storages/girlfriend/
肖像图同目录 images/<角色ID>.png
两套界面配置(web / girlfriend profile)<DSH 主目录>/profiles/(安装时自动生成,无需手动编辑)
API Key / 设置 / 聊天记录浏览器 localStorage(键 dsh.girlfriend.*

启动时会自动读回 Markdown 设定——手改文件、刷新页面,人设就更新了。


🧐 常见问题

  • 安装后 pnpm dsh web 怎么还是原生界面? 这是设计如此:插件默认以禁用状态加入配置,保证原生主界面不变;女友界面用 pnpm dsh --profile girlfriend 打开(安装时自动生成好这套配置)。
  • 女友配置是怎么来的? 安装钩子(postinstall)在 <DSH 主目录>/profiles/girlfriend/ 生成了 4 个配置文件 + 一个指向插件安装目录的链接,全程零操作。
  • 能和我已有的 DSH 实例并存吗? 能:两条命令各自默认端口(3080 / 3081),互不干扰;还可以在命令后加 --port <数字> 自定义端口。
  • 发不出视频? 各家文生视频标准不统一:支持"直接返回 URL"和"任务 id 轮询"两种形态,异步任务的轮询路径可在 ⚙ 里配置。极少数厂商需自行适配。
  • 模型接口报 CORS? 插件经宿主端 /girlfriend/* 路由代理所有模型请求(同源),浏览器侧不存在 CORS 问题。
  • 安全说明:与 DSH 其它本地接口一样,/girlfriend/* 不设鉴权(面向本机单人使用);API Key 只发往你配置的端点。

🛠 给开发者 / 维护者

  • 项目仓库https://github.com/dalintian/Digital-Sweet-Heart——源码、Issues、PR 都在这里,欢迎来玩 ⭐
  • 运行机制:双面插件(dsh.client)。宿主半身(Node)注册 /girlfriend/* 路由(模型代理 + 设定文件/肖像图读写);浏览器半身接管 sidebarconversation 两个插槽(priority: -1),左右两栏通过一个可观察模型共享状态。
  • 两套配置原理:插件自带行清单(cordis.patch.yml)以 disabled: true 插入,dsh web 保持原生;scripts/postinstall.cjs 生成 girlfriend profile,其 patch 把该行改为 disabled: false 并把端口默认到 3081,由此实现两条命令。
  • 重新构建:源码在 DSH 仓库 packages/client/ui-girlfriend/pnpm exec tsc -b packages/client/ui-girlfriend 生成 lib/types,再 pnpm --filter @deepseek-ai/dsh-client-ui-girlfriend bundle 生成 lib/;把 lib/package.jsoncordis.patch.ymlscripts/README.md 按本包结构排列即可发布。
  • 改名发布:三处名字必须一致——package.jsonnamecordis.patch.ymlname、bundle 内嵌 id(__ModuleLoader__.load({ id }))。改名后运行 node scripts/reid.cjs <旧名> <新名> 重盖戳,npm pack --dry-run 核对后 npm publish
  • 约束提醒:浏览器 bundle 只外部化平台模块(react);除 type-only 外勿 value-import 其它 @deepseek-ai/* 包。postinstall 只在 DSH 主目录写配置文件与目录链接,不触碰用户数据。

📜 许可证

MIT License

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 14, 2026, 10:08 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.