Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

红温番茄钟 (Tilt-Proof Pomodoro)

选一个游戏(彩虹六号 / 英雄联盟 / 塔科夫),开始专注计时。计时器会把你实际 专注的时长按该游戏"一局"的平均时长换算成"打了几局",每打完一局,日志里就 会出现一条你在那一局里遇到并忍住没有爆发的红温事件——你既完成了手头的 正事,又在叙事里"全须全尾"地打完了一局游戏。

本项目基于开源项目 recoskyler/pomo (MIT License)二次开发,保留了原有的计时器内核(Flutter + bloc),在此之上 叠加了游戏选择、局数换算和红温事件日志。跨平台支持沿用原项目:iOS / Android / macOS / Windows / Linux / Web。

项目结构

lib/pages/game/          游戏选择、局数换算、事件日志(新增模块)
  data/game_info.dart      三个游戏的配置(局名、平均时长、素材路径)
  data/game_event_repository.dart  从 assets/game_events/*.json 读取事件池
  cubit/game_cubit.dart    核心状态机:累计专注时长 → 局数 → 抽取事件
  view/                    游戏选择页 / 组合后的计时器主页 / 事件日志列表

assets/game_events/       每个游戏的红温事件文案库(JSON,随时可扩充)
  r6.json / lol.json / tarkov.json

lib/pages/timer/          原 pomo 项目的计时器内核,未改动,被 game 模块复用
lib/pages/settings/       原 pomo 项目的设置页(音效/主题/webhook),未改动

scripts/generate_events.py   仅供你本地开发时使用的内容生成脚本(见下)

本地运行(需要 Flutter SDK)

这台机器上还没有装 Flutter SDK,所以我没法在这里直接编译/跑起来验证 UI, 请你本地装好 Flutter 后自行验证:

flutter pub get
flutter run -d windows   # 或 -d chrome / -d macos

iOS 需要在 Mac 上用 Xcode 打开 ios/Runner.xcworkspace 构建(Windows 上 无法构建 iOS,这是 Apple 的限制,不是本项目的限制)。

首次运行如果 flutter analyze 报错,大概率是我手写的 lib/pages/game/ 下的代码有细节没对齐这台机器上没装的 Flutter 版本的 API,把报错贴给我,我 可以照着修。

内容生成脚本(开发者专用,不随 App 发布)

scripts/generate_events.py 是给你自己写内容用的命令行工具:你随手输入一段 真实/虚构的"红温事件"描述,它调用 Claude API 把这段描述改写成符合目标游戏 黑话和场景的一句话文案,并直接写回 assets/game_events/<game>.json,下次 打包 App 时这些新事件就会随 App 一起发布。

pip install -r scripts/requirements.txt
export ANTHROPIC_API_KEY=sk-...   # Windows PowerShell: $env:ANTHROPIC_API_KEY="sk-..."

python scripts/generate_events.py \
  "在OW里打了排位,遇到了非常喜欢压力人的C,他的数据最差但是开始喷奶和喷T,
   引发了对队大吵架,而你在下一局遇到了他在对面" \
  --games r6 lol tarkov

python scripts/generate_events.py --list        # 查看每个游戏当前有多少条
python scripts/generate_events.py "..." --dry-run  # 只预览,不写入文件

每条写入的事件除了 text(AI 改写后的正式文案),还会原样存一份你写的 original(你的原话)在同一条记录里,方便你以后回头对比"我当时怎么说 的" vs "AI 改成了什么样",从而校准自己的语气。手动改 JSON 时也建议照这个 习惯来:

{"id": "ow_001", "severity": 1, "original": "你原话怎么说的", "text": "AI/你自己改写后的正式文案"}

original 是可选字段,App 运行时不会读取或展示它,纯粹是给你自己留档用的。

已知的下一步(MVP 之外)

  • 目前只支持三个游戏,GameInfo.alllib/pages/game/data/game_info.dart) 里加一条配置 + 一个 assets/game_events/<id>.json 就能加新游戏。
  • 局数换算是纯除法(专注秒数 ÷ 平均一局秒数),没有考虑"半局"之类的过渡态。
  • 事件抽取目前是简单的不放回抽样+打乱重抽,没有做"最近抽过的不再抽"之外 更复杂的权重逻辑。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages