现在干嘛呢? v1.5.0
把「定义生活」变成小游戏,随机抽选当前任务,治疗选择困难症。
v1.5.0 优化内容
改动 1:工作表过滤逻辑收紧
背景:v1.4.0 的过滤逻辑比较松散,只要工作表名称包含「定义生活」就会被纳入,导致「未定义生活」等无关工作表也被抽中,干扰了抽奖结果。
具体改动:generate_lottery.py 中的工作表过滤条件从:
if "定义生活" not in name: continue
改为:
if not ("定义生活·阴" in name or "定义生活·阳" in name): continue
效果:
- 排除「未定义生活」等无关工作表
- 参与板块:7 个 → 6 个
- 参与活动:63 个 → 47 个
- 抽奖结果更精准,只围绕真正在用的阴阳板块
改动 2:修复阴阳板块互相串抽的 bug
背景:用户仅勾选「阴」按钮全选所有阴活动后,抽奖仍可能抽到阳活动。
根因:toggleYy 函数的 else 分支(点击阴/阳按钮时)只把当前类型活动追加到 selectedActs,但没有清除对面类型已勾选的活动。如果用户先手动勾选了某个阳活动,再点阴按钮,阳活动会残留在抽奖池中。
具体改动:在 toggleYy 的 else 分支中,追加活动前先判断对面类型是否未被同时勾选,如果是则清除对面所有活动:
const opposite = type === 'yin' ? 'yang' : 'yin';
if (!selectedBan.has(opposite)) {
allData[opposite].forEach(s => s.acts.forEach(a => selectedActs.delete(a)));
}
效果:
- 单选阴 → 只抽阴,阳活动被自动排除
- 单选阳 → 只抽阳,阴活动被自动排除
- 阴阳同选 → 互不清除,可以混抽
触发词
- "现在干嘛呢"
- "生成一个游戏"
- "把我的定义生活变成一个游戏吧"
- 用户提供了定义生活 Excel 路径并提到"游戏"或"抽奖"
工作流程
1. 确认 Excel 文件路径
询问用户「定义生活」Excel 文件的路径。如果用户直接给了路径,直接进入第 2 步。
如果用户不知道什么是「定义生活」,向他说明格式:
提供一个 .xlsx 文件,其中包含:
- 名称为「定义生活·阳*」或「定义生活·阴*」的工作表(例如:定义生活·阳·学习)
- 工作表内 A 列从第 4 行起为活动名称
- 工作表内 B 列从第 4 行起为得分/扣分(可留空,仅作为参考)
如果用户需要,可以在对话中单独为他生成一个示例 Excel 文件。
2. 生成自持 HTML
运行生成脚本(不指定输出路径,让脚本自动生成唯一文件名):
cd <skill_dir>
python generate_lottery.py "<Excel路径>"
脚本会自动生成类似 lottery_<文件名>_<时间戳>.html 的唯一文件名,永远不会覆盖已有文件。
输出路径会在 stdout 里打印。
3. 部署到 CloudStudio(每次新建沙箱)
为这次生成创建一个唯一的 dist 目录,将 HTML 复制为 index.html,然后部署:
# 用文件名 + 时间戳创建唯一 dist 目录
set "NAME=lottery_<文件名>_<时间戳>"
mkdir -p "<work_dir>/%NAME%"
copy "<生成的HTML路径>" "<work_dir>/%NAME%/index.html"
# 部署 —— directory 每次不同,CloudStudio 会分配新沙箱
# 使用 workbuddy_cloudstudio_deploy 工具,directory = "<work_dir>/%NAME%"
关键:每次 directory 参数不同 → CloudStudio 分配新 sandbox → 链接永不互相覆盖。
4. 返回结果
将 CloudStudio 返回的公开 URL 发给用户,并提示:
- 复制链接到手机浏览器即可打开
- 页面包含板块筛选、活动管理、随机抽选全部功能
- 可以随时发回 Excel 让我重新生成,每个文件都会得到独立链接
文件结构
<skill_dir>/
SKILL.md # 技能指令
README.md # 说明文档
README.txt # 纯文本说明
generate_lottery.py # 读取 Excel → 生成 HTML(自动唯一文件名)
注意:SkillHub 上传时要求所有文件位于 zip 包根目录,且不能包含二进制文件(如 .xlsx)。
输出 HTML 特性
- 零外部依赖:活动数据直接硬编码在 JS 中,不加载任何 CDN
- 手机适配:viewport 响应式,触屏可用
- 完整功能:
- 阴/阳板块筛选 + 一键全选
- 单个活动勾选/取消
- 新增/删除活动、新增/删除板块
- 滚动动画(0-1s 快 → 1-3s 减速 → 3-7s 慢 → 8s 强制定格)
- 抽奖结果展示 + 历史记录
- 点击、滚动、结果三种音效(Web Audio,零依赖)