一个12岁的开发者,用一部POCO C55手机,手写SQL搭起了自己的AI编程导师KODA。没有ORM,没有迁移工具,没有构建步骤——Supabase的编辑器就是他的IDE。
这个项目最初只是他上一篇分享的高层架构图,直到一位叫Artur的开发者留言:"能展开讲讲吗?看起来很有意思。"于是,他把真实的表结构、真实的安全策略、真实的踩坑记录,全部摊开在了一篇深度拆解里。
![]()
数据库即法律:六张表撑起全部
KODA的后端一共六张表:profiles、conversations、chats、submissions、votes、files。全部是手写的SQL,没有ORM,没有迁移工具,全部在手机上完成。
他特别强调了一个设计理念:前端只是建议,数据库才是法律。以chats表为例,他直接启用了行级安全(Row Level Security),并写了一条策略:用户只能看到自己的聊天记录。
这意味着什么?即使有人删掉了他JavaScript里的每一个if语句,依然无法读取其他用户的聊天内容。安全边界被下沉到了数据库层,而不是依赖前端代码的防御。
日本的一位高级开发者nyaomaru(用户编号001)在压力测试后评价,这是一个"高度弹性的架构模式"。这位12岁的作者说,他把这句评价打印了出来。
四模型降级链:从云端到离线兜底
模型调用是KODA最核心的部分。他配置了四个模型:llama-3.3-70b-versatile、openai/gpt-oss-20b、llama-4-scout、qwen3-32b。逻辑很简单:当前模型失败,就切换到下一个;如果全部失败,就进入"离线导师模式"。
这个降级链的设计源于一位叫VP_xudon的开发者告诉他的事实:Groq被防火墙挡住了。所以当所有云端模型都不可用时,KODA会切换到内置的本地导师——基于关键词路由的课程、动画KaTeX数学公式、Codewars练习,完全不需要网络。
用他的话说:"道场可以在地下室、在公交车上、在防火墙后面正常运转。"
z-index战争:三次失败后的终极方案
UI层有一个持续困扰他的问题:一个托管徽章总是悬浮在他的界面上。他尝试了三次,最终用一行CSS解决了:
.modal-overlay { z-index: 2147483647; }
这是32位整数能表示的最大值。同时,他还写了一个MutationObserver,在徽章被注入的毫秒级时间内直接删除它。他说,从这场"层叠上下文战争"中学到的东西,比任何教程都多。
极简主义:一个文件就是全部
整个前端没有构建步骤,没有node_modules,没有webpack。一个index.html文件,可以在手机上直接编辑,拖拽zip就能部署,永远不会丢失。如果手机在编辑中途死机,他最多损失一个文件——而不是一个monorepo。
这种极简主义背后是一种务实的选择:对于个人项目,复杂工具链带来的维护成本往往超过收益。他选择把复杂度控制在单文件可管理的范围内。
我的判断:架构的韧性来自约束
这个案例最值得注意的地方,不是技术选型本身,而是约束条件如何塑造了架构决策。
手机编辑意味着不能依赖重型IDE,于是手写SQL成为自然选择;防火墙问题意味着不能依赖单一模型,于是降级链成为必需;单文件部署意味着不能引入构建工具,于是极简成为默认。
很多开发者习惯先选工具再解决问题,而这个12岁的作者是反过来——先明确约束,再选择最轻的解决方案。这种思维方式,比任何技术栈都更值得借鉴。
他在文末向Artur喊话:如果还想看下一轮展开(语义缓存、推荐图谱、腰带/经验值系统),就在评论区说一声。他说:"你们要求什么,我就展开什么。"
2,358个关注者,一部手机,零恐惧。这个项目还在继续生长。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.