JSON 输出契约要先于模型自由发挥
JSON 输出契约 这件事在 2023 年开始越来越频繁地进入真实项目,但很多团队一开始只看到表面收益,没有先把边界收住。只要 模型偶尔少一个字段、换一个键名,就能把整条业务链路打断,问题就会很快从“一个小体验瑕疵”变成系统性的维护成本。
JSON 输出契约 这件事在 2023 年开始越来越频繁地进入真实项目,但很多团队一开始只看到表面收益,没有先把边界收住。只要 模型偶尔少一个字段、换一个键名,就能把整条业务链路打断,问题就会很快从“一个小体验瑕疵”变成系统性的维护成本。
Prompt 版本管理 这件事在 2023 年开始越来越频繁地进入真实项目,但很多团队一开始只看到表面收益,没有先把边界收住。只要 线上模板调整没有记录,效果回退时根本不知道哪次修改导致结果变化,问题就会很快从“一个小体验瑕疵”变成系统性的维护成本。
token 预算控制 这件事在 2023 年开始越来越频繁地进入真实项目,但很多团队一开始只看到表面收益,没有先把边界收住。只要 一次请求看起来不贵,但并发一上来以后成本会被放大,问题就会很快从“一个小体验瑕疵”变成系统性的维护成本。
Docker 构建 Node.js 项目时,最直观的痛点往往是“为什么又重新装了一遍依赖”。项目越大、CI 越频繁,这个问题就越明显。很多时候不是 Docker 慢,而是依赖缓存命中条件没有设计好。
很多组件库项目在开发过程中,类型体验一直靠本地 IDE 兜底,所以团队很容易把 d.ts 打包和 types 入口这件事拖到最后处理。真正发布出去之后才发现,别人虽然能装上包,却拿不到完整类型提示,体验一下就掉下来了。
Vue3 推出 composable 之后,很多原本散落在组件里的逻辑终于有了更自然的抽离方式。但用得久了我越来越觉得,composable 最大的风险不是不好复用,而是“什么都想塞进去”,最后边界比 mixin 时代还模糊。
TypeScript 很容易给人一种安全感,好像只要类型定义得足够完整,系统就自然稳定了。但只要项目和接口、配置文件、第三方返回值发生交互,很多问题其实都发生在运行时,而不是编辑器里。
monorepo 做到一段时间后,最容易悄悄失控的东西不是业务代码,而是配置。每个包都带一份 .eslintrc、每个应用都抄一个 tsconfig,开始时觉得快,过几个月就会发现规则微妙分叉,谁也说不清“仓库到底应该按哪套标准走”。
当仓库开始拆成多个应用和共享包之后,很多命令如果还按单仓库思路跑,就会越来越笨重。一次改了前端页面,却要把整个 monorepo 的所有包都 lint、test、build 一遍,这种开销很快就会把研发节奏拖慢。
很多团队第一次把项目迁进 pnpm workspace,最先感受到的是安装速度和依赖管理变舒服了。但真正决定 monorepo 能不能长期跑下去的,不是工具本身,而是包边界到底收得稳不稳。