Skill: jjmorant12/studyseat-buddy (version 1.0.0)

--- 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（信息不足）：** > 有空教室吗 处理：信息不足，追问一次："请告诉我你想使用的**时间段**和**大概人数**，我来为你推荐合适的学习空间 📚"


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)