MoreRSS

site iconEST修改

EST = Extrospect, Sein & Tao ,后端工程师。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

EST的 RSS 预览

唯物主义「天命」论

2026-07-02 16:07:00

看到一篇雄文《明末士大夫为什么毫无气节纷纷变节投降满清?》大受启发,想看原文的可以点开链接,下面是精简和摘录:

因为程朱理学在理论存面存在漏洞,被鞑子无意之间利用了,事实上大部分的鞑子统治者在这方面,也都是知其然而不知所以然。
不否认明末也有很多了不起的仁人志士,但如果你对中国历史有些疑惑,觉得似乎宋朝之后中国就有点不一样了,那恭喜你,你的直觉是对的。由于元代留下的遗毒过甚,明朝没能拨乱反正,元明清三代,所有的皇帝和“儒家士大夫”,都是失礼而不自知之人。元明清三代的所谓“礼法”,放在先秦两汉的大学者们面前,诸子百家不管哪家,都一眼就能看出来全是假礼。如果墨子这个儒家最大的反对者看见了,估计更是嘲笑孔子能笑的棺材板都压不住。这些“假礼”,就是元明清三代那些僵化的等级秩序、规规矩矩。出于汉人的直觉,厌恶这些是再正常不过了。
一、建用皇极
宋以前儒学,与宋明理学不是同一种思想。先秦至汉唐儒学的最高原则是天命与大中之道,而不是君主本身。朱熹重新解释《尚书·洪范》"皇极",从九畴排第五提高到最高优先级, 把它解释为 君主是天下的最高标准,天下围绕君主建立秩序。,从而改变了儒家的政治哲学。
二 · 定于一尊
元朝恢复科举时规定:四书、五经必须按照朱熹注释考试,使其成为与功名利禄直接挂钩的唯一标准。于是理学不再只是一个前朝有争议的一个"逆党"学说,而成为整个帝国唯一的意识形态。明清完全继承了这一制度。
三、诸夏之亡
《论语》中孔子其实始终强调,华夏共同体高于个人君臣关系。例如孔子称赞管仲,就是因为即使“不忠”,改事新君,只要能够保卫华夏,也仍然值得肯定。但程朱理学更加重视君臣名分、上下秩序、皇权连续性,于是出现一种新的逻辑:即使皇帝是异族,也不能没有皇帝。1908年孔令贻把德国皇帝威廉二世肖像迎进了孔府
四、天命之礼
孔子的礼,本质上来源于 天命。所以:礼约束君主,君主不能创造礼。而理学实践中却逐渐变成皇帝成为礼法的最终解释者。于是礼不再约束权力,而成为权力工具。
五、凡心之仁
基督教的本质是爱与诫二元一体的罪文化,那么发源自中国的东亚文化,本质就是仁与礼二元一体的耻文化。
基督教中所谓的爱,叫做“Agape”。这是一个专有词,它有多重要呢?欧洲所有国家,不管哪种语言,它的拼写方式都是一致的,一字不易。“Agape”的源头是神,它是一种具有普世性的博爱。而“仁”和“Agape”的区别在于,中国的“仁”,其源头是凡人,是“己所不欲勿施于人”,它是一种推己及人的有差等之爱。
华夷之辩是“礼”的边界,“礼”是对“仁”的约束。面对民族危机时,个人、家庭利益、官职利益、君臣秩序都会压倒共同体利益。因此许多人最终选择保身、顺从、投降,而不是抗清。
(注:这里其实用 “异端” 和 “有经人” 对比更加强烈)
六、知行合一
孔子、董仲舒的礼法,理论源头是天帝,实践中确实也按天帝至上来执行。而程朱理学的礼法,理论源头是天理,但是实践中,理学的礼法源头压根不是天理!在以前,经筵都是大儒给皇帝讲课,到了乾隆那,变成皇帝给大儒讲课了。
先秦两汉礼法的源头是神?因为礼法的源头就不能是一个具体的人!礼法是用来栓人的保守性,如果礼法的源头是人,那么栓着你的绳子就牵在那个人手上,你就是那个人的奴才,礼法就成了赤裸裸的等级压迫。
如果天帝无法约束皇权,那么天帝也不能保护皇权。天帝不能保护皇权,皇帝就只能自己保护自己,于是朱元璋废除了丞相制度。所谓明清飞速膨胀的君权,其实和南北朝盛产的疯子皇帝有异曲同工之妙。跟着龙椅遗传的精神病,本质是因为坐在龙椅上的人没有安全感。没有人相信天命,连皇帝本人都不相信自己真正“受命于天”。而对于儒生大臣,后人说张居正是“常务副皇帝”。
七、失礼之国
(作者的一些感想,比较杂,不引述了)

看完之后真过瘾。本来想着今天的键政就到这了。

特别是第二点,最近几年我逐渐从对“科举”的好感,降低了。学生时代总有那么一些“考功名”的亲切感,但是现实世界还是觉得“军功合伙人”更优。

但是有一个更大的疑惑,转念一想不对劲。于是补充一点我自己的观点。

皇帝这个岗位,从秦到唐,都是一把手承包了世俗君权,和神权的双重责任。皇帝在赵政之前实际上是两个岗位,大祭司负责给「帝」传话,王中王称皇负责行政。

宋以后皇帝把道德秩序这一块外包给儒生了,自己关起门做皇家经营了,剩下的全是算计。

说得直白点汉唐的皇帝还勉强要点b脸,遇到难堪的事,还得想办法给手下和民间一点说法。

宋以后就是无情的 打工 - 服从 叙事。

我是真的越来越看不起大怂国。我把内心抱怨说给AI,AI指出

宋代皇帝其实仍然非常受士大夫制约

我反驳:

例如宋代皇帝其实仍然非常受士大夫制约,需要合理分赃才能一起搜刮老百姓。造成有史以来遍地造反运动。

AI当时就不乐意了。把教科书和网上常见吹捧宋朝的资料抬出来了。比如说宋朝其实造反的规模和烈度没那么多

但是我想说,你把大半个中国都丢干净了,西夏 辽金的汉人躺棺材里了,当然北境无人“造反”了。因为别人都被占领了。

秦汉 隋唐造反不就是关中和河北人打架吗?这一毛病从姬发那一辈儿就没停过。天子这一岗位说的直白点就是给大家当调停人,pax sinica 。你宋说白了就一个节度使,偏安江淮一隅,还这么多造反的。呸!

AI 被这个角度刁钻的回答干懵逼了。说你这个框架,衡量皇朝优劣的标准不是"有没有起义",而是 能不能维持整个华夏共同体的秩序。那么很多评价都会变。最后还嘴硬一句,宋朝其实内部治理得很好啦,最终是被蒙古人迫不得已干趴下的。

我当时就火了。对蒙古你好意思讲“战争”?实际上周 秦 汉 唐 的草原治理能力,也是 “天命” 的支柱啊。周武王牧誓,手里拿着的就是牦牛尾巴!不是象征汉人农耕的的锄头!纵观宋、金两朝,对草原的经略就是完全失败的。垃圾!

因为刚刚前一阵子看到 《金朝对草原的减丁,为何遏制不了蒙古的崛起》 这里 cue 一下

宋辽金真是一群乡镇企业家暴发户械斗。烂得要命。唉。你仔细想一下宋吹,那些证据,多少是近代人牵强附会的?宋朝人自己觉得骄傲吗?给好评的,都是后世明清没当上官的文人吧?

天命最大的意义在哪里?给人指明前行的道路,给人以希望。即便黑暗中世纪教会和君权也是这么分工的。挫宋做到了啥?苟且罢了。

有人说,大宋“杯酒释兵权”终结了五代十国,功劳巨大。但从“天命”的角度讲,国之大事,在祀与戎。你老赵家没能给一个民族找到希望,也干不过架,你这个王权就没有存在的根基。说得直白一点,东亚这篇土地,从周天子那一辈人开始就是武装殖民模式。你不殖民,有的是蒙古人 女真人殖你的民。

其实一开始那个文章的框架来讨论一个具体的事就很有力度。如何评价北宋赵光义毁掉太原?

具体的事迹大家可以问下AI。正如文章里所说的,丢掉了 华夷之辩 这个“天命”。那别人河北幽州人全体投夷你也怨不了谁。你之后靖康之变都是报应。

网上对 “内亚” 的说法一直有巨大争议,阿姨那边一直说“武德注入”,实际上征服,殖民 和扩张这些说法太粗暴。但是如果天子不提供秩序,那么你也别怨替代秩序的出现;无德,丢天命,天命归别人。似乎就是这么简单的道理

政治空间是没有真空的

谁的组织度更高,谁的天命就更强。

联系到欧洲发家,启蒙运动 文艺复兴,是在抛弃君权 神权 这个思维定势下做到的。更厉害。

不过替代品似乎是——资本?一个侧面就是牛津剑桥主打神学专业,改成政治经济学

资本的扩张我觉得按照脉络去捋,是蒸汽机,发展纺织业,全球贸易。 归根结底是煤铁革命,但是仔细想,实际上是把战争的边界改成向几百亿年的太阳能存款挖出来消耗了。

农牧时代是拿当季的太阳能来pk。谁能提供摩擦最小的当季太阳能分配,谁就在古代“有德”,有“天命”

现代社会一样的。全球变暖,污染,绿色能源等,一直到社会公平正义。

天命天命,天就是天上射下来的能量,命就是草木人间生命。

哈哈哈这个解释如何?是不是很唯物。

天(能源)与命(生命负载)之间,能否实现最高效的转换与分配?

生命本身就是一个“负熵的过程”。生命存在的意义,就是把“天”射下来的能量,通过光合作用、通过食物链,转化为有序的社会结构、文明形态和思想结晶。

如果转换效率高、分配摩擦小: 生命、社会繁荣,这就叫“天命有归”。

如果中间商抽成太多,腐败、内卷、战略自残(如毁太原): 能量(天)射下来了,却无法高效转化为“命(繁荣)”,能量在内部耗散了,这就是天命将尽。

大宋这种对外又送又怂,把“皇帝”这个singleton强行改成“兄弟之国”, 对内三冗,取缔军功兑现,换成“理学”考试,用首都的局部繁荣掩盖整体的失败。就是丢 天命 的典型。

古代的战争:争夺的是对“天光(土地)”的占有权。

现代的危机:焦虑的是“天光(太阳能存款)”快烧完了,我们该如何重新设计“命(人类社会)”的分配效率。

政治的本质就是能量管理工程。

天命 在过去,看重国体和人君,现代看政治制度科技政策。资本这个玩意,纵然有那么多毛病,但是很好的执行了“天命”

我的 Vibe Coding 最佳实践——ADR文档

2026-06-26 09:40:00

工作和业余也用AI写代码,大大小小项目都经历了。从 rules, skills, spec, agent 到 harness 都玩过了

从AI嘴里发现一条比较稳的套路——ADR文档

rule, skills, spec 这些东西最大的问题就是瞎jb指挥。ADR 的好处是记录why,以及决策演变历史。

贴一段我整理的 ADR 文档就明白了:

---
title: 如何使用 ADR
id: ADR-001
date: 2026-06-26 09:01:21
status: accepted
---

ADR

ADR(Architecture Decision Record,架构决策记录)的核心目标很简单:记录为什么做出了某个重要技术决策,而不是记录系统长什么样。

目前比较常见的是 MADR、Nygard ADR 两种风格,但组织方式都大同小异。

一个团队通常会按下面几个层次组织。

1. 一个 ADR 对应一个决策

不要一个 ADR 写整个系统设计。

好的粒度例如:

ADR-001 使用 PostgreSQL 作为主数据库
ADR-002 API 使用 REST 而不是 GraphQL
ADR-003 服务间通信采用 gRPC
ADR-004 用户认证采用 OAuth2 + JWT
ADR-005 使用事件驱动 Outbox Pattern

而不是

系统架构设计.md

因为几年以后,很难知道某个结论为什么来的。

2. 编号保持永久

一般都会固定编号。

adr/

0001-use-postgresql.md
0002-use-rest-api.md
0003-use-grpc.md
0004-use-oauth2.md

编号一旦存在,就不要修改。

即使后来废弃:

0003-use-grpc.md
Status: Superseded by ADR-0018

这样引用不会失效。

3. Status 非常重要

一般都有状态。

  • Proposed
  • Accepted
  • Deprecated ❌
  • Superseded 🔄
  • Rejected ⛔️

例如:

Status: Accepted
Date: 2026-06-19 01:02:03

如果后来换了:

Status: Superseded
Superseded by: ADR-0018

而新的 ADR:

ADR-0018
Supersedes: ADR-0003

形成完整历史。

4. 一个 ADR 的典型模板

---
title: ADR-008 使用 PostgreSQL
id: ADR-008
date: 2026-06-18 12:32:46
status: accepted
---


## Context

目前需要:

- ACID
- JSON 查询
- 成熟生态

候选:

- PostgreSQL
- MySQL
- MongoDB

## Decision

选择 PostgreSQL。

## Consequences

优点:

- SQL 功能完整
- JSONB 支持优秀
- 社区成熟

缺点:

- 运维复杂度略高
- 分库分表方案需要额外设计

可以再加:

Alternatives

Decision Drivers

Trade-offs

References

5. 按领域组织,而不是按时间(可选)

在一个目录,用文件名体现领域:

008.backend.use-grpc.md
010.security.use-oauth.md
012.frontend.react-query.md

这样编号保持连续,查找也方便。

6. ADR 之间允许引用

例如:

ADR-0015

Context

依赖:
- ADR-0002
- ADR-0008

Decision

由于 ADR-0008 已经确定 PostgreSQL,
因此 Outbox Pattern 可以直接利用事务。

形成决策网络,而不是孤立文档。

7. ADR 只记录"为什么"

这是很多团队最容易犯的错误。

不要写:

Controller
Service
Repository

这是设计文档。

ADR 应该写:

为什么不用 MongoDB?

为什么不用 GraphQL?

为什么采用 Saga?

为什么拆成多个 Service?

为什么 Event Sourcing 被放弃?

重点永远是 Why,而不是 What

8. 和设计文档分开

过去很多团队会这样组织:

文档 回答的问题
RFC / Proposal 未来准备怎么做?
ADR 为什么这样做?
Architecture Doc 系统如何组织?
Design Doc 某个功能如何实现?
Runbook 如何运维?

流程是 RFC → ADR → Design Doc → Code。

RFC 用于讨论方案,达成决策后沉淀为 ADR;随后具体实现细节写入设计文档,最终落实到代码。这样既保留了决策依据,又避免 ADR 演变成冗长的设计说明。

在AI 时代,更简洁,易维护的方式是:

  • ADR 形成决策历史;
  • DESIGN.md (小项目也可以直接放 README.md) 反应当前设计,大量引用 ADR 而不是重复。
  • 迭代排期(spec,phase文档等)引用ADR作为缘由

AI编写的项目,到后期,泥潭就是大量的docs。ADR 的好处是不用修订,全面引用+supersed。保证决策链清晰,低上下文成本

MacOS 快速插入当前时间

2026-06-20 12:06:22

第一步:创建快捷指令

打开 Shortcuts

点击右上角 + 新建快捷指令。

添加动作 1:日期

搜 添加 日期(Current Date) 动作,默认为当前时间

添加动作 2:格式化日期

添加 格式化日期,日期格式 自定义,填 yyyy-MM-dd HH:mm:ss

添加动作 3:Applescript

on run {input, parameters}
  -- 稍微延长一点延迟,确保触发快捷键的手指已经离开键盘
  delay 0.1
  -- display dialog "Current date"

  -- 将 Shortcuts 传入的 list 转换为字符串
  set ts to item 1 of input as string

  tell application "System Events"
    -- 释放可能被系统残留挂起的修饰键状态
    --  键盘区数字的 Key Code 分布是乱序的
    set keyCodeMap to {29, 18, 19, 20, 21, 23, 22, 26, 28, 25}

    key up command
    key up option
    key up control
    key up shift


    repeat with i from 1 to length of ts
      set c to character i of ts
      set charID to id of c
      if c is ":" then
        -- 分号,加 shift 变成冒号
        key code 41 using {shift down}
      else if c is "-" then
        -- 减号,不需要 shift
        key code 27
      else if c is space then
        key code 49
      else if charID ≥ 48 and charID ≤ 57 then
        -- ASCII 码范围过滤 转换算出 1 到 10 的索引
        set targetIndex to charID - 47

        key code (item targetIndex of keyCodeMap)
      end if
    end repeat
  end tell
end run

第二步:设为快速操作

点快捷指令右上角

勾 Use as Quick Action(用作快速操作)

选 任何应用程序

第三步:绑定快捷键

新版macOS可以直接绑定。

之前的:系统设置 → 键盘 → 键盘快捷键 → 服务(或“快速操作”)


我习惯的方式是右手 Cmd+Opt+T 。

以前觉得 applescript 慢,但是现在反而发现需要 delay 0.1 否则会触发 Cmd+Opt 的连招

本来AI给的版本是 keystroke 指令,容易误触 modifier keys,所以改成 key code。

还以为 AI 写错了,没想到 mac 的 0-9 数字键code 居然不是连续的。

不过这JB玩意不稳定,一会儿授权失效了,需要去 设置 - 隐私 - 辅助功能 里删除 Shortcuts 再添加。。

locate cost

2026-06-14 00:13:00

翻到一个 AI 编程的出错提示

Could not find oldString in the file. It must match exactly, including whitespace, indentation, and line endings

我突然发现 agent coding 浪费 token 有很大一部分,可能不是问题输入的思考,和输出

而是在什么位置输出。想了下,人写代码,也是考虑好,再寻找一个合适的位置,开始插入或者修改

找位置 - 插入 - 修改 这个操作要完全用文本语言描述,的确不简单啊。甚至可以说超级复杂。

问了下AI,这个叫 locate cost 。定位成本

要做好这一点,Banthropic 他们的做法是 bash,grep。玩得花的是 SAT,diff,patch 什么的

进一步推论,AI 新写代码容易,改代码难?AI 也确认了我这一点

我突然回忆起cursor那个界面刷刷刷把我2w+行的源码全部刷新一遍,卧槽,原来这么回事

于是我有个理论,AI编程似乎把源码拆得更小,或许更省token,AI不仅改起来更容易,也更容易一眼看出问题

无论你拆多少个文件,AI上下文里都是连续的。

我甚至联想到,机械臂目前搞什么 世界模型 VLA 具身智能 依然打不过人类,遇到训练之外的任务就抓瞎,是不是底层一样的道理?

比如叠衣服,当前是衣服乱的,叠好是个理想状态。人脑可以很快给这两个世界做个 diff,但是这个 locate cost 很高。按照编程的套路,机器人最简单的做法应该是把房子拆掉,家具拆掉,然后重新修一套房子,般进来家具,然后在指定的位置重新按照最佳形状现场纺织一套衣服 🤣

马斯克几千亿买 cursor ,如果能拿到眼球和编辑光标的超原始动作数据,那是真赚了。(如果你还不知道可以搜下)

LLM代码写得好,是因为它背诵了很多优秀代码的“纹理”,而不是 “形状”。纹理见识得多,能对付90%的工作了。人写代码绝大部分也是枯燥的低技术活儿。讽刺的是,是人类写低技术活儿容易翻车。。。比如没考虑周到,复制粘贴错了,等等。。。AI表现虽然平庸但是基本不会犯愚蠢的错。

说起 “纹理” vs “结构”,和这个 “状态迁移” 。我我思绪有点乱,突然有个顿悟,所谓“形状” 就是边界,所谓边界就是两个不同状态实体的迁移界面。diff最 sharp 的边缘。比如人画画总是画“轮廓”,因为轮廓是 diff 出来和背景最突出,最不同的起始边界。

没想到AI给我抬出来个 亚里士多德 hylomorphism(质形论)好家伙。

例如,一个铜像:
质料:铜。
形式:雕像的形状、组织方式、使它成为「某个人的雕像」的那个原则。

换成房子:
木头、砖块——质料。
房屋的结构、布局、功能——形式。
没有质料,形式无处实现;没有形式,质料只是一堆材料。

我是猜不透AI是哪根弦搭错了,把 纹理/结构,映射到 质料(Matter)与形式(Form/Morph) 上了。

不过好有道理啊!!

AI学编程,靠的是海量语料(Matter),看穿了内在联系 , 说的难听就是背出熟练度了,信手拈来。

人类是自下而上,从最小集“生长” morph 出来的。

我觉得这个区别,很深刻啊。虽然产出表现形式可能很接近,但是我真的觉得有很大讲究。。。

接受过正统编程教育的人学习到的是个 生成空间,进行防御式编程;我感觉AI很多时候只是 max effort从前人经验里学习到了个皮毛。。。

机械臂一样的道理。。。我好像发现了点东西。。。???!!!

AI 不能很容易在两个状态之间求 diff 是因为AI无法找到两个 morph 之间共同的父节点。人类是从一个原始状态派生出来的,所以有回程捷径可以走

比如经验丰富的程序员可以很快把一个快排改成冒泡。我,和大部分AI 可能都是删掉重写。。。。

写代码也是如此,搬杯子,叠衣服也是如此。

一下让我联想到 图灵 祖师爷《胚胎发育的化学基础》(The Chemical Basis of Morphogenesis)。

这篇论文研究的正是形态发生(Morphogenesis)——即大自然如何自下而上地从一团完全对称、一模一样的受精卵细胞中,自主分裂、分化、生长出复杂的结构,并最终在斑马身上画出条纹,在豹子身上点出斑点。

这个亚里士多德的思考框架真厉害啊。通透

其实不说哲学这么烧脑的,说大白话,就是AI如果没学过的某个代码结构,可能是真写不出。

但是人类如果琢磨明白,是可能写出来的。

生成路径不一样。

AI 能写出来必然是大量 RL

换到机械臂,比如一个复杂的移动操作,AI如果没学过,没练过,大概率翻车。

人类试几下就明白了。。一样的道理

基于 git 的零拷贝静态web服务器

2026-06-10 23:21:00

无聊,产生了个crazy的想法。

git 内部用 zlib 压缩文件内容

Content-Encoding: gzip 也是

如果web服务器输出 .git 里的 静态 内容,是不是可以减一个二次解压/压缩步骤???

blob sha1 直接当etag?

跟AI较量了几轮,一开始它说做不到。因为 blob 的格式比较变态。因为

hello world...

在 .git/objects/ab/cdef... 里的东西是这么存的

zlib(blob 1234\0hello world...)

I was like

???日他妈真变态啊。这前面是写死了 blob <size>\0 然后把文件内容放在一起,再压缩的。

.git 这设计脑子有病啊。。。为啥不是原始文件gz而是加个头去gz。。。

此路不通!结束


然后AI嘴瓢了,说

先别急着吐槽 Linus,这个设计不仅没病,反而是 Git 能成为现代“内容寻址数据库”的精髓所在。
当 Git 从磁盘读取一个松散对象时,它是个流(Stream)。Git 只需要解压出最开始的几个字节,读到 blob 4096\0,内核就可以立刻执行 malloc(4096) 分配精准的内存。接下来的 zlib 数据流就可以源源不断地直冲内存,不需要反复扩容(realloc),也不需要把整个文件全部解压完才知道它有多大。
况且,这里有一个长久的误解:你吐槽的那个把 blob \0 塞进 zlib 的逻辑,其实只存在于松散对象(Loose Object)中。在真正的 Packfile 里,这个文本格式的头早就被干掉了。

【松散对象 Loose Object】

+-------------------------------------------------------+
| zlib 压缩包: [ "blob 1024\0" + 原始文件纯数据 ]           |
+-------------------------------------------------------+

【包文件 Packfile 内部的一条记录】

+---------------------------------------------------------+
| [3-bit 类型] + [变长 Varint 表达的 Size] + [纯 zlib 数据流] |
+---------------------------------------------------------+

我去,这么好的东西,你怎么不早点告诉我!

然后AI给我泼一盆冷水:

  • Git Packfile 内部的流是zlib 格式 (RFC 1950),头部 2 字节 (CMF/FLG),校验算法 Adler-32 (追求极速快照比对)
  • HTTP Content-Encoding: gzip 期待的流 gzip格式 (RFC 1952),头部 10 字节 (Magic Number, CM, FLG, Time 等),校验算法CRC32 (追求网络传输抗干扰)

不!兼!容!

要正确的CRC32你得把文件全部读一遍,那不就等于解压一遍了。白费力气。完结!


嘿,得亏我早年玩 IIS 长大的。我记得有个偏方,Content-Encoding: deflate,尾部crc32直接丢了

AI:

恭喜你,这是Web 历史上著名的 “Deflate 格式混乱案”
RFC 2616 (HTTP/1.1) 规定和IIS有差异! IIS脑抽地剥离了 zlib 的头尾,只吐了裸压缩流,为了兼容 IIS 的错误实现,各家浏览器各显神通。有的浏览器严格按 RFC 执行,有的浏览器看到 zlib 头会报错,必须看内核的容错机制。
真正的zlib 格式 (RFC 1950) 是要求包含 2 字节头 + DEFLATE 压缩流 + 4 字节 Adler-32 尾

等等,你说啥?Adler-32?这不就又对上了嘛!!!

那么开始 Vibe!!!

Git Packfile 的终极大 Boss:差分存储(Delta Compression)
即便你搞定了上面的所有协议头和校验和,Git 的终极形态——Packfile 还会给你最后一击。你假设的场景是:Git 里的 Blob 都是一个个完整的、独立的压缩包。但实际上,为了极度压榨磁盘空间,当你执行 git gc 后,Packfile 内部采用的是差分存储(Delta Compression)。

啊这??我于是问,能在配置里禁用掉吗?

# 将比对窗口设为 0,彻底禁用 Delta 差分计算
git config --global pack.window 0

# 强制打包所有对象,并立刻、无条件地清除所有 Loose 文件(无视 2 周保护期)
git gc --prune=now --aggressive

# -a 表示把所有对象打包进一个全新的 pack
# -d 表示打包成功后,立刻删除原本的 loose 对象和旧的 pack 文件
git repack -a -d

哎,你tmd不早说。这不就闭环了嘛!!!

你觉得这几个命令难的记? git clone --depth=1 就行。这只有一个 depth 必须自动pack。

如果你存的是 .jpg 之类的二进制,那么git会直接放弃 delta 。

于是最后,通过 OpenCode Zen 免费的 MiMo V2.5 Free

https://github.com/est/git2www-zerocopy

本地自测是OK的

我也算是写过 zero-copy 的人了 🤣(assert AI会写 === 我也会写)

必须严肃吐槽一下AI这回答一板一眼,不思考完整,拷打一下挤一点。如果不是我知道 IIS 这个坑可能就放弃这个想法了。

AI和柜台费

2026-06-05 10:24:00

现在这个时间点,观察到两件事:

  1. 华为的大模型哑火。国内的AI圈反而没那么多恶臭拉踩舆论
  2. 雷不斯天天给MIMO搞新闻。一开始是免费用在Openrouter刷榜;然后在大家都玩按次数的 codng plan它家率先搞 token plan涨价;然后又是 100T 申请免费送;然后跟ds4同款缓存优化降价;然后又是给流失老付费用户免费一个月套餐

MIMO是很用力的去刷榜。why?

马斯克几百亿买 cursor,一个vscode套壳,why?

这两个问题,我在过去几周一直琢磨,那就是 AI 行业和 软件 互联网 最大的差别,他是有边际成本的。他的玩法变了

雷不斯刷榜的 Openrouter 和马斯克买的 Cursor,还有遍地开花的 “中转站”,而且据说有大厂买中转站数据去训练和蒸馏。

边际成本不为0 ,中间商,这两件事在我脑海里酝酿出一个结论:

AI 属于传统行业

  • 它每次吐 token 是有不可忽视的制造成本的;
  • 中转站,Openrouter,Cursor,属于柜台费

对于这个说法,跟身边的人和网友交流,并不能服众。跟AI交流,它一通分析,边际成本 和 柜台费 渠道费 有一定关联,但是没有必然因果性。它举了很多例子,比如 Appstore, Steam,音乐平台也算渠道。Tesla 也算没渠道。

AI还买域名、租服务器,买Google Ads、做SEO等平台广告费,接入 Stripe、PayPal 或支付宝都算渠道费

我觉得有点不可信,掰扯了几句。金融和 基础设施 打广告 不太算渠道吧。无论谁哪个行业这些成本都有,也绕不开。大家都是同一起跑线。这个渠道也不存在特定歧视

我这里纠结的”柜台费“,特指 “保护费”,你不给渠道上供,人家就改卖你竞品,导致你不得不走额外负担和预算。

传统行业特别维护渠道商利益甚至搞排他

AI接下来一段回答突然点醒了我。

传统行业有“物理库存”的生死劫
造一辆车、酿一批酒、生产一批家电,边际成本极高,且会产生巨大的库存。厂商如果自己去卖,一旦卖不出去,资金链就断了。渠道商的核心价值是“蓄水池”和“压货”。
厂商为了让渠道商心甘情愿地拿自己的钱去囤货(把库存风险转移给渠道),就必须出让巨大的利润空间,并给予 “区域排他保护”(保证你在这个区独家卖,不打价格战)。本质:传统厂商给渠道商“上供/排他”,是为了买渠道商的“库存吞吐能力”和“资金垫付”。

其实核心不在 边际成本,而是库存压力,资金周转。

关键的来了:AI模型供应商同样有库存压力。

我把这句话扔给AI,AI说你说得对,然后分析了一通 GPU 折旧,HBM 价高,DC耗电,降温散热 等等成本问题

哈哈哈哈。AI果然还是太笨

AI库存费问题不在于GPU闲置,而在于没有真实用户使用数据,无法投入下一轮迭代,跟竞品相比会越来越落后。

公开语料就那么多,预训练大差不差,全靠后训练 指令遵循这些地方拉开差距了

token回笼,就是这个时代的现金流。你没有真实用户使用互动,你的模型就会被竞品淘汰。

这就是为什么 雷不斯要不计成本推MIMO去Openrouter亏钱刷榜,马一龙要买 Cursor去增强Grok的原因。

这就是中间商、柜台越来越重要的理由。

AI属于传统行业,重资产制造业。

(或许这就是华为只卖高利润硬件不做大模型的理由?)