源码阅读 MOC
组织「读开源项目源码」这一类笔记的入口,提供统一的阅读方法(目录结构 → 包组织 → 依赖方向 → 调用链)与项目清单。
#type / moc
#status / growing
#tech / dev
[!info] related notes
- 相关 MOC:Go 工具链与工程结构 MOC · 模块化与架构 MOC · Go 语言项目实战 MOC
- 关系笔记:Go 项目结构与分层 · 项目分层架构 · DDD 架构
源码阅读 MOC
这张地图覆盖什么
这里收录「读别人的开源项目源码」产生的笔记。它和 Go 语言项目实战 MOC 是一对互补关系:
| 地图 | 材料来源 | 核心动作 |
|---|---|---|
| 本图 | 外部开源项目 | 逆向理解已有设计:它为什么这样切包 |
| Go 语言项目实战 | 自己写的项目 | 正向做决策:我该怎么切包 |
每个项目一篇 type/resource 主笔记,回答四件事:目录结构、包组织、架构分层与依赖方向、从哪读起。从中提炼出的稳定结论再落成 type/concept 或 type/synthesis,并与既有理论笔记双向链接。
推荐阅读顺序 / 从这里开始
读任何一个陌生项目,都走同一条固定路线,避免一上来就陷进单个文件:
- 鸟瞰目录:只看顶层 1–2 层,先数出「有几个顶层边界」。
- 给每个顶层目录一句话职责:说不清的先标记为疑问,不要跳过。
- 确定依赖方向:谁 import 谁,箭头是否单向。这一步决定它属于哪种架构范式。
- 找入口:
main在哪,组装了什么,服务怎么起来。 - 贯穿一条用例:挑一个最简单的写操作,从 HTTP 入口一路追到落库。
- 回到理论:把观察到的做法链接回 Go 项目结构与分层 等理论笔记,验证或推翻自己原来的理解。
先看理论:Go 项目结构与分层(讲原则)→ 再看下面的真实案例(讲落地)。
项目清单
[!note] 按「三层参考架构」组织 用户为 BodySense 定的学习框架:每个项目只负责教它最擅长的部分,不追求一个仓库覆盖全部。对照关系见下。
Go 服务端(既有)
- Ardan Labs Service —— 教学向参考实现,四层横切(api / app / business / foundation)× 领域纵切,强类型只在业务层
- Memos —— 真实产品,契约先行(protobuf)+ 多数据库驱动 + 单仓带前端
Python:优雅写法 & 完整产品
- PydanticAI —— 学「现代、类型安全、优雅的 Python AI 写法」首选;
Agent[Dependencies, Output]类型链贯穿 dependency→tool→model→output - Onyx —— 学「完整 Python AI 产品工程化」首选;FastAPI + Celery + PostgreSQL + RAG + 分层测试,与 BodySense 技术栈重合最高
React + Python:图形化 & AI 交互
- Langflow —— React 19 + Vite + Zustand 可视工作流;graph 执行 + 流式,前端匹配度最高
- OpenHands —— Agent 状态机 / 事件流 / 中断恢复 UI(注:main 根为前端 agent-canvas,Python 运行时位置待确认)
React + Go + Python:三栈分工
- Dify 源码阅读 —— 三语言服务边界与部署拓扑教材(既有 Dify 概览 为产品用法向,勿混淆)
- Dify Plugin Daemon —— 上述三栈里 Go 那一层:插件运行时协调,用
uv拉起 Python
待读
关系笔记入口
- Go 项目结构与分层:目录只是投影,真正要看的是包边界与依赖方向
- 项目分层架构:跨语言的通用分层模型
- DDD 架构:领域驱动设计的层次划分
- Handler / Service / Repository:Web 场景下最常见的一种落地