dsh-fish-pet 0.2.8 → 0.2.10
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/CHANGELOG.md +10 -0
- package/README.md +2 -0
- package/assets/fish-pet.ps1 +18 -2
- package/docs/demo-douyin.mp4 +0 -0
- package/docs/promote.md +98 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.10] - 2026-10-31
|
|
4
|
+
|
|
5
|
+
### Docs
|
|
6
|
+
- 新增 28 秒竖屏演示视频 `docs/demo-douyin.mp4`(720×1280,可直接投抖音/视频号)
|
|
7
|
+
- README 顶部加演示视频入口
|
|
8
|
+
## [0.2.9] - 2026-10-31
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- 喂食与对话完全脱节:问"吃了没有"它说没吃。现在把「共喂过几次、上次喂食多久前」写进提示词,鱼知道自己吃没吃过
|
|
12
|
+
- 喂食时间持久化到 `state.json`,重启后仍记得
|
|
3
13
|
## [0.2.8] - 2026-10-31
|
|
4
14
|
|
|
5
15
|
### Docs
|
package/README.md
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|

|
|
9
9
|
|
|
10
|
+
> 🎬 **演示视频(28 秒,竖屏)**:[docs/demo-douyin.mp4](docs/demo-douyin.mp4)
|
|
11
|
+
|
|
10
12
|
给 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 养一条住在 Windows 桌面上的蓝鱼。
|
|
11
13
|
它不是网页贴图:是一个**逐像素透明的置顶窗口**,用 PowerShell + WinForms 逐帧绘制,还能**听你说话、跟你聊天、用中文语音回你**。
|
|
12
14
|
|
package/assets/fish-pet.ps1
CHANGED
|
@@ -296,7 +296,7 @@ $C_EYEWHITE= '#FFFFFF'
|
|
|
296
296
|
$C_PUPIL = '#132A45'
|
|
297
297
|
|
|
298
298
|
# ---------- 读档 ----------
|
|
299
|
-
$script:st = @{ x = $null; y = $null; dir = 1; scale = 1.0; feeds = 0; hunger = 30; intimacy = 10; mood = 'normal'; seen = $null }
|
|
299
|
+
$script:st = @{ x = $null; y = $null; dir = 1; scale = 1.0; feeds = 0; hunger = 30; intimacy = 10; mood = 'normal'; seen = $null; lastFeedAt = $null }
|
|
300
300
|
if (Test-Path $StatePath) {
|
|
301
301
|
try {
|
|
302
302
|
$j = Get-Content $StatePath -Raw -Encoding UTF8 | ConvertFrom-Json
|
|
@@ -309,6 +309,7 @@ if (Test-Path $StatePath) {
|
|
|
309
309
|
if ($null -ne $j.intimacy) { $script:st.intimacy = [double]$j.intimacy }
|
|
310
310
|
if ($null -ne $j.mood) { $script:st.mood = [string]$j.mood }
|
|
311
311
|
if ($null -ne $j.seen) { $script:st.seen = [string]$j.seen }
|
|
312
|
+
if ($null -ne $j.lastFeedAt) { $script:st.lastFeedAt = [string]$j.lastFeedAt }
|
|
312
313
|
} catch { }
|
|
313
314
|
}
|
|
314
315
|
|
|
@@ -338,6 +339,7 @@ $script:pulse = 1.0
|
|
|
338
339
|
$script:lastPx = -9999; $script:lastPy = -9999
|
|
339
340
|
$script:satiety = 0.0
|
|
340
341
|
$script:feeds = [int]$script:st.feeds
|
|
342
|
+
$script:lastFeedAtStr = $script:st.lastFeedAt
|
|
341
343
|
# ---- 情绪状态:饥饿 / 亲密度 / 心情 ----
|
|
342
344
|
$script:hunger = [double]$script:st.hunger
|
|
343
345
|
$script:intimacy = [double]$script:st.intimacy
|
|
@@ -659,7 +661,7 @@ function Save-State {
|
|
|
659
661
|
x = [int]$script:x; y = [int]$script:y; dir = [int]$script:dir
|
|
660
662
|
scale = [Math]::Round($script:scale, 3); feeds = [int]$script:feeds
|
|
661
663
|
hunger = [Math]::Round($script:hunger, 1); intimacy = [Math]::Round($script:intimacy, 1)
|
|
662
|
-
mood = [string]$script:mood; seen = (Get-Date).ToString('o')
|
|
664
|
+
mood = [string]$script:mood; seen = (Get-Date).ToString('o'); lastFeedAt = $script:lastFeedAtStr
|
|
663
665
|
}
|
|
664
666
|
try { ($obj | ConvertTo-Json -Compress) | Set-Content -Path $StatePath -Encoding UTF8 } catch { }
|
|
665
667
|
}
|
|
@@ -667,6 +669,7 @@ function Save-State {
|
|
|
667
669
|
function Invoke-Feed {
|
|
668
670
|
try {
|
|
669
671
|
$script:feeds += 1
|
|
672
|
+
$script:lastFeedAtStr = (Get-Date).ToString('o')
|
|
670
673
|
$script:satiety += 1
|
|
671
674
|
$script:hunger = [Math]::Max(0, $script:hunger - 30)
|
|
672
675
|
$script:intimacy = [Math]::Min(100, $script:intimacy + 2)
|
|
@@ -1531,6 +1534,17 @@ function Start-Chat([string]$text) {
|
|
|
1531
1534
|
Show-Bubble '…'
|
|
1532
1535
|
$pn = $script:cfg.persona
|
|
1533
1536
|
$replyLang = Get-ReplyLang $text
|
|
1537
|
+
# 喂食记忆:让鱼知道自己吃没吃过
|
|
1538
|
+
$feedAgoText = ''
|
|
1539
|
+
$feedAgoEn = ''
|
|
1540
|
+
if ($script:lastFeedAtStr) {
|
|
1541
|
+
try {
|
|
1542
|
+
$mins = [Math]::Round(((Get-Date) - [datetime]$script:lastFeedAtStr).TotalMinutes, 0)
|
|
1543
|
+
if ($mins -lt 3) { $feedAgoText = '刚刚'; $feedAgoEn = 'just now' }
|
|
1544
|
+
elseif ($mins -lt 60) { $feedAgoText = ('' + [int]$mins + ' 分钟前'); $feedAgoEn = ('' + [int]$mins + ' minutes ago') }
|
|
1545
|
+
else { $feedAgoText = ('' + [int][Math]::Round($mins / 60, 0) + ' 小时前'); $feedAgoEn = ('' + [int][Math]::Round($mins / 60, 0) + ' hours ago') }
|
|
1546
|
+
} catch { }
|
|
1547
|
+
}
|
|
1534
1548
|
if ($replyLang -eq 'en') {
|
|
1535
1549
|
$sys = 'YOU MUST REPLY IN ENGLISH ONLY, NO MATTER WHAT. You are a round, chubby blue fish living on the master''s Windows desktop. Your name is "' + $pn.nameEn + '" (in Chinese it is written 大肥鱼, said as Da Fei Yu). Your dad is Guangguang, your mom is Lili, your birthday is October 30 2026, you were born in Beihai, Guangxi, China. Answer questions about family/birthday/birthplace with these facts and never invent them. In English your name is always this one, never any other name; if earlier messages called you something different, correct them politely.'
|
|
1536
1550
|
$sys = $sys + ' Reply ONLY in English, max 20 words, playful and a little tsundere, call the user "master", no emoji.'
|
|
@@ -1563,9 +1577,11 @@ function Start-Chat([string]$text) {
|
|
|
1563
1577
|
} catch { }
|
|
1564
1578
|
if ($replyLang -eq 'en') {
|
|
1565
1579
|
$sys = $sys + ' Right now you feel ' + $moodDescEn + ', hunger about ' + [int]$script:hunger + ', closeness to the master about ' + [int]$script:intimacy + '. Let that show naturally, never state the numbers.'
|
|
1580
|
+
if ($feedAgoEn) { $sys = $sys + ' The master has fed you ' + [int]$script:feeds + ' times in total; the last feeding was ' + $feedAgoEn + '. If the master asks whether you have eaten, answer truthfully based on this.' }
|
|
1566
1581
|
$sys = $sys + "`r`n`r`nIMPORTANT: Answer ONLY in English. Never write Chinese characters - not even your own name. Use your English name and write family names in pinyin (Guangguang, Lili). Everything you output must be English only."
|
|
1567
1582
|
} else {
|
|
1568
1583
|
$sys = $sys + ' 你现在的状态:' + $moodDesc + ',饥饿值约' + [int]$script:hunger + ',和主人的亲密度约' + [int]$script:intimacy + '。说话要自然带出这种状态,但不要报具体数字。'
|
|
1584
|
+
if ($feedAgoText) { $sys = $sys + ' 主人一共喂过你 ' + [int]$script:feeds + ' 次白饭,上次喂食是 ' + $feedAgoText + '。主人问起你吃没吃过,就照实说,别乱讲。' }
|
|
1569
1585
|
}
|
|
1570
1586
|
if ($replyLang -eq 'en') { Write-Err ('SYS-EN[' + $sys.Length + ']: ' + ($sys -replace "[\r\n]+", ' | ')) }
|
|
1571
1587
|
$msgs = @(@{ role = 'system'; content = $sys })
|
|
Binary file
|
package/docs/promote.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 传播素材包 · dsh-fish-pet
|
|
1
|
+
# 传播素材包 · dsh-fish-pet
|
|
2
2
|
|
|
3
3
|
> 用途:把这个项目分享到各平台时,直接复制对应段落改一改就能发。
|
|
4
4
|
> 原则:**不夸大、不刷量、写清成本**。项目是个人作品,与 DeepSeek 官方无关。
|
|
@@ -146,6 +146,98 @@ Repo: https://github.com/adengou/dsh-fish-pet
|
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
149
|
+
### 7. 抖音 / 视频号 · 竖屏短视频
|
|
150
|
+
|
|
151
|
+
> 竖屏 9:16,前 3 秒决定生死。**抖音对站外链接和二维码很敏感**,视频里别放网址,把仓库名打在结尾一行小字即可(`Gitee 搜 dsh-fish-pet`)。
|
|
152
|
+
|
|
153
|
+
**标题候选**(抖音标题就是第一行文案,越具体越好):
|
|
154
|
+
|
|
155
|
+
- `我在电脑桌面养了条会说话的鱼,它饿了会瘪嘴`
|
|
156
|
+
- `写了 100KB 代码,就为了在桌面养条鱼`
|
|
157
|
+
- `它说英文居然会换成英文的嗓子`
|
|
158
|
+
|
|
159
|
+
**话题标签**:`#桌面宠物` `#AI` `#程序员日常` `#桌面美化` `#开源项目` `#电子宠物`
|
|
160
|
+
|
|
161
|
+
**30 秒竖屏分镜**:
|
|
162
|
+
|
|
163
|
+
| 时间 | 画面(竖屏构图) | 字幕/口播 |
|
|
164
|
+
| --- | --- | --- |
|
|
165
|
+
| 0-3s | 鱼在桌面游动,突然眨眼 + 吐泡泡 | 大字:**我桌面上养了条鱼** |
|
|
166
|
+
| 3-8s | 对着麦克风说「你今天心情怎么样」,气泡弹出中文回复 | 「它真的听得懂」 |
|
|
167
|
+
| 8-14s | 鱼开口念出回复(配字幕) | 「还会用软软的声音回答你」 |
|
|
168
|
+
| 14-20s | 切英文问一句,鱼用英文答,音色也变了 | 「说英文,它自动换嗓子」 |
|
|
169
|
+
| 20-26s | 连续点几下喂食,冒爱心、说「再来一碗嘛」 | 「喂它会撒娇」 |
|
|
170
|
+
| 26-30s | 右键菜单「加个提醒」展开 | 「还能记事,到点喊你」 |
|
|
171
|
+
| 结尾 | 黑底白字一行 | `Gitee 搜 dsh-fish-pet · 个人作品` |
|
|
172
|
+
|
|
173
|
+
**拍摄要点**:
|
|
174
|
+
- 竖屏录制:屏幕中间裁一块 9:16 区域,让鱼始终在画面中上 1/3
|
|
175
|
+
- 全程加**大字幕**(抖音多数人静音看)
|
|
176
|
+
- BGM 用轻快电子乐,音量压低到 -20dB,别盖住鱼的声音
|
|
177
|
+
- 建议发布时段:工作日 12:00-13:00 或 20:00-22:00
|
|
178
|
+
|
|
179
|
+
**备选:抖音图文**(不想出镜/不想剪视频时)
|
|
180
|
+
- 第一张:鱼的特写 + 大字「桌面养鱼」
|
|
181
|
+
- 第二张:气泡对话截图
|
|
182
|
+
- 第三张:右键菜单
|
|
183
|
+
- 第四张:喂食冒爱心
|
|
184
|
+
- 第五张:结尾「开源,Gitee 搜 dsh-fish-pet」
|
|
185
|
+
- 配文用上面标题第一条
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
### 8. 微博 · 图文 + 短文案
|
|
190
|
+
|
|
191
|
+
**正文**(控制在 140 字内,前两句是黄金位):
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
在电脑桌面上养了条会说话的鱼🐟
|
|
195
|
+
|
|
196
|
+
不是网页贴图,是真的住在桌面最上层的窗口,
|
|
197
|
+
100KB 大小,纯 PowerShell 手写绘制。
|
|
198
|
+
|
|
199
|
+
我说话它听得懂,会用软软的声音回答;
|
|
200
|
+
心情好眼睛亮亮的,饿了会瘪嘴;
|
|
201
|
+
说英文它还能换成英文的嗓子。
|
|
202
|
+
|
|
203
|
+
开源,Gitee/GitHub 搜 dsh-fish-pet
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**话题**:`#AI桌宠#` `#桌面宠物#` `#程序员日常#` `#开源项目#`
|
|
207
|
+
|
|
208
|
+
**配图**:九宫格最稳,推荐这套
|
|
209
|
+
1. 鱼在桌面游动(全景,体现"桌面宠物")
|
|
210
|
+
2. 气泡中文对话
|
|
211
|
+
3. 英文对话(体现双语)
|
|
212
|
+
4. 右键菜单
|
|
213
|
+
5. 喂食冒爱心
|
|
214
|
+
6. 提醒功能弹窗
|
|
215
|
+
7. 仓库首页截图
|
|
216
|
+
8. README 的「一分钟了解」表格
|
|
217
|
+
9. 结尾:项目地址大字
|
|
218
|
+
|
|
219
|
+
**微博几条注意**:
|
|
220
|
+
- 别 @ 大 V 求转发,容易被举报为垃圾营销
|
|
221
|
+
- 视频比图文权重高,可以复用抖音那条(去水印后发微博视频)
|
|
222
|
+
- 想持续曝光就做**合集/超话**:#AI桌宠# 话题下长期发,比单条爆款更稳
|
|
223
|
+
- 不要把 API key、真实对话内容(含隐私)截进图里
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### 9. 两个平台的差异(别用同一套)
|
|
228
|
+
|
|
229
|
+
| 维度 | 抖音 | 微博 |
|
|
230
|
+
| --- | --- | --- |
|
|
231
|
+
| 核心 | **3 秒钩子 + 视觉冲击** | **文字信息量 + 可转发** |
|
|
232
|
+
| 长度 | 15-45 秒最佳 | 100-140 字 |
|
|
233
|
+
| 能放链接吗 | ❌ 基本不行,放了限流 | ⚠️ 可以,但外链权重低 |
|
|
234
|
+
| 引导方式 | 「评论区/主页」 | 正文直接写仓库名 |
|
|
235
|
+
| 内容形态 | 视频 > 图文 | 图文 + 短视频并存 |
|
|
236
|
+
| 适合的卖点 | 会说话、会撒娇、眼睛会亮 | 开源、100KB、纯 PowerShell、双语 |
|
|
237
|
+
|
|
238
|
+
> 平台规则会变,抖音对"引流"的判定、微博对"营销号"的判定都挺严,发布前请自行核对最新规则。小鲸没有这两个平台的账号,也查不到后台限流数据,只能说个通用做法。
|
|
239
|
+
|
|
240
|
+
|
|
149
241
|
## 三、Gitee 站内优化清单
|
|
150
242
|
|
|
151
243
|
- [ ] 仓库简介填一句话:「给 DeepSeek Harness 养的桌面 AI 鱼,能听能说能记事」
|
|
@@ -162,10 +254,14 @@ Repo: https://github.com/adengou/dsh-fish-pet
|
|
|
162
254
|
| --- | --- |
|
|
163
255
|
| 第 1 天 | Gitee 优化完 + 发 V2EX 一帖 |
|
|
164
256
|
| 第 2-3 天 | 掘金发技术长文(文里嵌动图) |
|
|
165
|
-
| 第 4 天 |
|
|
257
|
+
| 第 4 天 | **抖音** 发竖屏短视频(主攻流量) |
|
|
258
|
+
| 第 5 天 | B 站 + 小红书(同一素材剪不同长度) |
|
|
259
|
+
| 第 6 天 | **微博** 发九宫格图文(吃长尾搜索) |
|
|
166
260
|
| 第 2 周 | 向 awesome 列表提 PR |
|
|
167
261
|
| 之后 | 每次发版同步一条动态,别刷屏 |
|
|
168
262
|
|
|
263
|
+
> 短视频素材**录一次剪多版**:抖音 30 秒竖屏、B 站 60 秒横屏、小红书 15 秒竖屏、微博用抖音那版去水印后发。
|
|
264
|
+
|
|
169
265
|
---
|
|
170
266
|
|
|
171
267
|
## 五、必须写清楚的三件事(避免招黑)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-fish-pet",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "Desktop blue fish pet for DeepSeek Harness: per-pixel transparent WinForms window, text chat, and cloud speech-to-text voice conversation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|