记录代码、工具,与那些值得慢慢想清楚的事。
这里更像一份持续更新的个人刊物
前端工程、AI
工具、Agent实践、个人投资工具,以及一些代码之外但仍需要判断的问题。
- Editor
- Jun
- Archive
- 2014—2026
- Essays
- 54
- Index
- 49 tags
01
Editor’s Note
卷首语
这里是一份关于代码、工具,以及判断的笔记。
收录那些需要放慢一点才能看清的经验:代码如何形成边界,工具如何改变判断, 数据如何获得口径,而人在系统之中如何保留清醒的位置。
这里不急着给出漂亮结论,也不把实践压缩成口号。更重要的是把问题展开, 把依据留下,让每一次写作都成为日后仍可复读的观察。
02
Writing
最新写作
- 给 Next.js 套一层 Electron 壳:零改动打包成桌面应用 StockTracker 之前是一个纯 Web 服务,想着 Electron 易于分发,尝试把它打包成桌面客户端。本文记录整个过程中 Next.js 代码零改动的架构设计、踩过的坑和最终方案。
- 我如何组织 AI 翻译扩展的缓存、批处理与 Provider 在双语阅读扩展里,翻译请求如果由页面脚本随手发送,很快会变慢、变贵、难以恢复。我在 Parallel Translate 中如何把缓存、批处理、多 Provider 与页面渲染拆开处理。
- 我如何在浏览器扩展中把网页变成双语阅读视图 我最近在做一个双语阅读浏览器扩展。真正棘手的并不是把一句英文交给翻译服务,而是在不破坏原网页的前提下,找到正文、按需翻译、保留交互,并且随时还原页面。
- 为什么我用 SQLite 作为个人投资系统的数据底座 在 StockTracker 里,我没有把 SQLite 当成一个简陋的本地缓存,而是把它作为个人投资账本和 AI 工作流状态的本地数据底座。这篇文章从持久化方案对比讲到 SQLite 的机制和取舍。
- 为什么投资系统不能只使用 JavaScript number 计算金额 JavaScript 的 number 很方便,但它表达的是二进制浮点数,不是金融系统需要的十进制语义。这篇文章从 0.1 + 0.2 讲到手续费、每股成本、FIFO 成本队列和 big.js 选型。
- AI 对话里的逐字输出,背后其实是一条不断吐数据的 HTTP 响应 很多 AI 对话产品看起来像是在一个字一个字地打出来,背后通常不是 WebSocket,而是基于 text/event-stream 或 ReadableStream 的 HTTP 流式响应。这篇文章拆解 SSE、Content-Type 和前端增量渲染的实现细节。