标签

Bolderdash
Technical

一套 API 客户端,两条鉴权通道

Web 用 HTTP-Only Cookie,CLI 用 Bearer Token。后端在中间件里双通道检查,前端把取凭证的方法注入进核心库——feature 代码因此完全不需要知道自己跑在哪个端。


Next.js 只是一个外壳,和 Electron 平级

多端 monorepo 里最容易搞错的一件事:把 Next.js 当成「主应用」,其他端当成「移植」。把它降级成外壳之后,包该怎么切就清楚了——尤其是 CLI 这种连 React 都装不了的端。


跨包只写 import type,运行时全走 ctx

import type 编译后完全消失,不留下任何运行时加载。几十个 UI 包因此可以互相知道对方的类型,却谁也不加载谁——插件架构的分界线就在这一行语法上。


用模型给训练数据打分之前,先判两次看看

把会议转写做成 SFT 数据,我用一个大模型当裁判查事实。同一份输入判两次,一次说零处错误,一次说十几处。单次判定当门槛就是在抽签。


投机解码与 MTP:为什么"猜"是免费的

一次前向处理五个 token,和处理一个,耗时差不多——瓶颈在搬运权重,不在算术。这个差距就是投机解码全部的加速空间,而 MTP 是模型自带的那个草稿生成器。


special: true 到底改变了什么

编码时它什么都不改。解码时它决定一切——但只在 skip_special_tokens 打开的那一种情况下。全部结论用 GLM 5.2 的 tokenizer 实测得出。


写完 Hexo skill 之后,又做了一个语气插件

第一个 Claude Code skill 在 ClawHub 上有 700+ 下载,这个数字意外到让我想再写一个。这次装的是我发帖时用的那些语气,而且会一直往里加。


Chat Template 到底 tokenize 了什么

模型看不到你的 messages 列表,只看得到渲染完的那一串文本。想通这件事,add_generation_prompt、loss mask、双 BOS 这几个坑就串起来了。


多层账户与用户模型设计:为什么一个用户只能属于一个账户

三层账户与用户模型:法律实体 → 账户 → 用户。为什么先否决这个设计,两个月后又上线,以及四个只有真实数据才抓得到的静默失败 bug。


Little's Law 与 vLLM 扩缩容:10 个踩坑与 +99% 吞吐

给推理服务做自动扩缩容,最容易犯的错是用 QPS 判断负载。由 Little's Law,请求越慢、满载系统的到达率反而越低——系统 100% 满载时它判定要缩容。换成饱和度判据后,并发 16 以上吞吐 +99.3%、p50 −50.1%。


AI

用模型给训练数据打分之前,先判两次看看

把会议转写做成 SFT 数据,我用一个大模型当裁判查事实。同一份输入判两次,一次说零处错误,一次说十几处。单次判定当门槛就是在抽签。


投机解码与 MTP:为什么"猜"是免费的

一次前向处理五个 token,和处理一个,耗时差不多——瓶颈在搬运权重,不在算术。这个差距就是投机解码全部的加速空间,而 MTP 是模型自带的那个草稿生成器。


special: true 到底改变了什么

编码时它什么都不改。解码时它决定一切——但只在 skip_special_tokens 打开的那一种情况下。全部结论用 GLM 5.2 的 tokenizer 实测得出。


写完 Hexo skill 之后,又做了一个语气插件

第一个 Claude Code skill 在 ClawHub 上有 700+ 下载,这个数字意外到让我想再写一个。这次装的是我发帖时用的那些语气,而且会一直往里加。


Chat Template 到底 tokenize 了什么

模型看不到你的 messages 列表,只看得到渲染完的那一串文本。想通这件事,add_generation_prompt、loss mask、双 BOS 这几个坑就串起来了。


Little's Law 与 vLLM 扩缩容:10 个踩坑与 +99% 吞吐

给推理服务做自动扩缩容,最容易犯的错是用 QPS 判断负载。由 Little's Law,请求越慢、满载系统的到达率反而越低——系统 100% 满载时它判定要缩容。换成饱和度判据后,并发 16 以上吞吐 +99.3%、p50 −50.1%。