主要在做 AI 应用。云端 API 和本地 GGUF 模型走同一套接口,路由、回退、流式输出、额度控制这些都得自己写。比起把模型调通,我更在意它跑起来之后稳不稳。
另外有一套电路识别的项目,从拍照到还原拓扑,规则引擎和 LLM 各管一段。平时 Windows 上用得多,但部署尽量保持 Linux 也能跑。
- 多模型服务 — 后台能改 provider 配置,下一次请求就生效;本地节点不通就自动切云端。
- 本地推理 — llama.cpp、GGUF、显存和内存占用,研究怎么在家里这台机器上跑得舒服一点。
- 电路识别 — 把课堂电路照片变成能编辑、能校验的拓扑图。认出元件不难,难的是把导线关系弄对。
- Windows 工具链 — 打包、诊断、回滚脚本,用得最多的还是 PowerShell。
两个都是私有仓库,源码不方便公开,这里只写做法。
最初是前端课的大作业:静态 HTML 加 jQuery,给一个游戏做设定 Wiki,角色、物品、世界观、攻略各一页。最早的提交信息就叫「1」,改懒加载那次叫「懒加载啊啊啊啊啊啊」。
做下去发现每改一条词条都得动 HTML,就把数据抽出来,三月加了后端,四月另外两个站并进来做成子域名,AI 那层是八月才长出来的。现在平台的核心是自己写的一套 LLM 服务层,当初那些页面反倒成了它的门面 —— 前端到现在仍是原生 JS,没上框架也没打包器。
后台改完 provider 配置,下一次请求就生效,不用重启。几条当时觉得麻烦、后来证明值得的:
- 云端和本地模型走同一套流式接口,一边不通就换另一边
- 熔断器把「忙」和「坏」分开看 —— 排队时不判死,真挂了才切
- 流式输出里混着的元数据边收边剥,不污染正文和历史
- 每日额度按「预留 → 结算」记,请求中途崩了不会把额度吃掉
- 角色设定走编译 → 发布 → 泄漏检查,发布前会拦一道
- 本地推理机有八层体检:监听、SSH、数据面、运行时、模型、鉴权、网关
一开始只是想把课堂电路图识别出来。做下去才发现,认出元件不难,难的是把导线关系还原成一张靠谱的拓扑图。
- 证据不够就不猜。宁可返回「未知」,也不编一条看起来合理的边
- 导线用并查集聚类,环路用 Prim MST 收,避免连线在图上乱飞
- 每条边都记着自己是怎么来的,答错了能查到是哪一步
- 浏览器里直接跑 YOLO,WebGPU 不行就退到 WASM
Python 和原生 JS 是主力,Vue / TypeScript 用在在线课程那套上。
模型侧跑 llama.cpp + GGUF,视觉侧是 YOLO + ONNX Runtime。
部署基本是 Nginx 加 Windows 服务,能搬去 Linux 的尽量搬。
写代码基本都在 Copilot 和 Codex 里完成;DSH 和 AstrBot 是最近在折腾的 agent 方向。
每天由 GitHub Actions 重新生成,见 .github/workflows/snake.yml。

