代谢系统拆解 01 - 从吃进去到被吸收:把消化画成一张函数调用图
「代谢系统拆解」三篇一组,这是第一篇。第二篇讲进入血液之后被谁取走,第三篇讲胰岛素怎么工作、糖尿病出了什么问题。 起因很简单:想搞清楚一顿饭吃下去,身体到底对它做了什么。网上能找到的图不是简略到只剩「碳水→血糖」,就是专业到全是缩写和箭头,看完还是不知道中间发生了什么。 于是自己画了一张。 把每一步当成一个函数画的时候用了一个结构:每一步都是一次函数调用。 在哪儿发生 —— 函数体。口腔、胃...
「代谢系统拆解」三篇一组,这是第一篇。第二篇讲进入血液之后被谁取走,第三篇讲胰岛素怎么工作、糖尿病出了什么问题。 起因很简单:想搞清楚一顿饭吃下去,身体到底对它做了什么。网上能找到的图不是简略到只剩「碳水→血糖」,就是专业到全是缩写和箭头,看完还是不知道中间发生了什么。 于是自己画了一张。 把每一步当成一个函数画的时候用了一个结构:每一步都是一次函数调用。 在哪儿发生 —— 函数体。口腔、胃...
「代谢系统拆解」三篇一组,这是第二篇。第一篇讲从吃进去到被吸收的消化过程,第三篇讲胰岛素怎么工作、糖尿病出了什么问题。 上一张图的终点是血液。这张图从血液开始,回答一个问题:血里的东西被谁取走、谁需要胰岛素才能取、取不完存哪儿。 先说一件容易被忽略的事:血液里其实只有葡萄糖这一种糖是大量存在的。果糖和半乳糖在肝里就被扣光了,从来没有以自己的身份进过体循环。所以图最上面那根血液总管里漂着的是葡萄...
「代谢系统拆解」三篇一组,这是第三篇。第一篇讲从吃进去到被吸收的消化过程,第二篇讲进入血液之后被谁取走。 前两张画的是物质在流动,这一张画的是信号在指挥。 这个区别决定了画法也得换:胰岛素本身不被消耗、也不变成别的东西,它只负责下命令。所以图里加了一种新表达 —— 粉色虚线箭头 = 激素下的命令,实线箭头仍然表示物质真的在往那个方向走。 .dgm-wrap{margin:2.2rem 0 1...
实测环境:FlClash 0.8.94(Android)。整套流程从零走通,脚本可直接复制使用。方法源自 seewhy.me 的这篇文章,本文在它的基础上补了覆写脚本、脚本挂载和验证这几段实践中踩到的坑。
问题一:FlClash 和 Tailscale 在安卓上打架。
Android 同一时间只允许一个 App 占用系统 VPN 通道。FlClash 要用它跑代理,Tailscale 官方 App 也要用它组网,两个不能同时开。上一篇里我的解法是用 work profile 隔出第二个 VPN 槽位、保留官方 App;这篇是另一条路线:好在 FlClash 的内核 mihomo 从 v1.19.25(2026-05-16 发布)起内置了 Tailscale 出站(基于 tsnet,Tailscale 官方的嵌入式库)——FlClash 自己就能作为一个 Tailscale 节点登录 tailnet,官方 App 可以卸载了。
顺便说清楚两条路线怎么选。work profile 的好处是隔离得非常彻底:两边互相不用改任何东西,各跑各的,维护起来最省心 —— 不想折腾,选它就挺好。本文这条路线适合稍微想折腾一下的人,或者不想为此多装一个 Shelter,又或者 work profile 槽位已经被公司 MDM 占用、ROM 压根不支持的情况。
问题二:直接改订阅配置,一刷新就白改。
seewhy.me 那篇文章的做法是手工编辑订阅下载下来的 YAML,往里加 Tailscale 节点和规则。能用,但订阅文件是机场的,每次刷新订阅都会重新下载覆盖,手工改的部分全部丢失。
第二个问题的正解是 FlClash 自带的覆写脚本:一段独立保存的 JavaScript,每次加载或刷新订阅时,FlClash 都会把下载到的配置传进脚本的 main(config) 函数,脚本在内存里追加自己的内容后返回。订阅文件本身永远不被修改,刷新多少次,脚本都会重新套用一遍。Clash Verge 用户对这套机制应该不陌生(那边叫 Merge / Script 覆写)。
在外面的时候常常有这么个需求,SSH 连回家里的 MacBook Pro,看一眼 Claude Code 和 Codex 跑到哪一步了、有没有卡住在等我回话。上一篇讲 AI Agent Coding 基础工具链 的时候提过,tmux 里常年挂着几个 agent,人不在电脑前也得能随时接上。
Claude Code 和 Codex 各自都有手机 app,我没有用,主要考虑是 多接入一个客户端就多一份账号暴露面,出于账号安全的考虑这条路我没走,SSH 也很方便,而且不绑死到某一个 AI Agent 工具上,后面我如果换成其他开源的 Agent,比如 Grok Builder,也没有额外的成本。
家里的宽带没有公网 IP,这一层 Tailscale 能解决:两端装上、登录同一个账号,设备之间点对点打洞,拿一个 100.x 的地址就能连回去。
问题出在 macOS 上常年开着 Surge 增强模式,手机上开着 FlClash,它们和 Tailscale 要占用的是同一批系统资源,默认配置下同时启用会互相覆盖。而我不想每次要连回去就先手动切一次 VPN。
两边最后都配通了:两个 VPN 同时处于活动状态,代理照常分流,手机上一条命令直接 attach 到 Mac 上的 tmux。下面是具体怎么配的,以及这套配置的限制在哪。
我现在写代码基本是多个项目进行,每个项目好几个 agent 一起开着:一个 pane 里 Claude Code 在改代码,旁边 Codex 在跑 test 和 review,还有几个处理杂活的。
同时进行的工作区一般 2-3 个,同时期维护的有 10+ 个,我不想每次都重新打开,所以怎么把它们安排好,能够自驱,且能支持随时随地介入就变得尤为重要。中间折腾了不少次,最终我建立了一套可插拔、高兼容性、高稳定性、错误易恢复的基础工具链。
年轻的时候,要是有人跟我大谈孔孟之道、老庄哲学,我多半是听不进去的,心里还有点不以为然,总觉得这些两千多年前的东西早就过时了,跟现在这个高科技、快节奏的社会完全是两码事。
后来年纪慢慢大了,在职场和各种现实规则里摸爬滚打久了,我才慢慢发现:这个世界运转的底层逻辑,其实跟老祖宗当年看到的差不多是一回事。表面上现代社会日新月异、技术一茬接一茬,但最底层那套 “代码” 几乎没怎么变。两千多年前的先秦诸子,早就把人性和权力这点事看得挺透了。所以这篇我想换个现代人的视角,把这套跑了两千年的 “社会操作系统” 重新拆开看看。
Over the past couple of years I’ve shipped a few open-source macOS apps:
最近写了好几个开源 macOS App 项目。我估计写过独立 macOS App 的人大概都有同感:把核心功能写出来,其实只完成了一半。剩下那一半基本都是琐事,比如:
I recently went looking for an analytics tool for an app I’m developing. There are plenty of options out there, but most are either too heavyweight or raise privacy concerns. After some research, Aptabase caught my eye — it’s privacy-first, uses no unique user identifiers, fully complies with GDPR/CCPA, comes with a clean and intuitive dashboard, and offers over 10 SDKs covering most major frameworks. Best of all, it supports self-hosting, so your data stays entirely under your control.
The official self-hosting repository makes it look simple — just clone, tweak a few configs, run docker compose up -d, and you’re done. But the actual deployment process had quite a few gotchas, and many others in the Issues have run into similar problems. Here’s what I learned, hoping it saves you some trouble.