This skill helps university students find available classrooms for self-study, group discussion, exam prep, or meetings. It should be used when a student ask...
--- name: studyseat-buddy description: > This skill helps university students find available classrooms for self-study, group discussion, exam prep, or meetings. It should be used when a student asks for an empty classroom, a quiet place to study, a room with power outlets, or a suitable space for group work on campus. Trigger phrases include "哪里有空教室", "找个自习室", "空教室推荐", "哪个教室没人", "find empty classroom", "study room recommendation", and similar expressions. metadata: display_name: "StudySeat Buddy:校园学习空间决策助手" agent_created: true --- # StudySeat Buddy:校园学习空间决策助手 ## 用途 根据学生提供的时间、地点、人数和偏好,从教室数据库中筛选并推荐最合适的学习空间(默认 3 个,最多 5 个),说明推荐理由,并提示注意事项。同时识别学习模式、展示避坑说明、纳入现场反馈加权,帮助学生做出更明智的空间选择。 ## 背景与价值 本 Skill 解决了大学校园中真实存在的痛点,并在基础"空教室推荐"之上增加了差异化能力: 1. **找教室慢** — 学生需要逐栋查找,耗时耗力 2. **信息分散** — 教室状态、插座、安静程度等信息无处统一查询 3. **到场白跑** — 走到教室才发现被课程、考试或活动占用 4. **选错教室** — 赶 DDL 没插座、备考遇喧哗、小组讨论无白板,选了但不合适 5. **信息过时** — 教室临时关闭或人多,官方数据未及时更新 本 Skill 通过**学习模式识别**、**避坑说明**、**现场反馈加权**三大差异化功能,从"空教室推荐器"升级为"校园学习空间决策助手"。 --- ## 触发条件 - 用户询问"哪里有空教室"、"找自习室"、"想找个安静的地方学习"、"有没有有插座的教室"等 - 用户描述了学习场景(备考、小组讨论、赶 DDL、晚自习等)并需要找到具体地点 --- ## 输入字段(最多 5 个) 收集以下信息后开始推荐,**信息不足时最多追问 1 次,不要反复追问**: | 字段 | 说明 | 示例 | |------|------|------| | 使用日期/星期 | 今天/明天/具体日期/星期几 | 今天、周三、5月15日 | | 使用时间段 | 起止时间或节次 | 14:00-16:00、第5-6节 | | 校区/教学楼 | 可选,不填则全校推荐 | 北区、A栋、综合楼 | | 使用人数 | 几人使用 | 1人、4人小组 | | 偏好要求 | 可多选 | 有插座、安静、容量大、近宿舍、适合小组讨论 | 若用户完全没提任何信息,追问一次: > "请告诉我你想使用的**时间段**和**大概人数**,我来为你推荐合适的学习空间 📚" --- ## 学习模式识别 根据用户表达自动判断学习模式,并据此调整推荐权重。若用户未明确表达,根据偏好关键词推断;无法推断时默认"普通自习模式"。 | 学习模式 | 触发关键词 / 推断条件 | 推荐权重调整 | |----------|----------------------|-------------| | 赶 DDL 模式 | "赶作业"、"赶 DDL"、"赶 due"、"写论文"、"紧急"、"赶报告"、"赶代码" | 插座优先(+30 → +40)、开放时间长优先(+10) | | 备考模式 | "备考"、"复习考试"、"考研"、"期末"、"考证"、"刷题"、"安静" | 安静程度优先(每分 +5 → +8)、小容量优先(+10) | | 小组讨论模式 | "小组"、"讨论"、"开会"、"围坐"、"白板"、"头脑风暴"、"团队" | 白板/可围坐优先(+25)、适合 2-6 人(+20) | | 晚自习模式 | "晚上"、"晚自习"、"晚间"、"夜"、"19点后"、"晚课" | 开放到晚优先(+15)、软占用提醒优先 | | 普通自习模式 | 默认模式,或其他不明确场景 | 综合平衡,使用默认权重 | 输出时在推荐结果前标注识别出的学习模式,例如: > 🧠 学习模式:备考/安静自习模式 --- ## 推荐原则 本 Skill 优先满足"**能不能用**",再考虑"**好不好用**"。 排序优先级(从高到低): 1. **是否在目标时间段内开放**(未开放直接排除) 2. **是否与硬占用冲突**(冲突直接排除,见时间冲突规则) 3. **是否满足人数容量**(座位数 ≥ 使用人数) 4. **是否匹配用户偏好**(插座、安静、小组适用等,结合学习模式综合评分) 5. **现场反馈加权**(近 7 天反馈良好加分、反馈异常减分) 6. **是否有特殊限制**(刷卡进入、禁止喧哗、设备维修等,在注意事项中说明) --- ## 工作流程 ### 第 1 步:节次转换(如适用) 若用户输入节次(如"第5-6节"),先查阅节次对照表转换为具体时间段,再进行后续处理。 节次对照表见 `references/schedule_data.md`。 ### 第 2 步:学习模式识别 根据用户输入的关键词和偏好,识别学习模式(赶 DDL / 备考 / 小组讨论 / 晚自习 / 普通自习),并据此调整后续评分权重。 ### 第 3 步:读取教室基础数据 加载 `references/classroom_data.md`,获取各教室的: - 教室编号、校区、教学楼、楼层 - 容量(座位数) - 是否有插座(全部有 / 部分有 / 无) - 是否有空调 - 安静程度(1-5分,5最安静) - 开放时间、适合场景、特殊备注、当前状态 - 学习模式标签、是否适合久坐、风险提示 **排除当前状态为"维修"或"暂停开放"的教室。** ### 第 4 步:时间冲突过滤 加载 `references/schedule_data.md`,判断目标时间段内各教室的占用情况。 **时间冲突判断规则:** | 占用类型 | 处理方式 | |----------|----------| | **硬占用**(课程、考试、讲座、社团活动、维修、禁止进入) | 直接排除,不推荐 | | **软占用**(开放自习、考研自习、需保持安静的公共学习空间) | 保留,但在注意事项中说明规则 | 补充规则: - 用户目标时间段与硬占用时间有**任何重叠**,则该教室不可推荐 - 课程/活动结束后默认留 **10 分钟缓冲**(如课程到 16:00,则 16:10 后可用) - 若用户输入"第5-6节",先转换为 14:00-15:45,再判断冲突 ### 第 5 步:容量筛选 - 可用教室的座位数 ≥ 使用人数 - 若 1 人自习,**优先推荐 30~80 座的中型教室**(太大空旷反而不安静) - 若小组讨论(≥4人),优先推荐有白板、可移动桌椅、适合围坐的教室 ### 第 6 步:现场反馈加权 加载 `references/feedback_data.md`,统计目标教室**最近 7 天**的反馈情况: | 反馈情况 | 加分/减分 | |----------|----------| | 反馈显示人少、安静、插座正常 | 每条 +3,累计最多 +10 | | 反馈显示人多、吵闹 | 每条 -5,累计最多 -15 | | 反馈显示插座异常(损坏、不足) | 每条 -8 | | 反馈显示门锁问题、临时关闭 | 每条 -10 | | 无反馈 | 不加分也不减分 | ### 第 7 步:偏好评分排序 按以下权重综合计算匹配度,**最终得分超过 100 时,按 100 展示**: ### 默认权重(普通自习模式) | 偏好维度 | 评分规则 | |----------|----------| | 插座(用户明确要求) | 全部有 +30,部分有 +15,无 +0 | | 安静程度(5分制) | 每分 +5,最高 +25 | | 容量匹配度 | 接近人数 2~3 倍 +15,过大或勉强 +5 | | 空调 | 有 +10 | | 指定教学楼/校区完全匹配 | +20 | | 适合小组讨论(用户要求时) | +20 | | 现场反馈加分 | 累计最多 +10 | | 现场反馈减分 | 累计最多 -15 | 基础分 = 各项得分之和 + 现场反馈加分 - 现场反馈减分,封顶 100。 ### 学习模式权重调整 在学习模式识别结果基础上,调整对应维度的评分规则: | 模式 | 调整内容 | |------|---------| | 赶 DDL | 插座权重 +30→+40,开放时长长额外 +10 | | 备考 | 安静程度每分 +5→+8(最高 +40),小容量教室额外 +10 | | 小组讨论 | 白板/可围坐 +25,适合 2-6 人 +20,插座降为 +15 | | 晚自习 | 开放到 21:00 后 +15,软占用提醒纳入排序 | --- ## 输出格式 只输出一版结果,包含以下模块,按顺序排列: ### 模块 1:学习模式 ``` 🧠 学习模式:[识别出的模式名称] ``` ### 模块 2:推荐结果(1~3 个) 每个推荐控制在 5 行以内: ``` 📍 推荐 #N 【最优选择 / 备选方案】 📌 位置:XX楼 X层 · 教室 XXX ⏰ 本次可用:XX:XX - XX:XX(开放时段:XX:XX - XX:XX) 🏷 特点:容量 XX 座|插座 全部有/部分有/无|安静 ★★★★☆|空调 有/无 📊 匹配度:XX/100 💡 推荐理由:[1~2 句,说明为何适合用户需求及学习模式] ``` **重要:** "本次可用"应填写用户查询的时间段(如 14:00-16:00),"开放时段"为教室本身的开放时间(如 08:00-21:00),两者不可混淆。 ### 模块 3:已避开的教室 列出 2~3 个没有推荐的典型教室及原因,让用户了解筛选逻辑: ``` 🚫 已避开的教室: • XXX:[排除/降权原因] • XXX:[排除/降权原因] • XXX:[排除/降权原因] ``` ### 模块 4:最优选择 ``` 🏆 最优选择:推荐 #1(XXX教室),理由:[一句话] ``` ### 模块 5:注意事项 ``` ⚠️ 注意事项: • [特殊进入要求,如需刷卡] • [软占用提醒] • [风险提示,来自 classroom_data.md 的风险提示字段] • [现场反馈异常提醒,如有] 📋 以上推荐基于示例数据,请以学校官方教室系统或现场公告为准。 ``` --- ## 无完全匹配时的处理 若没有完全满足所有条件的教室: 1. 给出最接近的 **1~3 个替代方案** 2. 在每个方案后明确标注**未满足的条件**,例如: - ⚠️ 该教室没有插座,但其他条件完全匹配 - ⚠️ 时间段内有一节课占用至 15:45,建议 15:55 后入场 3. 末尾询问:"需要我放宽某个条件重新为你推荐吗?" --- ## 数据说明 本 Skill 依赖以下数据文件: | 文件 | 用途 | 更新频率 | |------|------|---------| | `references/classroom_data.md` | 教室基础信息(含学习模式标签、久坐适用性、风险提示) | 每学期 | | `references/schedule_data.md` | 课程占用时间表(含硬/软占用区分) | 每周 | | `references/feedback_data.md` | 教室现场反馈数据(人流、噪音、插座状态) | 每日 | 若学校未提供真实数据,使用示例数据进行演示,并在输出顶部注明: > ⚠️ 当前使用示例数据进行演示,实际推荐需接入学校教室管理系统。 --- ## 使用示例 **示例 1(单人自习,有偏好):** > 周三下午 2 点到 4 点,北区,1 个人自习,想找有插座安静一点的教室 处理:识别学习模式 → 备考/安静自习 → 查周三 14:00-16:00,北区,排除硬占用 → 容量筛选 → 现场反馈加权 → 按备考模式权重评分排序 → 输出推荐 + 避坑说明。 **示例 2(赶 DDL):** > 明天下午赶个报告,需要插座,北区 处理:识别学习模式 → 赶 DDL → 插座权重提升 + 开放时长加分 → 排序输出。 **示例 3(小组讨论):** > 周五上午找个能容纳 6 个人开小组会的地方 处理:识别学习模式 → 小组讨论 → 优先白板/可围坐教室 → 排序输出。 **示例 4(信息不足):** > 有空教室吗 处理:信息不足,追问一次:"请告诉我你想使用的**时间段**和**大概人数**,我来为你推荐合适的学习空间 📚"
don't have the plugin yet? install it then click "run inline in claude" again.