标签: 源码分析

共 8 篇

Go 大工程的代码目录分析:以 k8s、multica、etcd、prometheus 为例

2026年10月31日

从 Java 转过来的人打开 kubernetes 源码,第一反应是找 controller、service、dao——看到的却是 cmd、pkg、staging。顺着这个困惑往下追:这三个目录各是什么来历,为什么 etcd 连 cmd 和 internal 都没有,k8s 的 controller 为什么不是那个 controller,multica 又怎么长回了 handler/service/db 三层,prometheus 为什么连 service 层的生态位都没有。

被 Multica 叫起来的 Claude Code:任务怎么来,上下文怎么读,结果怎么交回

2026年10月23日

从一个被 Multica 拉起来的 Claude Code 的角度,把一次 @ 从头走一遍:醒来之前平台和电脑之间传了什么,醒来时工作目录里的 CLAUDE.md、技能和环境变量各告诉我什么,stdin 里的第一条消息长什么样,需求是我自己用 mat_ 令牌拉的,结果怎样发成评论、又有哪些由 daemon 读着我的 stdout 替我报回去;以及干活时被插话、下一轮怎么接上会话、换一个 agent 来接手时又怎么接上前一个的进度。

Agent Substrate 是什么:和 E2B、Kubernetes 的关系

2026年10月19日

Agent Substrate 的演示里,约 250 个有状态的智能体跑在 8 个 Pod 上。顺着这个数字往下追:它管的 actor 是什么、平时在哪,模板里的镜像怎么跑在 gVisor 上、和 E2B 的构建有什么不同,一个请求怎么把它叫醒,一个要跑几天的智能体,状态靠什么保住、什么时候会丢,它为什么装在 Kubernetes 上却不让 Kubernetes 管 actor,又和同样靠快照起沙箱的 E2B 差在哪里。

E2B 和 Docker 是什么关系

2026年10月18日

一份普通的 Dockerfile 原封不动就能变成 E2B 沙箱,可 E2B 又说每个沙箱是一台 Firecracker 虚拟机。顺着这份 Dockerfile 往下追:为什么不直接用容器,镜像进了 E2B 之后变成了什么,虚拟机怎么启动得和容器一样快,它创建沙箱和 Kubernetes 创建 Pod 有什么不同、又怎么跑在 Kubernetes 上,最后反过来看沙箱里怎么跑 Docker。

从 GitLab 看传统代码平台的架构演进

2026年10月17日

一个 bare 仓库加上 SSH 就是一台 Git 服务器:认证、接管道、在仓库上跑 git,三件事都在一台机器上。GitLab 的本质还是这三件事,只是把 git 命令按仓库分散到很多台机器上去跑。顺着拆开的六处接缝往下看:Gitaly 为什么让应用远程请它跑 git,入口怎么先问 Rails,pack 怎么跨过网络,一台机器怎么替所有人跑 git,push 检查怎么回到另一台机器,Praefect 怎么用副本兜底,以及 GitLab 正在改的最底下那一层。

Gerrit 的平台架构创新

2026年10月17日

一个裸仓库加上 SSH 就是最小的 Git 服务器,代码平台是在它之上补出来的。Gerrit 出自 Google“先评审、后合并”的传统,比 GitLab 更早,评审的单位是一个提交而不是一个分支,评审记录本身也写进了 Git。顺着这条线往下追:Gerrit 为什么用 JGit 自己做服务端,push 到 refs/for/main 时发生了什么,评审数据为什么从 SQL 搬进 Git,引用多到几十万个之后怎么存、怎么按权限过滤,合并时怎么保证原子性,索引和缓存怎么配合,以及多台机器之间怎么同步。

walgit 架构原理:把 Git 仓库交给对象存储

2026年10月17日

walgit 的一次 push 只对桶发 5 个请求,一次读只发 1 个,却保证确认后任何一台机器都能读到。为什么不能让 git 直接读对象存储,manifest 的 CAS 又凭什么就是提交点?并发 push 和每秒一次写的限制,是另一道坎。

从 git clone 说起:Git 服务器是怎么工作的

2026年10月14日

一次 `git clone` 在网络上到底交换了什么?抓包只看到三次 HTTP 请求。从搭一个最小的 Git 服务器开始,GitLab 的 Gitaly、Gerrit 的引用、walgit 的预写日志,都是在补它补不上的那一块。