# 梁大快跑 · dsh-running-liang

[English](README.md) | 中文

> 穷玩车，富玩表，顶富就玩梁大快跑。

> 本项目由 DeepSeek Harness + DeepSeek-V4-Flash 100% vibe coding 开发，仅供娱乐。

![梁大快跑游戏界面](assets/screenshot.png)

为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web 打造的等待小游戏：agent 回复期间，输入框上方出现一条与"目标"栏同排的进度条，带播放键。点击展开游戏，`Space`/`↑` 跳跃、`↓` 下蹲，得分从「梁子」冲向「梁圣」，进度条在游戏收回后依然保留。

> 灵感来源：Chrome 的恐龙快跑——Chrome 浏览器内置的离线小游戏（T-Rex Runner，Chromium 项目）。

## 安装

```sh
dsh plugin --profile web add dsh-running-liang
```

或仅 GitHub：

```sh
dsh plugin --profile web add skiuniverse/dsh-running-liang
```

重启 `dsh web`，发一条消息，点击进度条上的播放键即可开玩。

## 玩法

- **等待窗口**：会话运行期间进度条常驻；回合结束游戏短暂显示"已暂停"后自动收回，只留进度条。
- **折叠即暂停**：点播放键/× 收起面板并暂停；再展开仍处于暂停，按任意键或点击画面恢复。收起不会重置速度与得分。
- **失焦暂停**：点击输入框、或点击游戏面板以外任意处都会暂停；焦点在输入框时按键照常打字。
- **速度档**：每回合从 0 档起步，每 15 秒游戏时间提一档至 4 档（速度倍率 1.0/1.2/1.5/2.0/2.5×，每秒得分 1.0/1.2/1.5/2.5/5.0——HUD 显示的是得分率，最高 5.0x）。按住跳跃键滞空更久，空中按住下蹲键快速下落。
- **障碍物**：地面仙人掌/石头；3 档起出现低空与高空飞行物——低空跳、高空蹲。
- **失败**：撞上后显示结算画面（"距离成为梁圣还有 x%" 或 "你已成为 x.xxs 梁圣"）；**任意键**或点击重开；得分、速度档与梁圣评价重置。
- **梁圣**：得分达阈值（默认 150）即梁圣，进度条显示 `100% · 秒数`——当次抵达梁圣后的存活时间。

## 形象

- 内置默认形象：火柴人 + DeepSeek 鲸鱼脸（`assets/avatars/`）。
- 自定义：把图片放入 `~/.dsh/plugins/dsh-running-liang/avatars/`（自动创建），或在「设置-插件-插件配置-梁大快跑」上传并选择；文件失效自动回退默认形象。

## 配置

在「设置-插件-插件配置-梁大快跑」卡片中：`threshold`（梁圣阈值，默认 150）、`tierInterval`（提档间隔秒，默认 15）、`allowIdlePlay`（测试开关：Agent 空闲时仍可激活游戏）、自定义**跳跃/下蹲快捷键**（跳跃默认 `Space`，`↑` 恒为附加跳跃键；下蹲默认 `ArrowDown`）。速度表与手感参数为固定常量。

## 开发

```sh
npm install
npm run typecheck   # tsc --noEmit
npm test            # vitest（engine / tiers / layout / store / render / avatar-files）
npm run build       # 生成 lib/index.js（host）与 lib/client.js（浏览器 bundle）
npm run check       # 发布前自检
```

架构说明：客户端注册到官方 DSH slot：`conversation.input.dock` 提供进度条和生长式游戏面板，`settings.plugin.item` 提供「插件配置」下的设置卡片。设置卡同时携带旧版列表槽使用的 `id` 与新版 keyed 槽使用的 `key`；host 端注册同名 settings namespace，供新版 DSH 发现这张卡片。host 端还通过 `webServer` 注册 `/dsh-running-liang/avatars` 路由，负责列表、读取和上传。长存状态仍放在 localStorage，形象文件保存在磁盘上，不受浏览器清理影响。

## 许可证

MIT —— 见 [LICENSE](LICENSE)。
