dsh-dfy-pet 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +34 -0
- package/NOTICE.md +50 -0
- package/README.md +201 -0
- package/assets/pet-sheet.webp +0 -0
- package/client.js +1388 -0
- package/cordis.patch.yml +3 -0
- package/icon.png +0 -0
- package/index.js +108 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/monitor.js +400 -0
- package/package.json +63 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
大肥鱼项目署名许可 1.0(自定义许可,非标准 MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 YunYueSama
|
|
4
|
+
作者:YunYueSama
|
|
5
|
+
仓库:https://github.com/YunYueSama/codex-deepseek-pet
|
|
6
|
+
|
|
7
|
+
1. 适用范围
|
|
8
|
+
|
|
9
|
+
本许可适用于本仓库中由项目作者拥有或有权授予许可的所有材料,包括源代码、文档、角色设定、图片、设计图、动画与其他资源(以下称“材料”)。第三方材料及另有许可声明的部分不在本授权范围内,详见 ASSET_LICENSE.md。
|
|
10
|
+
|
|
11
|
+
2. 授予的权利
|
|
12
|
+
|
|
13
|
+
在遵守以下条件的前提下,任何人均可免费使用、复制、修改、合并、展示、发布、分发、再许可及出售材料或其衍生作品,包括用于商业目的,无需另行向项目作者申请许可。修改后的作品无需公开源代码。
|
|
14
|
+
|
|
15
|
+
3. 必须保留的署名
|
|
16
|
+
|
|
17
|
+
使用、展示、发布或分发材料或其衍生作品时,必须清楚标明以下两项:
|
|
18
|
+
|
|
19
|
+
作者:YunYueSama
|
|
20
|
+
仓库:https://github.com/YunYueSama/codex-deepseek-pet
|
|
21
|
+
|
|
22
|
+
署名可以放在作品的 README、关于页面、致谢、随附说明或图片/视频发布说明等使用者或接收者容易找到的位置;无需在角色画面上添加水印。私人使用时,保留随附的署名与许可文件即可。署名不得仅写“来源网络”或只列作者而省略仓库地址。
|
|
23
|
+
|
|
24
|
+
分发材料或其实质性部分时,须同时保留本版权声明及完整许可文本。修改后的作品须说明经过修改,不得将修改内容冒称为原作者作品。再许可不得取消原材料的上述署名和许可保留义务;不得暗示原作者或 DeepSeek 官方认可或代言衍生作品。
|
|
25
|
+
|
|
26
|
+
4. 第三方权利与旧版本
|
|
27
|
+
|
|
28
|
+
本许可不授予第三方参考作品、字体、依赖、商标或其他第三方内容的额外权利。此类内容仍遵守各自的授权;对衍生素材的授权仅及于作者有权授权的贡献,不替代底层参考作品可能需要的许可。使用 AI 生成或处理素材不扩大授权范围。
|
|
29
|
+
|
|
30
|
+
此前已按 MIT 或其他许可发布的版本,其已授予的权利不因本许可变更而撤销;请以取得的相应版本所附许可为准。
|
|
31
|
+
|
|
32
|
+
5. 免责声明
|
|
33
|
+
|
|
34
|
+
材料按“现状”提供,不作任何明示或默示保证,包括适销性、特定用途适用性或不侵权的保证。在适用法律允许的范围内,作者或版权持有人不对因使用材料或与材料有关的行为所产生的任何索赔、损害或其他责任负责。
|
package/NOTICE.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 素材来源与许可 / Attribution
|
|
2
|
+
|
|
3
|
+
## 角色与美术
|
|
4
|
+
|
|
5
|
+
本插件使用的是 DeepSeek 社区二创形象「大肥鱼 / 鲸鱼娘」,不是 DeepSeek 官方形象,
|
|
6
|
+
也未获得 DeepSeek 官方认可或代言。
|
|
7
|
+
|
|
8
|
+
- **角色形象、立绘与逐帧动画:YunYueSama**
|
|
9
|
+
- 仓库:<https://github.com/YunYueSama/codex-deepseek-pet>
|
|
10
|
+
- 许可:大肥鱼项目署名许可 1.0(自定义许可,非标准 MIT),全文见同目录 `LICENSE`
|
|
11
|
+
- **鲸鱼娘原始角色形象:上善无形(上善)**
|
|
12
|
+
- Bilibili:<https://space.bilibili.com/4456176>
|
|
13
|
+
- **加入 DeepSeek 元素的女仆鲸鱼娘二次设计:ZipZipPipe**
|
|
14
|
+
- Bilibili:<https://space.bilibili.com/4168597>
|
|
15
|
+
- Pixiv《AI娘化》:<https://www.pixiv.net/artworks/148186519>
|
|
16
|
+
- **社区设定图整理:xiaoweigen**
|
|
17
|
+
- 仓库:<https://github.com/xiaoweigen/deepseek-dafeiyu-assets>(CC BY-NC-SA 4.0)
|
|
18
|
+
|
|
19
|
+
上游角色、前序设计和参考图的相关权利归各自权利人所有;本插件只使用
|
|
20
|
+
YunYueSama 仓库中由其授权的新增贡献。
|
|
21
|
+
|
|
22
|
+
## 本插件对素材的修改
|
|
23
|
+
|
|
24
|
+
1. 从 `codex-deepseek-pet/spritesheet-web.webp`(1536×1872,8 列 × 9 行,
|
|
25
|
+
单元格 192×208)中截取三行动画:
|
|
26
|
+
- 第 1 行 `idle`:6 帧
|
|
27
|
+
- 第 4 行 `waving`:4 帧
|
|
28
|
+
- 第 5 行 `jumping`:5 帧
|
|
29
|
+
2. 每格裁去四周透明留白(统一裁切框 `24,32,168,200`,单元格 144×168),
|
|
30
|
+
按 6 列 × 3 行重新拼接为 `assets/pet-sheet.webp`(WebP,质量 90)。
|
|
31
|
+
3. 为适配 Harness Web 插件的单文件客户端,将该图集以 data URI 内嵌进
|
|
32
|
+
`client.js`;运行时用 CSS `steps()` 逐帧播放,未改动角色本身。
|
|
33
|
+
4. 插件图标 `icon.png` 由同一仓库的 `build/icon.png` 缩放至 256×256 并压缩。
|
|
34
|
+
5. 立绘背景、角色设定、配色和服装均未改动。
|
|
35
|
+
|
|
36
|
+
## 许可要求
|
|
37
|
+
|
|
38
|
+
依据 `LICENSE`(大肥鱼项目署名许可 1.0):
|
|
39
|
+
|
|
40
|
+
- 必须保留署名:作者 **YunYueSama** 与仓库地址
|
|
41
|
+
<https://github.com/YunYueSama/codex-deepseek-pet>;
|
|
42
|
+
- 分发素材或其实质性部分时保留完整许可文本(本仓库 `LICENSE`);
|
|
43
|
+
- 修改后注明经过修改(见上一节)。
|
|
44
|
+
|
|
45
|
+
参考署名:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
作者:YunYueSama
|
|
49
|
+
仓库:https://github.com/YunYueSama/codex-deepseek-pet
|
|
50
|
+
```
|
package/README.md
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# 大肥鱼 · 鲸鱼娘桌宠
|
|
2
|
+
|
|
3
|
+
一个挂在 Harness 界面上的桌面宠物式插件:DeepSeek 社区二创形象「大肥鱼 / 鲸鱼娘」——
|
|
4
|
+
蓝发、鲸鳍耳、女仆装、围裙上趴着一只小蓝鲸、身后一条大鲸尾——浮在窗口右下角,
|
|
5
|
+
覆盖在所有栏位之上,又不挡住下面的任何东西。
|
|
6
|
+
|
|
7
|
+
## 功能
|
|
8
|
+
|
|
9
|
+
- **逐帧动画桌宠。** 用社区精灵图集播放真实帧动画:6 帧待机循环、4 帧挥手、5 帧蹦跳,
|
|
10
|
+
以 CSS `steps()` 每帧 140ms 播放。
|
|
11
|
+
- **会自己冒泡。** 没有其他交互时,每 9–16 秒挥手一次。
|
|
12
|
+
- **点击 / 轻触 / <kbd>Enter</kbd> / <kbd>Space</kbd>:** 她蹦一下(或挥手),
|
|
13
|
+
飘起三颗爱心,并随机说一句六句本地化短句之一。
|
|
14
|
+
- **拖动:** 拎起来放到任意位置;位置记在 `localStorage` 里,窗口尺寸变化时会重新
|
|
15
|
+
夹取边界,保证她不会跑到屏幕外找不回来。
|
|
16
|
+
- **首次加载:** 说一句欢迎气泡,每个浏览器只出现一次(v2 键)。
|
|
17
|
+
- **右键:** 弹出小菜单,含 **模型与供应商配置** 和 **OpenCode 模型监控** 两个子项,
|
|
18
|
+
下面两节分别说明。
|
|
19
|
+
- 尊重 `prefers-reduced-motion`:关闭帧动画、爱心与气泡弹跳,角色和交互仍然保留。
|
|
20
|
+
|
|
21
|
+
## 右键菜单:AI 中转站配置
|
|
22
|
+
|
|
23
|
+
右键宠物(浏览器原生菜单已被屏蔽),选择 **模型与供应商配置**。这个对话框会把
|
|
24
|
+
供应商写进与 **设置 → 模型 → 添加模型供应商 → 自定义模型 API** 相同的
|
|
25
|
+
`llm-pi-ai` 设置命名空间,所以不用离开宠物,一个 OpenAI 或 Anthropic 兼容的中转站
|
|
26
|
+
就能被 Harness 使用。
|
|
27
|
+
|
|
28
|
+
字段说明:
|
|
29
|
+
|
|
30
|
+
| 字段 | 含义 |
|
|
31
|
+
|---|---|
|
|
32
|
+
| 供应商 ID | 小写路由键,例如 `my-relay`;同时是 `<ROUTE>_API_KEY` 凭据引用的前缀 |
|
|
33
|
+
| 显示名称 | 可选,显示在模型选择器里的标签 |
|
|
34
|
+
| 接口地址 | 中转站端点,例如 `https://relay.example.com/v1` |
|
|
35
|
+
| 接口协议 | OpenAI Chat Completions、OpenAI Responses 或 Anthropic Messages |
|
|
36
|
+
| 模型 | 点 **获取模型** 读取中转站暴露的全部模型;默认全选,可取消勾选,也可手动添加 ID |
|
|
37
|
+
| API Key | 通过凭据服务只写存储;留空则使用供应商默认认证 |
|
|
38
|
+
|
|
39
|
+
保存时发生的事:
|
|
40
|
+
|
|
41
|
+
1. **获取模型** 调用
|
|
42
|
+
`llm.discoverModels('llm-pi-ai', { baseURL, api, apiKey? })`,带上端点、协议,以及
|
|
43
|
+
已经填好的 API Key(如果有)。返回的目录会被列出并**默认全选**;不需要的取消勾选,
|
|
44
|
+
用 **全选/清空** 批量调整,或在转运站不支持模型发现时手动添加 ID。
|
|
45
|
+
2. `settings.mutate('llm-pi-ai', [{ op: 'set', path: ['providers', route], value }], revision)`
|
|
46
|
+
写入供应商配置(端点、协议、已选模型)。Harness 会即时应用设置,供应商立刻可用。
|
|
47
|
+
3. 如果填了 API Key,`credentials.set('<ROUTE>_API_KEY', key)` 只写存储;密钥永远不会
|
|
48
|
+
进入设置文档,也不会留在本插件里。
|
|
49
|
+
4. 对话框显示成功状态,宠物说一句短话。打开输入框的模型选择器,选中新模型即可开始使用。
|
|
50
|
+
|
|
51
|
+
限制与边界:
|
|
52
|
+
|
|
53
|
+
- 这个表单只负责**新建**供应商。要编辑已有供应商的密钥、模型目录、上下文窗口、
|
|
54
|
+
推理档位、重试策略,或删除它,请用 **设置 → 模型** —— 那些高级字段刻意不在这里重复。
|
|
55
|
+
- **模型发现是一次实时探测。** 中转站必须暴露兼容的 `/models` 端点;部分中转站调用
|
|
56
|
+
它时要求带上密钥,所以请先填 Key 再获取。若中转站不支持发现,手动 ID 行仍能逐个添加模型。
|
|
57
|
+
- 表单会拒绝重复的供应商 ID、非 HTTP(S) 端点、非法路由,以及 HTTP 头承载不了的 API Key。
|
|
58
|
+
只读设置文档会拒绝写入,对话框会说明原因。
|
|
59
|
+
- 设置写入携带打开对话框时读到的版本号;若另一个窗口并发改过,会显示 Host 的冲突提示,
|
|
60
|
+
而不是直接覆盖。
|
|
61
|
+
- 点击外部、按 <kbd>Escape</kbd> 或选中菜单项后菜单收起;对话框可通过遮罩、
|
|
62
|
+
<kbd>Escape</kbd> 或 **取消/完成** 关闭。
|
|
63
|
+
|
|
64
|
+
## 右键菜单:OpenCode Go 模型监控
|
|
65
|
+
|
|
66
|
+
右键宠物 → **OpenCode 模型监控** → 其一:
|
|
67
|
+
|
|
68
|
+
- **立即检查变动** —— 抓取一次新快照并与上一次对比。
|
|
69
|
+
- **查看最近变动记录** —— 列出最近的检查记录。
|
|
70
|
+
|
|
71
|
+
数据来源:
|
|
72
|
+
|
|
73
|
+
- `GET https://opencode.ai/zen/go/v1/models` —— 实时的 Included 模型列表。该端点目前
|
|
74
|
+
也会返回价格与额度,监控优先使用它们,缺失时回退到文档表格。可选的 API Key 以
|
|
75
|
+
`Authorization: Bearer ...` 形式发送。
|
|
76
|
+
- `https://opencode.ai/docs/go/` —— 文档里的价格/配额表,以及
|
|
77
|
+
**Estimated requests**(`Requests per 5 hours`)表,按套餐分别解析
|
|
78
|
+
(Go / Go Plus / Go Teams)。若页面结构变化或抓取失败,会沿用上次快照的配额与
|
|
79
|
+
5h 请求估算,并给出警告;模型与 API 价格的差异照常比对。
|
|
80
|
+
|
|
81
|
+
每次检查都会把 JSON 快照原子写入
|
|
82
|
+
`$DSH_HOME/opencode-go-models-snapshots/`(未设 `DSH_HOME` 时为 `~/.dsh/...`),
|
|
83
|
+
按时间戳命名;保留最新 50 份,展示最新 20 份。差异会报告:
|
|
84
|
+
|
|
85
|
+
- 相对上次快照新增的模型;
|
|
86
|
+
- 相对上次快照移除的模型;
|
|
87
|
+
- 价格变化(输入、输出、缓存读、缓存写,另加全量计费规则的摘要,以便捕捉阶梯/峰谷倍率);
|
|
88
|
+
- 三档套餐的月度配额变化;
|
|
89
|
+
- 文档估算的 5h 请求数变化(Go / Go Plus / Go Teams)。
|
|
90
|
+
|
|
91
|
+
检查后宠物会弹一句摘要;在打开监控/历史之前,宠物身上一直挂着提示点。API Key 通过
|
|
92
|
+
凭据服务以 `OPENCODE_GO_API_KEY` 只写存储,设置文档从不携带它。可选的自动检查在页面
|
|
93
|
+
可见时每 6 或 24 小时跑一次。
|
|
94
|
+
|
|
95
|
+
监控面板不只有差异,还把**当前状态**渲染成三标签页的图表:
|
|
96
|
+
|
|
97
|
+
- **配额图** —— 每个模型一行,Go、Go Plus、Go Teams 三组横条,按最大配额归一;∞ 表示不限量。
|
|
98
|
+
- **价格图** —— 输入价与输出价横条共享一个最大值,旁边标注精确的 $/1M 数值。
|
|
99
|
+
- **明细** —— 文字列表,含输入/输出/缓存读价格与三档配额。
|
|
100
|
+
|
|
101
|
+
图例每一项都可切换:点击 **Go**、**Go Plus**、**Go Teams**、**输入** 或 **输出**
|
|
102
|
+
即可隐藏该系列;剩余横条按可见最大值重新缩放,数值列也只列可见系列。再点一次恢复。
|
|
103
|
+
横条与数值列始终按模型对齐。图表上方的 **隐藏图例** 链接可整块收起图例,
|
|
104
|
+
**显示图例** 可重新展开。
|
|
105
|
+
|
|
106
|
+
单系列隐藏状态与整块图例显隐都保存在 `localStorage`,关掉面板或重载界面后仍保持
|
|
107
|
+
原样(键为 `dsh.deepseek-pet.opencode.hiddenSeries` 与
|
|
108
|
+
`dsh.deepseek-pet.opencode.showLegend`)。
|
|
109
|
+
|
|
110
|
+
**用量排序** 控件对两个图表和明细列表都生效,按所选套餐(Go / Go Plus / Go Teams)的
|
|
111
|
+
月度配额排序,默认配额高的在前,箭头可翻转方向。没有配额的模型始终排在最后,
|
|
112
|
+
`unlimited` 视为最高值。所选套餐与方向保存在 `localStorage`
|
|
113
|
+
(`dsh.deepseek-pet.opencode.sortField`、`dsh.deepseek-pet.opencode.sortDir`)。
|
|
114
|
+
|
|
115
|
+
它排的是面板里展示的**月度配额上限**,不读取已消耗用量或账户余额。
|
|
116
|
+
|
|
117
|
+
文档里的 **Estimated requests / 5 hr** 数值作为参考一并展示。配额图会在配额数值下方
|
|
118
|
+
显示一行紧凑的 `5h` 副值,跟随可见图例系列;明细页显示 Go、Go Plus、Go Teams 的精确
|
|
119
|
+
数字。这些是文档估算值,不是硬限制。5h 估算的变化也会像价格/配额那样参与差异比对。
|
|
120
|
+
|
|
121
|
+
图表上方的摘要标签显示模型数量、价格来自实时 API 还是文档、以及是否已配置 Key。
|
|
122
|
+
没有变化的检查会显示 **没有变动**,而不是 0/0/0 的计数,同时下方仍完整展示当前状态。
|
|
123
|
+
|
|
124
|
+
Host 半区通过 `ctx.connection.fetch.register` 注册了三个认证路由 ——
|
|
125
|
+
`/api/deepseek-pet/opencode/check`(POST)、
|
|
126
|
+
`/api/deepseek-pet/opencode/history`(GET)、
|
|
127
|
+
`/api/deepseek-pet/opencode/status`(GET)。所有网络与文件操作都在这里完成,
|
|
128
|
+
浏览器端因此不需要处理 CORS。Client 半区支持热更新;Host 半区的改动要等下一次插件重载
|
|
129
|
+
或 DSH 重启才生效。
|
|
130
|
+
|
|
131
|
+
## 与 Harness 界面的关系
|
|
132
|
+
|
|
133
|
+
- 在横跨整帧的 `shell.overlay` 插槽注册 `deepseek-pet` 条目。该层默认点击穿透,
|
|
134
|
+
宠物只在自己的 144×168 命中区域重新接收指针事件,因此不会挡住输入框或其他控件。
|
|
135
|
+
- 文案注册为 `deepseek-pet` 语言命名空间(中英双语),通过插槽注入的 `t` 座位读取
|
|
136
|
+
(回退到一个绑定的翻译函数)。
|
|
137
|
+
- 精灵图集以 data URI 内嵌在 `client.js`,因为客户端 bundle 只能提供自己的 `client.js`,
|
|
138
|
+
无法加载同目录的图片文件。原始的 `assets/pet-sheet.webp` 仍随包保留,用于溯源。
|
|
139
|
+
|
|
140
|
+
## 文件
|
|
141
|
+
|
|
142
|
+
| 文件 | 用途 |
|
|
143
|
+
|---|---|
|
|
144
|
+
| `package.json` | bundle 清单:补丁、客户端入口、语言包与图标导出 |
|
|
145
|
+
| `cordis.patch.yml` | 插入 `deepseek-pet` 的 Host 条目 |
|
|
146
|
+
| `index.js` | Host 半区:OpenCode 监控认证路由与只写密钥存储 |
|
|
147
|
+
| `monitor.js` | Host 监控核心:抓取模型、解析文档/配额、差异引擎、原子快照 |
|
|
148
|
+
| `client.js` | 客户端模块:插槽注册、精灵动画、拖动/摸头、右键中转站配置与 OpenCode 监控界面、文案 |
|
|
149
|
+
| `assets/pet-sheet.webp` | 6×3 打包精灵图集(待机 / 挥手 / 蹦跳) |
|
|
150
|
+
| `locale/en.json`、`locale/zh.json` | 插件清单里显示的标题与描述(英文 / 中文) |
|
|
151
|
+
| `icon.png` | 插件图标,取自同一套角色画稿 |
|
|
152
|
+
| `LICENSE` | 大肥鱼项目署名许可 1.0(全文) |
|
|
153
|
+
| `NOTICE.md` | 署名链、修改说明、许可要求 |
|
|
154
|
+
|
|
155
|
+
## 素材与许可
|
|
156
|
+
|
|
157
|
+
这**不是** DeepSeek 官方产品,也未获 DeepSeek 认可。
|
|
158
|
+
|
|
159
|
+
角色与动画素材来自
|
|
160
|
+
[YunYueSama/codex-deepseek-pet](https://github.com/YunYueSama/codex-deepseek-pet),
|
|
161
|
+
依「大肥鱼项目署名许可 1.0」使用。该许可允许使用、修改、分享与商用,但要求保留
|
|
162
|
+
作者与仓库地址、附带完整许可文本,并注明修改内容。
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
作者:YunYueSama
|
|
166
|
+
仓库:https://github.com/YunYueSama/codex-deepseek-pet
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
上游角色署名:鲸鱼娘原案 上善无形(上善);DeepSeek 元素女仆装改绘 ZipZipPipe。
|
|
170
|
+
完整署名链与对精灵图集做过的确切修改见 [NOTICE.md](NOTICE.md)。
|
|
171
|
+
|
|
172
|
+
## 安装
|
|
173
|
+
|
|
174
|
+
从 npm(已发布为 `dsh-dfy-pet`):
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
plugin_manager install_bundle -> target: dsh-dfy-pet
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
从本源码目录(本地开发):
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
plugin_manager install_bundle -> target: <this directory>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
环境要求:DSH 版本在 `>=0.2.1-rc.2 <0.3.0` 区间,Node `>=18`。本 bundle 由 Host 半区
|
|
187
|
+
与 Client 半区组成;Client 半区按包名 `dsh-dfy-pet` 匹配,所以包名与 `client.js` 里的
|
|
188
|
+
模块 `id` 必须保持一致。
|
|
189
|
+
|
|
190
|
+
新 bundle 可通过热更新生效。替换已安装的客户端 bundle,可能需要重新加载界面后
|
|
191
|
+
才会载入新的动画版本。
|
|
192
|
+
|
|
193
|
+
### 发布新版本
|
|
194
|
+
|
|
195
|
+
```text
|
|
196
|
+
npm pack --dry-run # 核对文件清单(12 个文件,不缺素材)
|
|
197
|
+
npm publish # 需要 npm 登录并拥有该包名
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
`files` 清单是刻意写全的:`client.js`、`monitor.js`、语言包、精灵图集、图标和补丁
|
|
201
|
+
都必须随包发布,否则安装后界面会空白或加载失败。
|
|
Binary file
|