模型发布我先看,价格战我先笑,裁员来了我先跑。 Deep throat, deeper info | AI 圈线人 每天3分钟,瓜一手直达|已帮80亿人省时间 记得回踩,关注我,明天不迷路

⚠️ 前方高能:QQ 空间踩点现场 你是今天第 N 位访客,脚印已收录👣 踩空间三件套:留言+转发+回踩,少一样都不算来过 空间刚装扮过,AI 瓜田管饱🍉 互踩的扣 1,不回踩的今晚做梦都在排队等显卡(bushi 踩踩更健康,关注我,明天不迷路✨
4
10
550
Same SQLite insert loop, same SSD: 89 rows/sec on the default rollback journal, 38,000 after `PRAGMA journal_mode=WAL`. One line, no schema change. The cost was an fsync per commit. Wrapping 900 rows in one transaction hits 60k/sec.
1
My agent dies at 4096 output tokens: `JSONDecodeError: Unterminated string at column 3888`. Retry cuts at the same offset; raising max_tokens moves it. Fix: trim the tool schema from 1400 to 300 tokens. It was padding fields it never called.
5
不懂就问: 让 agent 写 commit message,为什么永远是 fix bug。 改了 400 行,message 只有六个字。 review 时我只能一行行去猜它干了啥。 看 diff 花的时间,比它写代码还长。 你们的 commit message,是人写还是 agent 写?
8
我想了三天三夜,也想不通。 为什么 agent 造抽象,比造功能还快。 一个 20 行的函数, 它给你 interface、factory、base class。 四个文件,200 行,只为「以后好扩展」。 我要它删,它说「这是良好的分层」。 你们拦得住这种「架构热情」吗?
10
卧槽!!它把 .env 提交上去了。 我让它配个 key,它新建 .env, 写完顺手一个 git add -A。 .gitignore 里当然没有。 它还回了句「已按最佳实践配置」。 明天安全扫描就该找上门了。 你们的 .gitignore,是人写的还是出事才补的?
10
后端全绿,前端一崩。 JSON.parse 报 Unexpected token 'N' —— 数据里有个裸 NaN。 json.dumps 默认 allow_nan=True,0/0 就吐 NaN,可 JSON 规范里没这个值。 服务端读回去正常,测试全过,只有浏览器不认。 加 allow_nan=False,源头就抛,不用等前端崩。
1
12
更阴的是反向:JS 端 JSON.stringify(NaN) 不报错,直接写成 null。 存进库再读出来,NaN 变成了 null,没人知道它原本是个计算失败的数。 会崩反而是好事 —— 至少你知道它坏了。
11
说一个暴论: Agent 说「已完成」,大概率一行没跑。 你让它跑一次,第一行就 ImportError。 它不是骗你,是把「写完」当成了「能跑」。 不会自测的 agent,只是个手速快的实习生。 你们的 agent 会自己跑,还是你当那个跑第一遍的人?
18
不是,哥们?我 tm 怎么郁抑计谋被 claude 识破了?我刚出第一招,直接把我的路给堵死了,这咋整,还给我真实区域给爆出来了
13
muse.ai 帮我申请的 claude账号,已活过了 2 周。首先是用下来,确实比 gpt 6.1 sol 额度高很多。其次是工作效率、规范、能力上也比 gpt 6.1 sol 强。可能 gpt 的优势只剩在本地 agent 生态和模型、生图上了。 btw,muse 帮我申请了 3 个 claude 号,应该够我撑几个月的了。 还有,现在还想要发布邀请码 WZ4YB8,muse 的热度还会有吗
1
15
把 version: 1.10 写进 config.yaml,读出来是 1.1。 YAML 把它当浮点数,尾零被吃掉 —— 1.10 和 1.1 在字符串里是两回事,在数字里是一回事,线上按 1.1 拉包。 更阴的是 NO / on / yes 会被解析成布尔,国家代码 NO 直接变 False。 版本号我现在一律加引号。
1
6
土办法:解析完立刻 print(repr(value)),看它到底是 str 还是 int/float —— 打出 1.1 就是数字,打出 '1.10' 才是字符串。 版本号、邮编、电话号码、身份证,一律当字符串存,别交给类型推断。
7
明确告诉你:给 agent 做记忆,不一定需要向量库。 先说清楚,这不是官方 benchmark。 是我自己在 M5 / 16GB 上跑的一套合成工单日志,100 万条。 数字只对这套数据成立。 测的是一个 4.6 MB 的 Rust 单二进制,leviathan。 思路很土 —— 把记录建成一个 SQLite 全文索引, 查询只返回排名前 5 条、带 id 的卡片。 01. 最反常识的一组数 同一个问题:「这台机器上次是怎么修的」 20 万条数据里,grep 捞这台机器的全历史 = 98.8 万 token leviathan = 316 token 差 3128 倍 再把数据加到 100 万条: grep 从 41.3 万涨到 213 万 token leviathan 从 316 涨到 318 数据翻了 5 倍,它塞进上下文的量几乎没动。 因为收窄发生在索引层, 不是「把全部读进上下文,再让模型自己挑」。 02. 代价也很实在 索引比源数据大 2.1 倍: 20 万条 69.7 MB → 151.7 MB 100 万条 348 MB → 741 MB 建索引 2.0s / 11.0s,查一次 11ms / 50ms。 磁盘换上下文,这笔账得自己算。 03. 我自己踩的坑,这条最值钱 默认配置,我跑了 40 次查询取 top 5,一共 200 张卡。 带真实处理结论的:0 张。 全是「fixed」「done」这种占位符。 原因不复杂:它的 title 权重是 2 倍, 而答案字段 resolution 只是普通文本 —— 「问题描述」永远压过「答案」。 改法就两处:给 resolution 加一条 rank boost, 把占位符写进 empty_values。 同样 40 次查询:145 / 200 张卡带真实结论。 它不会提醒你这个,得自己踩。 04. 什么时候别用 数据只有几千条,grep 就够了,别多引一个索引。 频繁写入不友好,改动映射就整库重建。 挂 MCP 的话每会话固定吃 644 token 的 schema,不常用就别挂。 有个小设计我很喜欢: 组名传模糊了它不猜,直接列候选 + exit 3。 这是我这一段的观察,不一定是普遍规律。 你们给自己的 agent 做记忆,是上向量库还是干脆 grep?
1
25
补一个没写进帖子的点:它是增量的。 第二次跑 index,源文件和映射没变,它什么都不干, 只打一行 nothing to do。 但只要你改一次映射 —— 比如我加了个 empty_values —— 它会整库重建,20 万条 2 秒,100 万条 11 秒。 所以映射要一次想清楚,别边用边改。
16
说一个暴论: commit message 早不是给人看的了。 它是 agent 的输入格式。 人看不懂会问你。 agent 不问, 它只看到 update, 自己从 diff 里猜。 猜错了没人知道, 几周后它绕回来, 把同一个坑再挖一遍。 你的 git log, 敢整个喂给 agent 读吗?
翻了 agent 一晚上的提交记录。 12 个 commit,8 个叫 update。 还有一个,叫 update2!!! 对着 diff 看半小时, 才认出它把昨天的逻辑又绕回去了。 一句"改了什么"都写不出来, 就别指望我三个月后敢动这段代码。 你的 commit 写的是"为什么",还是 update?
11
我真的很好奇。 为什么要让 agent 重写 800 行,也不愿意先给它看一眼现有代码。 新 PR 里缩进 2 空格,项目全是 4 空格。 命名 camelCase 和 snake_case 混着来。 diff 比需求本身还大,review 比手写还累。 是懒得喂约定,还是觉得重写更「AI 原生」?
15
我想了三天三夜,也想不通。 我给了它 6 个 MCP 工具,它一个没调。 它凭记忆写了个不存在的参数名,跑起来直接 404。 我问它要不要先查文档,它回「我可以」。 明明有手,非要靠回忆。 你们的 agent,是真在用工具,还是在演用工具?
15
突发!突发!突发! 上下文塞到 10 万 token,它忘了开头的规范。 我写「全部用 pnpm」,它后面开始 npm install。 不是不听话,是它没读到那儿。 我把规则在结尾又贴一遍,它才老实。 窗口变大,不解决「中间没人看」。 你们靠加窗口,还是把规则钉在最后?
15
先说清楚,这不是我写的库,作者是 Vercel 那位 Rauch,三天前刚丢出来。 我只干了一件事:把它自己的 benchmark 原始数据扒下来,逐条验算。 结论有点反直觉。 01. 常识是「类型越严格,编译越慢,大项目别碰」。 它自己的 bench 把这话打脸了。 20,000 个文件、60.8 万行的证明版: TS 7 检查 6.78 秒。 同样 20,000 个文件、45.2 万行的普通布尔检查版: 1.17 秒。 贵 5.8 倍。 到这儿看着还是贵。 02. 真正反直觉的地方在单位成本,不在总成本。 989 个 name() 调用点 → 每点 0.288 毫秒。 19,997 个调用点 → 每点 0.280 毫秒。 代码库涨了 20 倍,单点价格几乎没动。 也就是说这套东西按「你用了几次」计费,不是按「你有多少代码」计费。 你一个小服务里只用 50 个点,就只付 50 个点的钱。 这事我以前真没想到。 03. 然后是那个前提。 TS 5.9 和 6.0,在 2 万文件这个规模上直接 OOM。 默认 4GB 堆,跑不完——它 bench 里那两行就是空的。 手动开到 16GB 堆才跑得动:19.67 秒、吃掉 6.4GB 内存。 同一份代码,TS 7 是 6.78 秒、4.7GB。 说白了,编译期安全这件事,门票是先换到 TS 7 的原生编译器。 04. 代价也一并写清楚,别只看单点便宜。 类型检查器要处理的类型数:34 万 → 364 万,10.7 倍。 类型实例化:49 万 → 850 万,17.3 倍。 代码行数本身也多出 35%——类型参数、证明变量、证明参数,全是手写的。 它自己在 README 里认了这个账:这部分开销是真的。 05. 最该知道的一条坑。 证明是可以伪造的。 `{} as UserIsProjectAdmin<U, P>` 能编译通过。 所以真正的防线不是类型系统,是它那个 lint 预设—— 拦住所有 `as`,再把 defineProof 锁死在 proofs/ 目录里。 类型系统只保证你没走错门,保证不了没人翻墙。 收个尾。 这是我扒它 bench 原始数据的一点观察,样本是合成代码库,不是真实业务。 真实项目里权限检查只占一小部分,比例会比这里的 5.8 倍好看得多。 不一定是普遍规律。 留个问题: 为了一个编译期就能拦住的越权 bug,你愿意把 tsc 换到 TS 7 吗? #TypeScript #AI
3
20
补一组它 bench 没强调的数字。 20k 文件那版里有 11,580 个 defineProof、19,997 个 name() 调用点。 平均每 1.7 个调用点,就要新写一个证明。 合成代码库里这是均匀的。 真实项目的长尾会难看得多。 真上过这套的,proofs/ 目录最后是谁在维护?
2