把 Cursor 当工程工具,而不是聊天窗口 从成本、上下文、模型选择和团队沉淀出发,整理 Cursor 的日常使用判断。文章区分哪些任务适合 Agent,哪些先用 Ask 探索,哪些该交给官方文档或低成本模型,并把 Rules、Skills、验证命令、上下文控制和 review 成本放进同一套工程习惯里。 2026-06-01
Vite library mode 里漏到 Chrome Extension 的 process.env Chrome Extension content script 一加载就报 process is not defined,popup 却正常。文章把差异缩到 Vite 构建形态:library mode + iife 不适合当 content script 常规入口,最终改成普通 JS input 并固定输出 classic script。 2026-06-01
一次 Git 历史压平惊魂:orphan 分支和 git add -A 的坑 复盘一次发布前清理 Git 历史的险情。目标是把仓库压成新的初始化提交,但 orphan 分支、git add -A、未跟踪文件、删除记录和历史敏感信息会叠在一起;文章重点讲安全检查、备份分支、验证、提交作者和 force push 边界。 2026-05-30
后台管理系统常见 UX 问题总结 把一份后台管理系统 UX 问题清单重新整理成开发前就该考虑的判断。文章围绕筛选、表格、批量操作、弹窗抽屉、风险动作、空态、错误态和长期扫读成本,讨论后台作为工作台应该如何组织,目标是降低重复操作和判断成本,而不是按展示页思路堆卡片和装饰性布局。 2026-05-29
一次 Astro 静态构建里被误导的 MissingSharp 排查记录 CI 报 MissingSharp,硬盘上却不缺 sharp。文章复盘这次 Astro 静态构建排查:真正的问题来自一个 server import 在 prerender 阶段启动服务端副作用链,最后把错误带到图片优化和 native / CJS 包加载上,排障时要先确认副作用入口。 2026-05-28
Chrome Extension debugger 与 CDP 的能力边界 Chrome Extension 的 debugger 权限可以让扩展通过 CDP 操作目标标签页,但它有明显权限提示和安全代价。文章梳理普通内容脚本做不到的场景、debugger 能接触到的 DevTools Protocol 能力,以及 attach、detach、最小权限和用户触发边界。 2026-05-26
Vue script setup 中组件静默消失的原因:一次命名冲突排查 一次 Vue script setup 组件静默消失排查。页面没有明显报错,根因却是普通变量名和组件名只差大小写,模板编译时解析到了错误对象。文章从编译产物和组件解析规则还原问题,并提醒不要让组件和局部变量只靠大小写区分,适合排查“没报错但没渲染”的场景。 2026-05-26
Vue script setup 中 defineProps 的编译边界与错误排查 defineProps 看起来像函数,实际是 Vue script setup 的编译器宏。文章从一次把 defineProps 包进 toRefs 的错误开始,回到 @vue/compiler-sfc 对宏调用的识别边界,并用对应 tag 源码说明为什么运行时不该再出现它。 2026-05-23
把微信收藏表情导出来,再分批导入飞书 微信没有正式的收藏表情批量导出入口,飞书单次导入又限制 50 张图。文章记录一条可复用路径:让微信网页版展示表情,用浏览器拿图片资源,过滤无关图片,再按飞书限制分组打包成 zip,减少手工保存、重命名和重复整理,适合迁移大量收藏表情和图片素材。 2026-04-24
自己写小工具时,技术选型应该先想清楚什么 内部小工具常常从几行脚本开始,却很快接上上传、改库、调接口和批量处理这些真实副作用。文章提醒先判断一次性还是长期使用,再决定脚本语言、运行环境、依赖规模、dry-run、验证方式、失败退出和回滚边界,把“能跑”提升到“可控”,避免临时脚本变成长期隐患。 2026-04-10