2026-07-27 14:39:00
美国当地时间2026年7月23日上午,在费城举办的国际数学家大会上,官方正式公布2026年菲尔兹奖完整获奖名单,北大2007级本科校友王虹、邓煜双双上榜。这是自菲尔兹奖设立近九十年以来,首次有中国籍数学家拿下该奖项
然后网上各国各路反思怪就开始表演了,我也未能免俗,对其中有个议题感兴趣,数学强国,是否要允许养十年冷板凳的学科?
首先,这个「十年」冷板凳的说法有点误导的。Fields Medal 奖励给40岁以下的人,正是因为数学这玩意出成果可以当庭验证,不用等诺贝尔奖那种从理论刷新实验和工业需要几十年。
王虹:Kakeya 猜想(三维情形)开始于2024–2025年前后,与 Zahl 的工作集中攻克,2025年发表突破性证明(127页论文)。
邓煜:Boltzmann方程 到 流体方程(Hilbert第六问题方向)一系列,他这个周期的确比较长,但也是2024–2025年前后与合作者完成严格推导相关关键结果。
所以数学这玩意属于发大招的前摇很长。但是结果突破了就立马见效。
然后就回到这个议题,科学技术被「包养」10年,甚至可能不出成果,国家或者结构敢这么干吗?能这么干吗?会不会导致关系户吃空饷?有没有什么问题?
与其对这个问题辩经,不如看看历史上真实的「科研」是怎么进行的。
很多人包括我,对近现代科学史的定义,是从 哥白尼 开始,我觉得要不就从 第谷 开始,我让 A\帮我做了一个调查,有哪些 ≥第谷 档次的重要科学技术发明人
很快AI 给了这样一个表格:
| 年代 | 人物 | 主要贡献 | 与第谷相当/超越的理由 |
|---|---|---|---|
| 1609–1619 | 开普勒 | 行星运动三大定律 | 直接用第谷数据推翻旧宇宙观,理论层面已超越 |
| 1610s–1630s | 伽利略 | 望远镜天文学、力学、科学方法论 | 开创实验科学范式,影响力远超单一学科 |
| 1628 | 威廉·哈维 | 血液循环理论 | 生理学革命的起点 |
| 1687 | 牛顿 | 万有引力、运动定律、微积分 | 公认整个科学史影响力最大者之一 |
| 1735 | 林奈 | 生物分类系统 | 至今仍是生物学基础语言 |
| 1789 | 拉瓦锡 | 质量守恒、现代化学奠基 | 开创一门学科的量化范式 |
| 1798 | 詹纳 | 牛痘疫苗 | 免疫学起点,直接拯救数亿人 |
| 1800 | 伏打 | 电池 | 开启电学实用化时代 |
| 1805–1808 | 道尔顿 | 原子理论 | 化学从定性走向定量的关键 |
| 1831 | 法拉第 | 电磁感应 | 现代电力文明的直接源头 |
| 1859 | 达尔文 | 进化论 | 生物学乃至世界观层面的范式革命 |
| 1865 | 孟德尔 | 遗传学定律 | 生物学隐藏的另一条主线,后来居上 |
| 1861–1873 | 麦克斯韦 | 电磁场理论 | 统一光、电、磁,爱因斯坦称其为牛顿之后最重要 |
| 1857–1895 | 巴斯德 | 细菌学说、疫苗、消毒法 | 医学史上救人最多的人之一 |
| 1869 | 门捷列夫 | 元素周期表 | 化学的"第谷式"系统整理+预言能力 |
| 1895–1898 | 伦琴 / 居里夫妇 | X射线 / 放射性 | 打开原子内部世界的大门 |
| 1905–1915 | 爱因斯坦 | 狭义/广义相对论 | 科学史知名度和范式颠覆力最高者之一 |
| 1900–1927 | 普朗克 / 玻尔 / 海森堡 / 薛定谔 | 量子力学 | 与相对论并列的20世纪物理两大支柱之一 |
| 1928 | 弗莱明 | 青霉素 | 抗生素时代开端,救人数以亿计 |
| 1936–1950 | 图灵 | 计算理论、图灵机 | 整个信息时代的理论奠基人 |
| 1948 | 香农 | 信息论 | 数字时代的底层数学语言 |
| 1953 | 沃森、克里克、富兰克林、威尔金斯 | DNA双螺旋结构 | 分子生物学时代的起点 |
| 1989 | 蒂姆·伯纳斯-李 | 万维网 | 重塑人类信息交流方式 |
| 2012 | 杜德纳 & 沙尔庞捷 | CRISPR基因编辑 | 生命科学的"第谷式"精确操控工具 |
| 2005–2020 | 卡里科 & 魏斯曼 | mRNA疫苗技术 | 新冠疫情中验证的范式级突破 |
| 2020 | Hassabis / Jumper(DeepMind) | AlphaFold蛋白质结构预测 | AI解决半世纪悬而未决的科学难题 |
AI给的几点补充说明:
看过给出的列表,我问了第二个问题,TA们的funding是如何的?
AI说:
这个角度非常犀利——科学史书写往往聚焦"发现了什么",却选择性地忽略"靠什么活下来"。
| 人物 | 资助/职业方式 | 轻松程度 | 备注 |
|---|---|---|---|
| 第谷 | 丹麦国王腓特烈二世赐予汶岛+巨额年俸(据估算占丹麦国库约1%) | 极轻松→后期崩盘 | 换了国王克里斯蒂安四世后失宠,被迫流亡布拉格投靠鲁道夫二世 |
| 开普勒 | 帝国数学家头衔(理论上),实际靠占星糊口+教书 | 很惨 | 皇室长期拖欠薪水,他多年追讨欠款;母亲还被控行巫术,他得亲自辩护 |
| 伽利略 | 帕多瓦大学教职→美第奇宫廷数学家 | 中等偏好 | 靠把木星卫星命名为"美第奇星"换取赞助,堪称科学史第一代"公关高手";后期被宗教裁判所软禁致死 |
| 哈维 | 詹姆士一世/查理一世的御医 | 轻松 | 医生本业收入稳定,王室背书加持 |
| 牛顿 | 剑桥卢卡斯教授→皇家造币厂厂长 | 越老越轻松 | 造币厂是肥缺,晚年相当富有,还当上皇家学会主席 |
| 林奈 | 乌普萨拉大学教授 | 中等偏好 | 平民出身,靠学术晋升,晚年封爵、相对富裕 |
| 拉瓦锡 | 私人身份是"包税官"(Ferme Générale) | 极轻松→被砍头 | 用包税收入自建豪华实验室;大革命时因"包税官"身份被送上断头台 |
| 詹纳 | 乡村医生+英国议会拨款(约1万→2万英镑) | 中等 | 国家事后买单,但过程有争议 |
| 道尔顿 | 贵格会教师+朋友募集年金+政府公民名单养老金 | 清苦但稳定 | 生活极简朴,靠圈子互助 |
| 法拉第 | 皇家研究所助理起家(戴维的技术员)→终身研究员+维多利亚女王赐宅 | 逆袭典范 | 铁匠之子、书籍装订学徒出身,靠机构体系一路托底 |
| 达尔文 | 家族财富(韦奇伍德陶瓷+医生世家) | 完全无忧 | 终身未任职,自费出海、自费研究,名单里最"躺平"的人 |
| 孟德尔 | 布尔诺修道院供养,后升任院长 | 轻松但默默无闻 | 教会包养换来的是35年无人问津,死后才被重新发现 |
| 麦克斯韦 | 苏格兰地产家族+卡文迪许讲席教授(德文郡公爵捐资) | 轻松 | 本身有庄园收入,教职是锦上添花 |
| 巴斯德 | 法国国家教职→巴斯德研究所(政府+国际公众捐款) | 成功的众筹 | 狂犬病疫苗成功后全球捐款蜂拥而至,堪称19世纪版"众筹成功案例" |
| 门捷列夫 | 圣彼得堡大学教授 | 中等 | 学术生涯稳定,但因政治原因被拒于俄国科学院大门外 |
| 伦琴 | 德国大学教职体系+诺贝尔奖(首届物理奖) | 轻松 | 典型德国教授晋升路线 |
| 居里夫妇 | 索邦大学,早期极度贫困(棚屋实验室) | 早期惨,后期爆红 | 美国妇女发起"镭募捐运动"送她一克镭,靠国际名气才翻身 |
| 爱因斯坦 | 1905年是伯利专利局小职员 | 早期惨 | "奇迹年"论文是业余时间写的;成名后才拿到苏黎世、柏林教职 |
| 普朗克/玻尔/海森堡/薛定谔 | 各国大学教职;玻尔研究所由嘉士伯啤酒基金会资助 | 普遍轻松 | 玻尔研究所靠卖啤酒的钱养量子力学,是个有趣的冷知识 |
| 弗莱明 | 圣玛丽医院教职,发现青霉素后长期被冷落 | 发现容易,落地惨 | 真正把青霉素变成药的是弗洛里和钱恩,靠美国战时政府+洛克菲勒基金会砸钱才成 |
| 图灵 | 剑桥研究员→英国政府战时机密资助(布莱切利园) | 战时极轻松→战后被国家毁掉 | 因同性恋被定罪、化学阉割,44岁去世,是名单里结局最悲惨的 |
| 香农 | 贝尔实验室 | 轻松 | 工业界顶级研发机构,待遇优渥 |
| 沃森/克里克/富兰克林/威尔金斯 | 英国医学研究理事会(MRC)拨款 | 中等偏好 | 已进入现代"政府科研拨款"体系 |
| 伯纳斯-李 | CERN雇员 | 轻松 | 万维网是"副业",欧洲多国联合资助的大型实验室养活了他 |
| 杜德纳&沙尔庞捷 | 大学教职+NIH/霍华德休斯医学研究所巨额资助+后期创业融资 | 轻松 | 现代"学术拨款+风投"双轨制的受益者 |
| 卡里科&魏斯曼 | 宾大长期拒绝其mRNA研究拨款,被降级 | 名单里最惨的现代案例 | 卡里科多年申请不到经费,一度濒临放弃,直到转投BioNTech(企业资金)才翻身,新冠疫苗验证了她 |
| Hassabis/Jumper(DeepMind) | 风投起家→2014年被谷歌以约5亿美元收购 | 极轻松 | 大厂算力+资本,现代AI研究的资助模式 |
AI发现几个有意思的规律:
然后我问了第三个问题:按照列表加入一个 资方 出发点 视角。本来是想拿这笔钱或者这个项目目的是干嘛的?
AI回答:
这个视角非常关键——你其实点出了科学史书写的一个系统性偏差:我们只看到"赌赢了"的案例,资方当初的真实动机往往和最终成果风马牛不相及,而"陪跑"的绝大多数投入早就被历史遗忘了。
| 人物 | 资方 | 资方真实目的("这笔钱本来是要干嘛") | 最终成果是否"跑题" |
|---|---|---|---|
| 第谷 | 丹麦国王腓特烈二世 | 宫廷占星(为国王择日、预测战争吉凶)+国家门面工程(丹麦要在欧洲学术圈刷存在感) | 完全跑题——精确观测只是占星的"副业副产品" |
| 开普勒 | 神圣罗马帝国皇帝鲁道夫二世 | 帝国数学家的本职是占星预测+编历法表(《鲁道夫星历表》,给贵族用) | 跑题——行星定律是他"偷偷"塞进占星工作里的私货 |
| 伽利略 | 美第奇家族 | 家族宣传公关(把木星卫星命名为"美第奇星")+帕多瓦大学教军事工程/弹道计算 | 半跑题——日心说支持是他自己夹带的,资方要的是名声和实用军事技术 |
| 哈维 | 詹姆士一世/查理一世 | 单纯要个好御医看病 | 跑题——血液循环论纯属他自己的业余研究 |
| 牛顿 | 剑桥卢卡斯讲席 / 英国皇家造币厂 | 教数学 / 打击伪币、稳定英镑币值(国家财政问题) | 讲席教职算对口;造币厂完全跑题,和万有引力毫无关系 |
| 林奈 | 瑞典王室+乌普萨拉大学 | 找可替代进口的本土经济作物(茶、香料"国产化"),外加药用植物鉴定 | 半跑题——分类系统是这个经济任务的副产品,规模远超预期 |
| 拉瓦锡 | 包税官身份(私人生意) | 纯粹收税赚钱,跟化学毫无关系 | 完全跑题——化学是他用私人财富养的"业余爱好" |
| 詹纳 | 英国议会 | 例外!这是事后追认型——先证明疫苗有效,议会才拨款奖励 | 不跑题,但属于"结果已出再下注" |
| 道尔顿 | 贵格会社区互助 | 培养教师、维持社区教育 | 跑题——原子论是他个人兴趣的副产品 |
| 法拉第 | 皇家研究所 | 面向伦敦上流社会的科普讲座+社交场所(机构靠贵族会员费运营) | 半跑题——电磁感应是"讲课之余"研究出来的 |
| 达尔文 | 家族财富 / 英国海军"小猎犬号" | 家族财富无目的;海军航行目的是海岸测绘+殖民地军事勘察 | 完全跑题——进化论是搭军舰便车的博物学家副产品 |
| 孟德尔 | 修道院 | 培养神职人员+可能想改良豌豆等园艺品种(自给自足) | 完全跑题——教会根本不知道自己资助了现代遗传学,而且35年无人理睬 |
| 麦克斯韦 | 卡文迪许实验室(德文郡公爵) | 剑桥要提升实验物理声誉,跟牛津竞争的"大学军备竞赛" | 基本对口,但电磁波预言超出预期 |
| 巴斯德 | 法国政府+酒商/蚕丝业主 | 具体产业救火:葡萄酒变酸、蚕病摧毁法国丝绸产业 | 半跑题——细菌学说是解决产业危机时提炼出的理论 |
| 门捷列夫 | 大学教职+石油产业顾问(巴库油田) | 教学、写教科书+解决俄国石油裂解等实际工业问题 | 半跑题——周期表是他"写教材"时整理出来的副产品 |
| 伦琴 | 大学常规科研经费 | 常规阴极射线管实验,毫无特定目标 | 纯意外——著名的实验室"事故"发现 |
| 居里夫妇 | 几乎无资助(索邦借的破棚屋) | 无目的探索沥青铀矿残渣之谜 | 不算跑题,但资方几乎不存在 |
| 爱因斯坦 | 伯尔尼专利局 | 审查专利申请,养家糊口 | 完全跑题——相对论是上班"摸鱼"写的 |
| 玻尔研究所 | 嘉士伯啤酒基金会 | 丹麦国家科学荣誉+啤酒公司企业形象/慈善 | 半对口——资方押的是"国家声望",不是量子力学本身 |
| 弗莱明 | 圣玛丽医院 | 临床细菌学教学诊断,日常工作 | 纯意外——著名的"没洗培养皿"事故 |
| 青霉素产业化 | 二战盟军政府+洛克菲勒基金会 | 纯军事需求:救治战场伤员感染 | 对口——这是少数"目的和结果高度一致"的案例 |
| 图灵 | 英国政府/布莱切利园 | 纯军事情报:破解德军Enigma密码 | 半跑题——图灵机/计算机雏形是破译密码的副产品 |
| 香农 | 贝尔实验室(AT&T) | 改善电话线路信号质量、降低长途通话噪声(纯商业工程问题) | 半跑题——信息论是解决电话工程问题时提炼的数学理论 |
| 沃森/克里克/富兰克林 | 英国医学研究理事会(MRC) | 医学相关基础研究方向,但1953年DNA结构的实际应用价值并不明确 | 半对口——某种程度上MRC也是在"赌" |
| 伯纳斯-李 | CERN | 高能物理实验(强子对撞机等)才是CERN的核心任务 | 完全跑题——万维网是他为解决CERN内部文档管理/科学家协作难题做的"内部小工具" |
| 杜德纳&沙尔庞捷 | NIH/HHMI | 纯基础好奇心驱动:研究细菌如何抵抗病毒感染 | 完全跑题——基因编辑工具是意外的应用副产品,申请经费时没人能预见 |
| 卡里科&魏斯曼 | 宾大(早期几乎拒绝)→BioNTech | 最初想做mRNA通用蛋白替代疗法平台,不是疫苗 | 半跑题——疫苗只是后来才发现的应用场景之一 |
| Hassabis/Jumper | 谷歌收购DeepMind | 通用人工智能/游戏AI(AlphaGo系列)才是谷歌的主营目标 | 半跑题——AlphaFold是公司内部"顺手"做的科学项目 |
AI总结的几个扎心的结论:
最后,图穷匕见:
现代科研基金委的"结果导向"评审(要求预设可衡量产出、里程碑、KPI),可能恰恰系统性地筛掉了历史上产生最大价值的那种"跑题式"研究。
我的暴论:
资方为了装逼去包养才是科学研究第一必要条件。🤣 🤣 🤣 🤣 🤣 🤣
科学家得有品味和敢做副业的决心,才有可能搞出来大新闻
穷逼就不要去幻想搞什么科研了。除非要么你能混成网红,要么你需要遇到一个贵人
2026-07-23 18:24:00
对齐前:
┌──────────────┐ ┌──────────────┐
│ 用户请求 │────▶ │ 网关服务 │
│ User Req │ │ Gateway │
└──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 认证服务 │ │ 业务逻辑 │
│ Auth Svc │ │ BizLogic │
└──────────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ 数据存储😆 │
│ Database😂 │
└──────────────┘
对齐后:
┌──────────────┐ ┌──────────────┐
│ 用户请求 │────▶│ 网关服务 │
│ User Req │ │ Gateway │
└──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 认证服务 │ │ 业务逻辑 │
│ Auth Svc │ │ BizLogic │
└──────────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ 数据存储😆 │
│ Database😂 │
└──────────────┘
AI 的解释:
Iosevka 的作者 be5invis 当年做这个字体时明确说过:因为他和很多朋友生活在中国、日本,所以他把这款字体做成严格的 1/2 em 宽,专门用来跟汉字对齐——面向亚洲用户,用这个就能保住完美对齐。也就是说 Iosevka 的西文字形宽度天生就是 0.5em,不需要任何 CSS 补偿或 size-adjust 魔法,配任何满格 1em 的 CJK 字体(Hiragino、PingFang、Source Han Sans 等)都是精确 2:1。而且它的构建系统是声明式的,用 TOML 配置文件驱动,可以精细控制粗细、宽度、每个字形的风格变体。
中英混合是搞定了,最后那个 数据存储 Database 带emoji错位了。
emoji 还有个zwj的问题:
农民 emoji 🧑🌾 其实是"人"+ 零宽连接符(ZWJ)+ "农作物"两个 emoji 码位拼成的
在 wcwidth 计算,会分别得到宽度 2、0、2,加起来变成 4 列宽导致错位
目前暂时无解
2026-07-18 19:32:00
跟AI发闹骚学到的
https://github.com/isaacs/github/issues/330
Allowing CORS for the endpoint you mentioned would mean that you could complete this step of the Web flow from a browser:
And this would mean that you're hard-coding your client_id and client_secret into a webpage (or JS file loaded into that webpage) for everyone to see. This would indeed cause security concerns since the client_secret should be kept secret. If someone got hold of your client_id and client_secret, they could impersonate you application, and for example -- wipe all the tokens for that application:
如果允许在浏览器通过 client_id, client_secret 交换得到 access_token,那么实际上你的账号等于公开裸奔,你所有的 github 资产等于公开被人控制。所以必须走一个服务端流程,然后再把 access_token 下发
呃,好像很有道理。
2026-07-12 17:53:00
去年搓了个 gitweets,一个 .html 实现了「微博」,拿git历史当feed流~发推
这个周末看着 coding plan 还剩 20% 要到期,没用完,怎么办呢?想来想去,挖大坑干不完,小修小改,就拿这个 gitweets 继续填坑了
首先是让AI把界面改成模仿微信 朋友圈,啪一下,很快啊,结果让人非常印象深刻,很逼真

现在的AI真厉害。让我去调CSS可能这辈子都搞不出来这个效果了。
后面是我的一些唠叨,不感兴趣的可以关闭页面,或者去上面那个围观一下。
想起来独乐乐不如众乐乐,要不,支持个评论功能?
项目的初衷是 static page,要实现互动肯定得用一些API了。
最能想到的思路,走传统的 github issue 什么的,和这个 gitweets 最大的出发点冲突了:一个 git repo 包含所有数据,随时搬家,不用导出。
而且麻烦的是,post 是绑定到 commit 上的。如果你用一个 JSON 之类的来存评论,势必也会新增一个 commit,这样会污染post时间线。
突然想起来一个古老的东西,git notes,这是连 ChatGPT 和 Claude 都没想到的邪路,不过它们很快确认这个办法甚好,可行。
git notes选型定下里,建立这个数据模型让我纠结了很久。围绕 github 开展流程,让我一度误入歧途
最后想明白了,压根不应该走浏览器这一套。而是只能走后端代劳,用 Fine-Grained PAT 来和 github API 交互
其间还考虑 github 越来越拉垮,想避免 vendor lock-in,直接走git http协议。
首先想到的是 Cloudflare 那个牛逼的 zig 写的 100kb 的 wasm 可以 http 读写任意 git 仓库
git protocol engine is written in pure Zig (no libc), compiled to a ~100KB WASM binary. Support for both v1 and v2 of the git protocol. Support capabilities including ls-refs, shallow clones (deepen, deepen-since, deepen-relative), and incremental fetch with have/want negotiation.
仔细读了下文档,让AI一起调研,发现tmd这玩意仅限 Worker 内部使用,只能读写 CF 内部的 假 git,不支持读写外部任意 git http。
用 isomorphic-git 坑也挺多 。还是先走 github API 吧
这个 git notes 要走REST API 有查询放大 3+N 的问题,怕掉用次数爆掉,于是让AI走 GraphQL。我自己手动是搓不动 GraphQL,太难了。AI虽然是 flash 普通智商版本,也分分钟拼接好。一次成功。真猛 😭
于是 Vibe 出来了。
搓完了想起一个问题,如果有人刷评论怎么办?于是让AI搓了个 /.admin 管理页面。也是秒写好。太方便了。
明显欠缺的功能搓完之后,感觉又进入了贤者时间,索然无味了。
2026-07-11 11:53:00
AI在 coding 的时候我其实在玩别的。希望agent 每次干完活,macOS 弹个通知。
手上是 MimoCode,就让它自己写个。啪,很快写好了。结果还是折腾了好一会儿, 记录几个有意思的小坑。
首先是如果当前CLI是活动的,就不弹通知。
需要判断活动窗口。最初用 osascript
osascript -e 'tell application "System Events" to get name of first application process whose frontmost is true'
直接报错 Not authorized to send Apple events to System Events (-1743)。
于是换 lsappinfo,走 macOS Launch Services API,不需要任何额外授权:
lsappinfo info -only name $(lsappinfo front)
# → "LSDisplayName"="Terminal"
还能拿 PID:lsappinfo info -only pid $(lsappinfo front)。
然后如何判定活动窗口是不是 CLI?
写死个["iTerm2", "Terminal", "Alacritty", "kitty", ...] 列表
太笨了。当前hook是子进程,直接遍历 parent 进程树啊!找到终端模拟器的 PID,再跟前台 app 的 PID 比对。
但是在 tmux 里爬出来是这样的:
node → zsh → tmux → launchd(1) → init(0)
Terminal.app 的 PID 根本不在树上。因为 tmux server 启动后被 reparent 到了 launchd,跟 Terminal.app 断开了父子关系。
又想到一个办法,直接查 $TMUX_PANE 是否是当前 active pane:
tmux list-panes -F '#{pane_id} #{pane_active}' | awk '$2==1 {print $1}'
如果 $TMUX_PANE == active pane ID,说明用户就在看这个窗口,不需要通知。完全不需要知道前台是哪个 app。
非 tmux 场景才用进程树 + lsappinfo 的 PID 比对。
然后就是挑选具体哪些事件要弹通知了。
权限通知:permission.ask,但文档说 "not yet wired"。试了一下,确实没触发。尴尬。雷军!!!金凡!!!
最后的方案:注册 permission.ask 占位,如果哪天接入了就能精确捕获。目前靠 tool.execute.before 抢占并推断。工具跑完了说明权限已过或不需要。
还有个情况就是 Subagent 完成也给我哐哐弹。最初硬编码了 SUBAGENT_TYPES = ["general", "explore"];后来发现 actor.preStop / actor.postStop 的 input 里有 mode: "subagent" | "peer"。于是就做了个计数器
最后通知到时候带上 Session 名字,折腾了一圈 直接 sqlite3 ~/.local/share/mimocode/mimocode.db "SELECT title FROM session WHERE id = '$SESSION_ID'"
完整代码放在
https://github.com/est/snippets/blob/master/mimocode-hooks/notify-done.ts
复制到 ~/.config/mimocode/hooks/ 就可以试试效果
2026-07-09 23:01:00
自从自个儿琢磨出 locate cost 之后便开始关注这方面问题。最近看到两篇喷 harness 问题的
第一个是 Can Bölük https://blog.can.ac/2026/02/12/the-harness-problem/ 今年2月的时候发现:
Codex uses
apply_patch: It takes a string as input, which is essentially an OpenAI-flavored diff, and instead of relying on a structured schema, the harness just expects this blob to follow a strict set of rules
Claude Code (and most others) usestr_replace: find the exact old text, swap in the new text. Very simple to think about. But the model must reproduce every character perfectly, including whitespace and indentation.
Cursor trained a separate neural network: a fine-tuned 70B model whose entire job is to take a draft edit and merge it into the file correctly
如果你在 Codex 用别的模型
Grok 4’s patch failure rate in my benchmark was 50.7%, GLM-4.7’s was 46.2%.
Aider’s own benchmarks show that format choice alone swung GPT-4 Turbo from 26% to 59%, but GPT-3.5 scored only 19% with the same format because it couldn’t reliably produce valid diffs.
The Diff-XYZ benchmark from JetBrains confirmed it systematically: no single edit format dominates across models and use cases. EDIT-Bench found that only one model achieves over 60% pass@1 on realistic editing tasks.
懒得看原文的我直接说结论:大家都在争论哪个模型编程更强,但很多模型都知道要改什么,失败其实发生在具体改哪里。
他做了个实验,同样的 16 个模型,只换编辑这个 tool call,改成他自己发明的 hashline,给每行内容打一个短哈希做锚点,Grok Code Fast 1 从 6.7% 直接跳到 68.3%。
Can Bölük 这个老哥非常生猛,2021年有篇博客讲他在Intel CPU 发现一个指令可以序列化/反序列化打印所有 x86 指令集。微码立功了!
他这个 hashline 也很巧思,我也是最近才琢磨明白。你仔细想就会有个疑问,为啥不直接用 行号?
有个相关的问题一直困扰我。我经常让 Gemini 去搜我博客,我博客网址都是类似 stderr-XX 其中 XX 是数字,然后 Gemini 经常把别的文章内容给我总结批判一番。我得到的结论是 LLM 不识数。
后来在学 RAG embedding vs BM25 的时候突然顿悟了,tmd 这个基于 基于语义空间的相似度匹配 有利有弊。好处是比如你检索 汽车,它能联想到 车辆,无需 FTS 那里你自己要维护一套分词近义词表。坏处是行号 223 233 它觉得很「近似」直接搞混 😂
扯远了。
然后是前几天 Armin Ronacher 的 https://lucumr.pocoo.org/2026/7/4/better-models-worse-tools/
这老哥是 Flask/Werkzeug/Jinja2作者,现在主要在撸 Pi 这个agent(值得一题的是上面的老哥在撸 oh-my-pi 这个 fork)
他发现 Opus 4.8 和 Sonnet 5 在非 Claude Code 的 harness(比如他自己的 Pi 项目)里调用嵌套 edits[] 数组时会莫名其妙地塞进一堆乱七八糟的 <antml:function_calls> 这种内部控制字符。老的模型反而没这个毛病。他推测是 A\ 家训新模型强耦合了 Claude Code。逆向发现 Claude Code 客户端对格式错误极其宽容,有一整套别名映射、Unicode 修复、静默过滤多余字段的逻辑。结果就是模型在RL中适应了格式差不多就行,反正harness 会兜底。
看完这两篇我觉得印证了我前面 locate cost 一问的所有猜想。AI 指出,真正可能的机制更朴素:
RL 训练信号里,整段重写 往往比 精确定位再小改 更容易拿到奖励。重写不会因为空白符不匹配而报错。这跟第二篇里 Armin 讲的模型在宽容的 harness 里学会了偷懒,是同一个因果链条,不需要引入纹理/结构的形而上区分也能解释。
也就是说,LLM上课答题只给答案分,不给过程分,导致背题偷懒 🤣 这个方向在研究界是有名字的,叫 process supervision / process reward model,过程奖励模型。OpenAI 那篇《Let's Verify Step by Step》基本就是在数学推理场景做这件事。
但这条路有两个真实的代价,其一是 过程标注比结果标注贵得多;其二 如果训练时的 harness 比部署时的 harness 更宽容,学出来的好过程标准本身就是错的。
所以又回到一个老生常谈的话题。各大模型厂家都在推出自己的 CLI。观察「过程」比最终结果更值钱!
我让AI去 fact check了下。果然
数据使用文档里明确写着两条完全独立的通道:
DISABLE_TELEMETRY 一条完全独立的遥测通道,文档原话是:Claude Code 会从用户的机器连接到 Anthropic,记录延迟、可靠性、使用模式这类运营指标。这类日志不包含任何代码或文件路径。关掉这条通道要单独操作,跟训练开关是两个开关、两套机制、两份文档。 设置页面里直接摆着两个并列开关
也就是说厂商自己都承认这是两套独立治理的东西——只是大多数用户可能只会想起关第一个开关。
官方文档列出了它 OTel 遥测会上报的事件类型,其中包括
codex.tool_decision 工具调用是被批准还是拒绝,以及这个决定来自配置还是用户codex.tool_result 耗时、是否成功、外加一段输出片段codex.user_prompt 默认只记录长度、内容会被打码听起来很克制,但 工具决策 + 输出片段 + 时长 这几项拼起来 就是前面说那种 过程信号,不是代码本身。精确刻画了模型在 harness 里怎么试错、被拒了多少次、跑了多久。这条 OTel 通道是靠单独的 config.toml 开关控制的,跟 ChatGPT 账号层面的训练数据开关是两件事。
方向比较模糊,它把训练相关的退出开关本身命名为 Enable Telemetry,把两件事的名字焊在一起。
Google Groups 的讨论帖里用户在问这个开关到底关不关得掉训练,官方也没给出干脆的回答。
所以接下去的推论就很简单。利用公开语料能训练出 2025年级别的sota llm。但是往后就看各家谁能拿到更多的轨迹数据了。无论靠CLI / app 装机量,还是买数据,偷数据,各显神通。其中装机量/DAU几乎正比于以后的智力天花板。所谓的 trillion tokens models 估计就是从各种日志里来的(而不是人类语料)
继续推演下去,有意思的一点是,可预见的将来,AI 的智力增长几乎全来自于coding
因为 coding 有个编译器师爷能把关,保证产出可验证!
别的什么 具身 世界模型,我觉得难了 😆
还有一个考虑的,装机量看 2C,各行业应用 2B 也很重要。比如design类的。这种“轨迹” 如何收集改进也很讲究。
但是design想了下又挺主观的。不过可以降低一些看上去很笨的地方。
甚至如果从公平的角度来说,AI厂家,除了按成本收费之外,还应该给高价值数据返钱才对。不是之前有报道说Anthropic 和 OpenAI 都签了七位数金额的 RL 环境和人类专家数据合同,预计投入还要再涨 3-5 倍。就是拿来训练“过程”的吧。
今晚娃又沉迷pad,我给他pad锁了 😆
为啥说起这个呢,我一直让娃坚持写「语音日记」
但是孩子长大了,他写得越来越不耐烦了,而且我苦恼作文没有批改,所以这个日记习惯实际上成了低水平重复。
其实把复制粘贴到deepseek,提示词 “以XX年级的标准点评改进下这篇” 就能搞定,奈何我家娃太懒。
所以我一直想给娃弄一个 作文训练 app。本来想不就是AI一问一答批改么。
但是想到 locate cost 突然觉得有点难。。。。。甚至比AI coding 还难。。
代码为什么定位相对容易。 哪怕 str_replace 因为空白符不匹配而报错,它要定位的目标本身是离散、有边界的——一行代码、一个函数,有语法(AST)天然把文档切成可寻址的单元。
或者 hashline,行号就每句话一个稳定锚点,把找位置从模糊的文本匹配变成精确的 ID 查找。这招完全可以照搬到「改病句」场景。做个 diff 也容易
但写作的问题,往往根本不是一个可以圈起来的line或者span,而是句子之间关系的性质。 “这段论证缺乏内在逻辑”,“这句话和上一句衔接生硬”,“全文的语气从第二段开始飘了”——这些反馈即便你精确指出“第3段第2句”,真正需要改的可能是第1句、连接词,或者整段重组。
代码的 bug 通常局限在一个可编辑单元里,作文的"bug"经常是分布式的、关系性的。定位到具体文字之后,改哪、怎么改这一步反而更模糊,比代码多绕一层
AI说,写作其实分两个层次
怎么切入呢?
后者也有一些实践,比如借鉴 AP 阅卷没,用锚定范文(anchor papers)做少样本参照。而不是让模型凭空判断“这篇好不好”
也可以做高亮 + 提问式 而非直接改。比如第 2 段第 3 句话里,“非常开心”这个词能不能换一个更具体的?比如描述一下你当时的表情或动作?
甚至可以 示例驱动:AI 给出 改前 / 改后 小对比,只改 1-2 处;然后 多轮对话,孩子自己决定要改哪里,AI 只辅助,而不是 AI 主导大改。
要么就局部训练,针对常见作文类型(记事、写景、议论),开头、过渡、结尾分别训练
这样看来,写作文直接给娃一张无限大的白纸并不好。参考 Notion 的 Block 概念,强迫孩子在输入时就把“骨架”和“血肉”分开。比如,第一步只允许输入 3 个论点(形式);第二步再针对每个论点去填充素材(质料)。通过产品机制,人为制造出“伪 AST(语法树)”。
或者阻断直接生成,只给“反向约束”。不输出完整的句子让孩子抄,扮演“刁钻的苏格拉底”。比如,当孩子写“今天我很开心”,AI 的反馈不应该是“你可以改成:今天我心花怒放”,而应该是抛出环境约束(Harness):“你当时手里拿了什么东西?你的心跳有多快?”——逼迫孩子自己去完成“从潜能到现实”的推导。
当然,做好 diff 和版本控制是基础。记录孩子打磨一句话的过程。让孩子直观看到词汇的微调是如何让语义的边界越来越清晰的。
哎,这么一拆解又有点思路了,但比预计的感觉麻烦得多啊。不过语文教育有大问题啊。明明是工程上可以细化训练的(虽然很难,过去没AI需要大量人工精力)。上课根本不讲。全靠孩子天生悟性。以上种种,今年4月才喷过一篇《语文学习和考试》
作文从小学一上来就300 字 500字,其实真应该「刻意练习」的是语言 primitive。什么 铺垫、呼应、留白、对比、节奏、悬念、感官、动作、心理、对话等等,都上手了,然后再各种变化,组合。
学编程也是从少量 keywords ,赋值语句,条件,循环这样一步一步来的嘛。
过去没太好的语文教学条件,归根结底因为一个班上50个娃只有一个语文老师。
但是现在有LLM了。