《绝区零》Fairy Ⅲ 的 H.D.D 皮肤:开机动画、可沿纵轴拖动(X 轴固定)的常驻眼徽,用来避开正文;每天由模型生成 5 段时段问候台词(每句不超过 20 字),用本地 GPT-SoVITS 合成,取用顺序为「今日 → 最近一份 → 内置语音」,生成失败也有声音。回复可选朗读:末尾标记行优先于字数判断,长回复可先压成一句结论;朗读器对刚念过的句子做 MD5 去重,保证每条只念一次,切换会话保持安静。本仓库是 dsh-fairy-zzz 的个人定制分支,包名、路由与存储命名空间独立,并做了摘要接口限流、引擎启停改 POST、TTS 缓存与问候语定期清理。插件会在自身目录写两份本地诊断日志(客户端版本、决策追踪),只留本机、不外传。本仓库是 AssassinVIX/fairy-zzz-plugin(上游包名 dsh-fairy-zzz)的个人定制分支:与上游二选一安装,不要同时装——两者都会在相同的 DSH 界面挂载全屏皮肤。每日动态问候与朗读摘要需要 ~/.dsh/fairy-tts.json(或 DEEPSEEK_API_KEY)提供 DeepSeek 兼容 API key;未配置时只播放内置问候音频。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jediliu005/dsh-fairy-zzz-for-jediliu
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
Fairy Ⅲ · 《绝区零》H.D.D 皮肤 —— 个人定制分支
派生自 dsh-fairy-zzz(MIT,作者 AssassinVIX),在其上做了独立的改造与收敛。
一、这是什么
把 DeepSeek Harness 的 Web 界面换成《绝区零》Fairy 的 H.D.D 终端:开机动画 → 居中问好 → 收成常驻眼徽;并用本地 GPT-SoVITS 把回复念出来。
本仓库是个人定制版:包名、路由、存储键、slot 命名空间全部独立,可与上游插件并存而不冲突。
二、血缘与上游
| 项 | 值 |
|---|---|
| 上游仓库 | https://github.com/AssassinVIX/fairy-zzz-plugin |
| 上游包名 | dsh-fairy-zzz |
| 本分支包名 | dsh-fairy-zzz-for-jediliu |
| 许可证 | MIT(继承上游) |
| 眼徽 SVG | Apache-2.0,改编自 Fairy-DSH(详见 NOTICE-fairy-dsh.md) |
上游原版说明保留在 docs/upstream-README.md,便于对照。
三、本分支改了什么
1. 彻底改名,可与上游共存
改名不是改一个字段,而是一条链。本分支同步了全部标识点:
package.json name dsh-fairy-zzz → dsh-fairy-zzz-for-jediliu
cordis.patch.yml 条目 id fairy-zzz-skin → dsh-fairy-zzz-for-jediliu-skin
服务端插件 name fairy-zzz → dsh-fairy-zzz-for-jediliu
客户端注册 id dsh-fairy-zzz → dsh-fairy-zzz-for-jediliu
HTTP 路由前缀 /fairy-zzz/* → /dsh-fairy-zzz-for-jediliu/*
localStorage 键 fairy.zzz.* → dsh-fairy-zzz-for-jediliu.*
漏掉任何一处,启动时会报 duplicate factory registration 并连带停用整个插件组合——这是本分支踩过并且修好的坑。
2. 动态问候语音(每天 17:00)
- 插件装载后与每 30 分钟检查一次:17:00 之后若当日台词不存在,就用模型生成 5 个时段(morning/noon/afternoon/evening/night)的短句,每句 ≤ 20 字,并避开前一天的句子。
- 台词写入
greet-gen/<YYYY-MM-DD>/<slot>.wav与texts.json。 - 前端取用顺序:今日文件 → 最近一份 → 内置
assets/voice/。整条回落链保证「生成失败也有声音」。
3. 朗读摘要(长文本压缩)
POST /dsh-fairy-zzz-for-jediliu/summarize 把长回复压成一句中文结论(≤40 字)再朗读;短文本直接读全文。摘要使用自己的 API Key,与主对话互不影响。
4. 标记化朗读(推荐用法)
回复最后一行写:
【读·摘要】技术类回复的一句话结论
【读·吐槽】日常闲聊的一句话吐槽
插件优先朗读这一行,不受字数上限与技术词限制;没有标记时才回落到「≤80 字 + 非技术词」的启发式判断。这样朗读内容由回复作者显式控制,不必猜。
5. 自动朗读(观察式)
宿主不向消息组件传递文本,因此本分支改为观察 DOM 中最新一条回复:
- 启动时先记录基线,刷新页面不会把历史消息重读一遍;
- 文本连续稳定 3 次(约 4.5 秒) 才朗读,避开流式输出中途;
- 同一条回复在流式里变长时不重复朗读(防回声);
- 批量挂载超过 3 条时不触发(防页面刷新时连读)。
6. 眼徽可纵向拖动
Dock 相的眼徽支持上下拖动(X 轴锁死),用于避开正文;偏移存 localStorage,并夹在 ±40vh 内。
7. 安全与资源收敛
| 项 | 处理 |
|---|---|
POST /summarize |
内存级限流 20 次/分钟,超限 429(防本机脚本刷爆额度) |
POST /engine |
启停引擎改为 POST(原 GET 可被跨站简单请求触发) |
| 静态文件 | resolve + startsWith 守卫,../ 与 %5c 均无法逃出 assets/ |
| TTS 缓存 | 超 100MB 或 200 条时按最旧清理 |
| 问候语音 | 只保留最近 7 天 |
| 独立 agent 预设 | 已删除:本皮肤只负责视觉与语音,不替换宿主工具集 |
8. 语音播放统一管理
问候音与朗读音统一由 stopSpeech() 控制:朗读开始会先停掉问候音,避免两路音频叠放产生回声。
四、安装
# 以本地 link 方式安装到指定 profile
dsh plugin --profile desktop add "link:/path/to/dsh-fairy-zzz-for-jediliu"
或把它放进 profile 的 node_modules,并在 package.json 的 dsh.profile.bundles 中加入 dsh-fairy-zzz-for-jediliu。
安装后重启 DSH;皮肤会在整页刷新时加载。
五、配置
语音引擎目录
在插件目录下放置 voice-home.txt,内容为本地 GPT-SoVITS 引擎目录(一个包含 fairy_server.py、python\python.exe、GPT-SoVITS 的文件夹):
/path/to/your/tts
也可以在 DSH 的「设置 → Fairy」里填写,插件会自动写入同一文件。未配置引擎时皮肤照常工作,只是不朗读。
朗读摘要的模型
~/.dsh/fairy-tts.json:
{ "apiKey": "sk-...", "baseUrl": "https://api.deepseek.com", "model": "deepseek-chat" }
不配置则摘要不可用,朗读回落到「直接读原文/标记行」。
六、隐私与网络
- 唯一的出网请求:
/summarize与动态问候生成时调用baseUrl指定的模型接口(默认 DeepSeek);其余网络请求全部指向127.0.0.1。 - 密钥只从本地配置文件读取,不写日志、不回传、不写进仓库。
- 语音合成在本机完成,音频只落在插件目录的
cache/与greet-gen/。 - 仓库内不含任何机器相关路径、账号信息或预生成音频。
七、致谢与许可
- 上游:AssassinVIX/fairy-zzz-plugin(MIT)
- 眼徽几何与动效:Fairy-DSH(Apache-2.0,见
NOTICE-fairy-dsh.md) - 本分支代码同样以 MIT 发布,见
LICENSE
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 9925
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 9925
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 6712
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
ccch1mneyyy/dsh-TUI★ 6538
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 4808
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1672
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。