第一部分 · 架构设计

00 教程导读

先花 3 分钟搞清楚:这个教程讲什么、你需要准备什么、该怎么学效果最好。

🎯 本节目标
  • 知道这个教程讲的是什么、怎么用
  • 准备好学习环境(克隆项目 + 装依赖)
  • 理解整个教程的结构和阅读顺序

1. 这个教程是什么

一句话:带你从零读懂 pi-remote-feishu 这个开源项目的源码

pi-remote-feishu 是 AI 编码代理 Pi Agent 的飞书(Feishu/Lark)扩展包。 它让用户可以在飞书私聊/群聊里跟 Pi 对话,并把 Pi 的回复、思考过程、工具调用、生成的文件全部投射回飞书。

这个项目虽然只有约 2800 行 TypeScript,却包含了大量值得学习的设计: 多会话隔离、双进程架构、异步上下文传递、流式渲染、远程 UI 桥接、文件安全校验……

2. 你需要准备什么

前置条件说明
Node.js ≥ 22.19项目引擎要求(package.json 的 engines 字段)
TypeScript 基础会看接口、泛型、类型联合即可,教程会解释关键语法
一个编辑器推荐 VS Code,边读教程边打开源码对照
飞书应用(可选)想真正跑起来需要注册飞书开放平台应用;只想学原理不需要

3. 跟着做:先把这个项目跑起来

教程里的所有内容都基于真实源码,建议先克隆并确认它能通过测试:

# 克隆项目
git clone https://github.com/grin-coder/pi-remote-feishu.git
cd pi-remote-feishu

# 安装依赖
npm install

# 跑测试(20 个测试应该全部通过)
npm test

# 类型检查
npm run typecheck

# 编译
npm run build

看到 Test Files 9 passed / Tests 20 passed 就说明环境 OK 了。

💡 没有飞书应用也能学

本教程 90% 的内容是架构与实现原理,不需要真实飞书环境。 只有想实际部署时才需要去飞书开放平台注册应用、配置 WebSocket 长连接。

4. 教程结构

部分章节学完你会掌握
第一部分 架构设计 导读 → 项目概览 → 总体架构 → 核心概念 → 消息处理全链路 → 关键设计决策 项目解决什么问题、系统怎么分层、sessionKey/SessionHost/PromptQueue/异步上下文、一条消息的完整旅程、13 个设计决策的取舍
第二部分 源码解读 源码地图 → 配置 → 通道 → 路由 → 会话 → 运行时 → 渲染 → UI 桥接 → 卡片 → 附件 → 工具 → 存储 → 入口 → 测试与二次开发 每个源码模块的逐行讲解、可复用的编码范式、如何给项目加新功能

5. 每章的标准结构

  1. 🎯 本节目标:先告诉你学完能获得什么
  2. 📂 本节源码:要对照阅读的文件路径
  3. 正文:概念讲解 + 代码精读 + 流程图
  4. 💡 提示 / ⚠️ 注意:容易踩的坑和设计意图
  5. 🧾 小结:一页纸总结本节要点
  6. ✍️ 练习:动手题,答案都在源码里

6. 最佳学习方式

📖 推荐路径
  1. 第一遍(快速):只读第一部分,30 分钟内建立全局认知。
  2. 第二遍(精读):读第二部分时,每章先在编辑器打开对应文件,对照代码逐段理解。
  3. 第三遍(动手):做完每章练习,尝试按第 14 章的指南加一个新命令/新工具。

7. 术语速览(提前打个预防针)

术语含义
Transport传输通道,本项目中指「飞书」这条与用户对话的通道
RuntimePi Agent 的会话运行时(AgentSessionRuntime),持有模型和上下文
sessionKey会话的唯一标识字符串,如 dm:ou_xxxgroup:oc_xxx
SessionHost一个隔离单元:一个 runtime + 一个串行队列 + 活跃任务标记
AsyncLocalStorageNode 官方 API,用于在异步调用链里传递「当前请求上下文」
✅ 本节小结

你已经知道:教程讲什么、需要什么环境、怎么学最快。 下一步克隆项目并跑通测试,然后进入 01 项目概览

✍️ 练习
  1. 打开 package.json,找出这个包对外暴露的入口文件(mainbinpi.extensions 三个字段分别指向哪里?)
  2. 运行 npm test,数一数一共多少个测试文件、多少个用例。