Archive
按时间回看这些文章如何从早期工程笔记,逐渐走向 AI、工具系统与个人方法论。
-
给 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 和前端增量渲染的实现细节。
-
做 AI 对话产品,难点不在聊天框
在 StockTracker 里做 AI 对话之后,我越来越觉得真正难的不是把模型接进聊天框,而是让一次提问、一次澄清、一次分析和一段历史都能成为可继续推进的工作流状态。
-
让 AI 分析靠谱之前,先把投资账算清楚
在 StockTracker 里,我越来越意识到 AI 投研体验的底座不是提示词,而是可审计的交易账本、成本口径、手续费规则和行情有效性。
-
在微信和 QQ 中处理二次分享
记录在微信和 QQ 中做二次分享时的接入思路、封装方式和注意事项。
-
当时为什么会用 Chrome Headless 去抓视频链接
视频资源提链不能只靠普通 HTTP 请求,很多页面需要真实浏览器执行脚本、等待异步加载、监听网络请求,Chrome Headless 正好补上了这部分能力。
-
Chrome 59 DevTools 中值得关注的新功能
梳理 Chrome 59 DevTools 的几个实用更新,包括 Coverage、整页截图和 async/await 调试。
-
使用 FIIL Diva Pro 的一些感受
入手 FIIL Diva Pro 的简单开箱与体验,聊聊蓝牙、降噪和日常使用感受。