不想排座位

不想排座位 2.0 已上线!

不想排座位 2.0 已上线!

老三 · 2026-05-04

各位朋友们,大家好: 不想排座位 2.0,来了。 我拖了蛮久,这段时间一直没真正更新也不是在摸鱼——而是在跟 Bug 搏斗(好吧我承认就是在摸鱼)。 这次 2.0 是一次从里到外的大版本更新,内容非常多。废话不多说,往下看。 --- 新增功能 左右护法 "左右护法"大概是 1.x 整个生命周期里被提到次数最多的需求,没有之一。原因也不复杂:每个班总有那么一两位同学,老师就是需要他们钉在讲台两边——不是偏心,是真的有管理上的需要。但 1.x 对此完全没有概念,每次一随机排座,这俩人就被甩到天涯海角去了,老师还得手动一个个拽回来。折腾半天,还不如自己拿粉笔在黑板上画。 2.0 终于把这事儿给办了。 我们加入了原生的左右护法识别机制:把学生拖到讲台左右两侧的指定区域,系统自动标记为左护法/右护法。标记之后,不管你怎么随机、怎么调换,这两个位置纹丝不动——除非你亲手把标记摘掉。护法身份会同时显示在座位区和未入座列表里,一目了然。 操作方式?拖过去,松手,完事。没有弹窗问你"确定要设为护法吗?",没有复选框让你打勾,连一个多余的按钮都没有。好的功能就不应该需要教程。 演示视频: 固定座位 和护法类似但更通用的一个能力:你现在可以把任意学生固定到当前位置。 使用场景很多——比如有同学因为视力问题必须坐前排,或者某几位同学坐在一起就会闹翻天。以前遇到这种情况,每次随机排完你都得手动检查一遍再调整。现在,右键点击座位,选择"固定座位",这个位置就被锁住了。后续所有的随机排列、布局变换都会自动绕开它。界面上会有明确的标记,哪些位子被锁了,一眼就能看到。 学生信息编辑/添加新学生 1.x 有个让人抓狂的问题:学生的姓名打错了一个字/漏了个学生,你得把这个学生删掉再重新导入一个。 是的,我知道。这很蠢。 2.0 加了直接编辑/添加的能力。姓名、学号、性别、成绩,点开就改,改完就存。不用删除重建,不用导出再导入,不用绕任何弯路。这个功能本来就应该从第一天就有,迟到了这么久,抱歉。 BSCE 三方应用兼容 说句公道话,BSCE 是个好软件。在排座位这个小赛道里,人家出道早、功能全、用户多,很多同学在认识我们之前就已经是 BSCE 的老用户了。这没什么不好意思承认的。 但问题是,不少同学想从 BSCE 迁移过来的时候,被导入流程劝退了: "我那边全班数据都录好了,到你们这儿还得重新来一遍?" "能不能一键导入啊?" "一键就行"被反复说了很多遍。说实话看到的时候是有点心虚的——这事儿本来就该我来解决,不应该让用户操心。 2.0 补上了。我们全面适配了 BSCE 的数据格式,本地导入和云端导入都支持。云端导入的话,登录你的 BSCE 账号就行,系统会自动拉取你的云端工作区数据并导入当前班级。数据拉取、格式转换、字段映射全部后台搞定,十秒钟不到,你什么都不用管。 想从 BSCE 过来?过来就是了,你的数据我们全都接得住。 布局变换能力扩展 1.x 的布局操作说白了就是"往左挪一列、往右挪一列",简单粗暴,但也仅此而已。一到稍微复杂的场景就不够用了。 2.0 把这块能力做了一次大幅扩展: 左右镜像——一键把整个座位布局水平翻转。靠窗的同学瞬间变成靠门的,反过来也一样。听起来简单,但在"每周左右轮换"这种常见需求下特别好用。 整体前移/后移——全班座位统一向前或向后平移一排。再也不用一行行手动挪了。 智能模板轮换——这是我个人最喜欢的一个改进。以前的左右移动就是生硬地把每一列往旁边推一格,完全不管你的教室是什么结构。但实际上很多教室是 2+1+2、3+1+3 这种分组式的布局,中间有过道。2.0 会尝试识别你的布局结构,然后按组来轮换,而不是按列硬推。效果自然很多。 按大组移动开关——你可以自由切换"按大组轮换"和"按列轮换"两种模式,在设置页也可以统一配置默认值。 Spotlight 命令面板 如果你用过 macOS 的 Spotlight 或者 VS Code 的命令面板,你会对这个功能立刻感到亲切。 在班级页面里,我们新增了一个命令面板。你可以双击 shift唤出它,直接敲命令就能执行查询或操作——支持命令补全、结果回显,甚至可以通过命令触发部分班级管理动作。对于键盘党或者是有特殊需求的人(嘉豪,或者你觉得有什么功能点点点非常麻烦)来说,这大概是 2.0 里最让人兴奋的功能之一。 鼠标能做的事,键盘也应该理论上大概或许能做。 云服务与云同步体系 聊完了那些轻松的,这一段我想认真说。 你有没有想过这样一个问题:你的班级数据、学生名单、座位布局、约束关系——这些信息拼在一起,几乎就是一个班级的完整画像。而这份画像,此刻正安安静静地躺在某台你从没见过的服务器上。你知道那台服务器在哪吗?你信任它吗?你有别的选择吗? 我不是在搞阴谋论,也不是暗指谁家不靠谱。大多数云服务商都是负责任的,这点我不否认。但"大多数靠谱"和"我确定它靠谱"之间隔着一道缝,教育数据不该掉进去。 所以我们给出的答案是—— 把选择权交给你。 2.0 搭建了一套完整的云服务体系,不是简单地"把数据丢到云上"就完事了,而是从登录、同步、快照、加密到自建部署,每个环节都认真做了一遍: 云服务登录——支持登录老三账户,登录后可以在应用内看到头像、邮箱、订阅等级和到期时间。登录成功后,系统会自动触发一次同步流程,不需要你多点任何一下。 班级云同步——本地班级可以推送到云端,云端数据也可以拉回本地。班级页顶部会直接显示同步状态:"未上云"、"本地有更新"、"已同步"、"冲突"——当前是什么情况,抬眼就知道。同步结果也做了细分提示:成功、已是最新、从云端拉回、冲突、失败,每种状态都有明确的反馈,不会让你猜。 云端快照——你可以随时为当前班级创建一份云端快照,相当于给数据拍一张照片存起来。需要回滚的时候,选一个快照恢复就行。支持创建、查看、恢复、删除,完整的生命周期管理。 加密传输——这一点我要单独强调。同步、快照、订阅等所有云端请求,都经过加密信封传输。本地和云端之间会先完成密钥交换,之后的核心数据全程加密,不存在明文裸奔的情况。你的数据在传输过程中,只有你自己的客户端和你自己的服务器能解读。 自建部署——我们在 Open 版本的 /backend 目录下提供了完整的后端源码,你可以把同步服务部署在自己信任的机器上。在设置页配置好自定义云服务器地址,一切就绑定到你自己的节点了。数据从客户端出发,抵达你自己的服务器,全程不经过第三方。你的数据,只在你手里。 觉得自建太折腾?我们也已经上线了官方托管服务,开箱即用,不需要碰任何一行代码。但请记住,官方托管永远只是一个选项——自建的大门始终敞着,我们绝不会堵上它。 自建部署教程正在写,很快会发。 光感灵动交互 先声明:这个功能对排座效率没有任何帮助。零。一丁点都没有。 但它真的很酷。 我们把页面渲染层重构了一遍,做出了一套叫液态灵动交互的视觉效果——鼠标划过座位卡片的时候,一圈柔和的光晕会从指针位置向四周漫开,跟着你的移动流淌、变形、消散。怎么形容呢,大概就是鼠标变成了一束丢进水里的光。 我知道肯定有人要说"花里胡哨"。但你每天都要打开这个软件,对着这个界面操作几分钟甚至几十分钟。一个摸起来舒服的界面,本身就是一种生产力。 除了光感效果,我们还打磨了一大堆微交互的细节:按钮悬停的反馈、卡片拖拽的动画、列表展开收起的过渡……这些东西一个个说出来都很琐碎,但攒在一起你能明显感觉到——整个软件变"润"了。 别光看文字,上手试试才知道。 AI 灵动岛 右上角多了个问号图标,点它。 屏幕边缘会滑出一个轻量级的 AI 对话面板,我们叫它灵动岛。它支持三种形态:收起、展开、全屏——你可以根据当前需要随时切换。它不会主动蹦出来吓你一跳,就安安静静待在那儿,你叫它它才来,用完关掉,干干净净。 这次的 AI 能力也不只是"聊聊天"这么简单了。灵动岛支持流式回复,打字机一样实时输出,不用对着空白屏幕干等;支持工具调用,AI 可以直接操作你的班级数据,调用前会弹出授权确认,不会偷偷动你的东西;工具执行过程中还有进度提示,让你知道它在干什么。 AI 会话会持久化保存,关掉再打开,上次的对话还在。连接配置也会存到数据库里,不用每次重新填。如果你在用第三方的 OpenAI Compatible 接口,我们也做了兼容处理,报错信息比以前清晰得多,不会再给你一个莫名其妙的 undefined 了。 One More Thing…… 在整个 2.x 版本周期里,AI 不会只是个"问答框"。我们正在琢磨一些更深度的玩法,让它真正参与到排座决策中来。 具体是什么?现在还不能说。但值得你期待。 桌面端原生文件桥接 这是一个你可能不会注意到、但用起来会觉得"嗯,对了"的改进。 桌面版的导入导出流程现在接入了系统原生的文件选择和保存对话框。导入 .seats 文件的时候弹出的是你熟悉的系统文件选择器,导出 Excel、SVG、PPTX、小组表的时候弹出的是系统的"另存为"对话框。不再是网页那种不伦不类的文件操作了,整个体验更贴近一个真正的桌面应用该有的样子。 全新堆叠通知 强迫症患者狂喜。 以前多条 Toast 通知同时弹出来的时候,它们会挤在屏幕角落互相遮挡,看不清也关不掉。2.0 引入了堆叠通知:多条通知自动收成一叠整齐的卡片,滚轮切换,一条条看,不急不慌。 通知是用来传递信息的,不是用来添堵的。 --- 重要功能增强 约束系统重做 如果说 1.x 的约束系统是"能用",那 2.0 的目标是"好用"。 整个约束面板做了一次大幅增强:新增、编辑、启用/停用、删除,所有操作一站完成。约束列表支持按"全部 / 有问题 / 启用中 / 已停用"筛选,再也不用在一堆规则里翻来翻去找那条出了问题的。 更重要的是,约束现在会主动告诉你哪里不对——冲突、重复、未满足,每条约束都有清晰的诊断信息。自动排座的时候,约束会参与决策;手动移动学生之后,系统会自动尝试修复被破坏的约束;你也可以随时对当前布局做一次全量诊断,看看有没有哪条规则被违反了。 约束不应该只是"写在那里"的规则,它应该是一个活的、会呼吸的系统。 排座与布局规则更稳 护法、固定座位、约束——这些规则在 1.x 里多少有点"脆弱":做一次镜像可能就丢了,恢复一下布局可能就乱了。2.0 在底层做了加固,这些规则在布局移动、镜像翻转、快照恢复等操作之后都能正确保留和修正。 你设好的规则,不会因为一个正常操作就悄悄失效了。这是底线。 小组移动逻辑可配置 拖拽换位的时候,小组应该跟着座位走,还是跟着学生走? 1.x 里这个逻辑是写死的,有人觉得对,有人觉得不对,谁也说服不了谁——因为两种需求都合理,只是使用场景不同。 2.0 给出了选择:组定人动和组随人动两种模式,一键切换。拖拽换位、快捷调位、批量移动,所有场景都会跟着你的选择走。不再替你做决定,你自己说了算。 设置页升级 1.x 的设置页说好听点叫"简洁",说难听点就是功能太少。2.0 把它扩展成了一个综合控制台:主题配置、排座偏好、云服务管理、订阅状态——所有需要调整的东西都收在这里了。包括前面提到的"按大组移动"的默认值,也可以在设置页统一配置。 新建班级流程优化 以前新建班级就是"起个名字,开始手动填"。2.0 改成了分流式流程:一进来就能选择空白创建、从 Excel 成绩表导入、从 Excel 座位表导入、还是从 BSCE 导入。不同的起点,不同的引导路径。从成绩表导入的时候,还可以先设定默认的座位行列数,省得建完了再去调。 小改动,但让"第一次打开软件"这件事变得顺畅了很多。 班级页操作面板增强 2.0 里的班级页面加入了更完整的右键菜单和快捷操作。固定座位、设置组长、编辑学生信息、复制/剪切/粘贴、移入暂存区——这些高频操作现在都可以右键直达,不用再翻工具栏找按钮了。 我们花了不少时间做减法,确保菜单里出现的每一个选项都是你在当前场景最可能用到的。右键试试看。 布局编辑器体验增强 布局编辑器新增了一个预览开关,打开之后可以在低干扰的状态下查看当前学生的实际落位情况——不用退出编辑模式,也不用在两个页面之间来回切换。行列更新、整体平移、右键修改格子类型等操作也做了补全,编辑器的能力更完整了。 云服务体验细化 云相关的操作涉及网络请求,等待是不可避免的。但等待的时候你至少应该知道"现在在干嘛"。2.0 在登录过程中增加了准备提示、等待提示、主程序锁定提示,不会再让你对着一个转圈的图标猜发生了什么。订阅状态也支持自动刷新了,不会出现"明明已经订阅了但显示还没生效"的尴尬。 --- 关于订阅与许可 2.0 里出现了一套订阅系统,我猜有人看到这几个字心里咯噔了一下。别急,听我说。 这套系统的核心用途是用户身份识别和管理——比如在云同步场景下区分不同用户的数据,或者为将来可能的增值功能打个技术地基。仅此而已。它不是付费墙。 不想排座位的全部核心功能,对所有用户完全免费,没有门槛,没有限制。 应用内可以查看订阅计划、用兑换码兑换订阅、跳转购买链接,也可以手动刷新订阅状态。但所有这些,都是为了让你更方便地管理自己的账户,而不是为了限制你使用功能。 如果你碰到某个功能提示需要订阅权限,通过任何渠道联系我就行,告诉我你的需求,我直接帮你开通。没有审核,没有等待,更不存在付费。你的需求合理,我就没有理由拒绝。 把话说得再明白一点:不想排座位不收钱,今天不收,以后也不收。 一个学生做的小工具,能帮到哪怕一个老师,比什么商业模式都值。 另外,本项目基于 GPL-3.0 协议开源,并附有以下例外条款: 1. 商业项目例外:现有大型商业项目,在与作者洽谈并获得本人书面许可后,可以不开源。 2. 个人开发者例外:对开源流程不熟悉、仅对 Vibe Coding 有一定了解,且属于非商业项目、无任何资助或捐款渠道、软件分发范围在 50 人以下的个人开发者,可以在标明原作者的前提下暂时不开源。 3. 特殊许可例外:经作者特殊许可的情况,可以不开源。 简单来说:我们欢迎一切善意的使用和传播,也理解每个开发者的实际处境。拿不准的话,找我聊就好。 --- 写在最后 好了,产品的部分聊完了。最后这几段跟功能无关,就是想用我自己的话,说几句真心的。 不想排座位这东西是怎么来的呢?说出来其实挺不正经的。某天深夜睡不着,随手 Vibe Coding,脑子里就一个模模糊糊的念头——"排座位好像可以更简单一点"。没有需求文档,没有技术评审,连个草图都没画。写着写着天亮了,东西也就出来了。我当时真的只是自己用着玩,压根没想过会有第二个人打开它。 然后它就被 500 多个人打开了。 截至四月底,1.7 版本的累计下载量突破了 500 次。这个数字搁在互联网上不值一提。但对一个零推广、零预算、连个正经官网都没有的学生项目来说——我不知道该怎么形容那种感觉。大概就是凌晨三点刷了一眼后台,然后对着屏幕傻乐了好一会儿。 乐完了,压力也跟着来了。 2.0 的开发远没有想象中顺利。一个藏得极深的 Bug 让我排查了整整两天,排到怀疑人生;云同步刚上线就被证书和网络问题轮番轰炸;前端界面在某次重构之后发生了一次堪称壮丽的连锁崩坏,控制台里的红色报错像瀑布一样哗哗往下淌——哦对了,同期的模考成绩也像瀑布一样哗哗往下淌,不过那就是另一个悲伤的故事了。 但还是走过来了。 靠的不是什么宏大愿景,就是一个很简单的想法:有人在用,那就不能让人家失望。 由于最近要面对一场重要考试,七月之前更新节奏可能会慢一些。但——不会跑路,不会跑路,不会跑路。 望理解。 认真地感谢每一位支持过这个项目的同学。你们的关注和使用,是这个项目能走到今天的根本原因。 有人问过我 (其实也没人) ,不想排座位的商业模式是什么。 我的回答是:没有。 这份坚持从来不是因为钱。是因为一个很简单的事实——这个小工具确确实实帮一些老师/苦逼电教省下了时间。省下来的那些时间,可以拿去备课,可以拿去跟学生多聊两句,也可以拿去早一点回家吃顿热饭,或者是让苦逼电教老老实实的多上会自习课,周末在家多打两把游戏。 这就够了。 说到底,排座位这件事在整个教育体系里实在太小了。小到没有厂商愿意认真做,小到没有资本愿意看一眼,小到你在任何一个软件推荐列表里都找不到"排座位"这个品类。但就是这么一件小事,每周都在消耗每一位班主任的时间和精力。一个学期下来,花在排座位上的时间加起来可能够备好几节课了。 我没有能力去改变教育体制,也没有资格去指点什么教学方法。我只是一个会写点代码的学生,碰巧看到了这个小小的痛点,然后试着做了一个小小的工具。它解决不了什么大问题,但如果它能让哪怕一位老师在某个忙碌的晚上少加十分钟班,那这几千行代码就没白写。 我一直觉得,技术最动人的时刻,不是它改变世界的时刻,而是它安安静静地帮到一个具体的人的时刻。不想排座位大概永远不会成为一个"成功的产品",但它不需要成功——它只需要有用。 感谢各位在 1.x 一路走来的支持与陪伴。我们的愿景很朴素,朴素到有点简陋,但每一个字都是认真的: 让教育回归教育,让科技真正普惠大众。 我们更希望有越来越多这样的同志出现。不一定是做排座位软件——做课表的、做值日表的、做成绩分析的、做家校沟通的、做请假审批的、做作业打卡的、做班级管家的……什么都行。每个人在自己能触及的角落里做一点点事情,这些微小的力量汇聚起来,就是一场安静的变革。 让我们一起—— 尽微薄之力,献星星之火。