cixiangtao / writing / archive1–15 of 15 files
ISSUE 023我把一个假 Token 发给 Codex,然后在本地会话里找到了它事情是这样的。 我让 Codex 输出了一串假的 GitHub Token。当然是假的,不能登录任何账户,也伤害不了谁。我只是想看看,一段长得很像密钥的文字,在一次普通的 Agent 对话里到底会经过什么地方。8 minOpenISSUE 018框架的复杂度应该由谁承担:从 Vue 3、React、Svelte 与 SolidJS 谈起我第一次看到 AngularJS 的 ng-model 时,是真的觉得网页活过来了。 以前写页面,数据和 DOM 像住在两栋楼里,改完这边还得跑去通知那边。双向绑定一出来,输入框里的字和代码里的状态突然有了联系。那种感觉很像框架替我接走了一件麻烦事。10 minOpenISSUE 017我维护开源小项目时,如何判断一个功能真的完成了个人开源项目最容易停在一个很舒服的位置。 代码能跑,测试是绿的,README 也大概写了。没有产品经理追排期,没有测试团队问验收,也没有发布工程师盯着制品。作者既负责实现,也有权宣布「差不多完成了」。5 minOpenISSUE 016从桌面窗口到移动文档流:个人博客如何保留风格又不牺牲可读性我的个人网站看起来有点像一台旧电脑。 紫蓝点阵背景、重叠窗口、标题栏、桌面图标和硬边阴影。文章、项目和关于我不是三张规整卡片,而像同时摊在桌面上的几个窗口。4 minOpenISSUE 015Agent Skill 也需要测试:怎样避免“文档写对了,行为却没变”Agent Skill 最会骗人的地方,是它长得太像文档了。 一份 Markdown,有 frontmatter、有触发说明、有步骤和示例。改完以后格式检查通过,引用路径也都存在,看上去和改好了一段配置没什么区别。4 minOpenISSUE 014为 Codex 做一款原生菜单栏工具,我遇到的工程问题我一开始只是想在 macOS 菜单栏里放几个数字。 Codex 的 5 小时和 7 天额度还剩多少,什么时候重置,最近每天大概用了多少。这样就不用工作到一半再打开客户端页面,或者等到请求被限制以后才想起来看。5 minOpenISSUE 013一次设计回滚:规范正确,为什么仍然可能不好看我把一套设计做完了,然后把它完整回滚了。 不是因为页面坏了。配色统一,结构完整,移动端没有溢出,该检查的规范也基本都能通过。它只是出现在 GitHub Profile README 上以后,让我怎么看都觉得不对。4 minOpenISSUE 012GitHub Issues 当博客后台,真正好用吗?这个博客的第一篇文章,写的是它怎样工作。 给 GitHub Issue 加上 blog 标签,Astro 在构建阶段读取正文,再把静态页面发布出去。链路跑通以后,我很快发现,「能不能拿 Issues 做博客」其实是最不重要的问题。4 minOpenISSUE 011Source-first 组件库:为什么我不想再造一个 npm 黑盒组件库做到后面,很容易长出一种奇怪的 API。 一个组件有几十个 props,颜色能换,圆角能换,图标能换,某一块 DOM 也能通过插槽替换。维护者努力给每种需求留入口,使用者却还是会在某个瞬间发现,自己真正想改的是组件的骨架。5 minOpenISSUE 010构建成功不等于发布成功:我如何验证 npm、Pages、DMG 和 ZIP绿色的构建日志很会让人放松警惕。 测试通过,打包结束,命令最后没有红字。做到这里,顺手写一句「已经发布」似乎很自然。我维护 npm 包、GitHub Pages 和 macOS 应用以后,却越来越不敢这么说。5 minOpenISSUE 009网页宠物不只是动画:Runtime、状态机与适配层怎么拆让一张精灵图动起来并不难。 定时修改 background-position,角色就会抬脚、落脚,看起来像在屏幕上走路。做到这一步,很容易觉得网页宠物的核心问题已经解决了。4 minOpenISSUE 008从一行 locator() 开始:我如何设计一个跨框架 Vite 插件我很喜欢 LocatorJS 的那个瞬间。 在页面上按住 Option 或 Alt,点一下元素,编辑器直接跳到对应源码。没有先开 DevTools,再查组件名,再全局搜索。眼睛看到哪里,代码就打开到哪里。4 minOpenISSUE 007一个 URL 拼接工具,究竟能有多少边界条件?URL 拼接函数最容易写出来的 bug,大概长这样。 https://example.com4 minOpenISSUE 006我为什么把 show、hide 和 destroy 设计成三件事弹窗关掉以后,里面写了一半的表单要不要留下? 这个问题听起来像产品细节,落到代码里却经常只剩一个布尔值。4 minOpenISSUE 001你好,世界:这个博客如何工作这篇文章现在就躺在一个 GitHub Issue 里。 它不是从 CMS 同步过来的,也没有先写进某个数据库。标题是 Issue 标题,正文是 Markdown,blog 标签把它变成一篇文章。保存以后,剩下的事交给构建流程。3 minOpen