深色模式
06 · 外围支撑包
这 9 个包围绕核心(ai / agent / durable / chord / coding-agent)提供终端 UI、协议、远程环境、SDK、评测、遥测等支撑能力。建议按需选读——先读
tui(最常被交互模式用到)与mcp(生态集成),其余在用到时再深入。
1. pi-tui — 终端 UI 库(packages/tui,46 文件)
差分渲染的终端 UI 框架,被 coding-agent 的 interactive 模式直接使用。
src/tui.tstui-main-screen.tstui-alt-screen.ts:主屏 / 副屏(alt-screen)入口。src/terminal.tsterminal-colors.tscolors.tsoklab.ts:终端与颜色(oklab 色彩空间)。src/layout.tslayout-node.ts:布局引擎。src/keybindings.tskeys.tsnative-*:按键与平台原生修饰键。src/components/:UI 原子组件——box/text/truncated-text/input/editor/scroll-view/select-list/settings-list/markdown/image/mouse-region/stack/h-stack/v-stack/loader等。- 辅助:
autocomplete.tsfuzzy.tsundo-stack.tskill-ring.tsword-navigation.tswheel-scroll.tsalt-screen-search.ts。 - 阅读重点:
components/下的组件如何被coding-agent/modes/interactive/components/*复用。
2. mcp — Model Context Protocol(packages/mcp,18 文件)
把外部 MCP 服务器接入 Pi 的客户端/传输/OAuth 实现。
src/client.ts:MCP 客户端。src/transports/:stdio.ts(标准 IO)/streamable-http.ts(HTTP)/in-memory.ts(测试)。src/protocol/:jsonrpc.ts(JSON-RPC 2.0)/content.ts/types.ts。src/oauth/:flow.ts/discovery.ts/callback.ts/provider.ts/types.ts/errors.ts——MCP 的 OAuth 授权流。src/testing/index.ts:测试辅助。- 阅读重点:
coding-agent/extensions/mcp/如何调用本包把 MCP 工具变成 Pi 工具。
3. protocol — 底层线格式(packages/protocol,8 文件)
src/codec.tsframing.tsprotocol.ts:协议框架。src/cbor/:encoder.ts/decoder.ts/options.ts/index.ts——CBOR 编解码(紧凑二进制,用于跨进程/网络)。- 阅读重点:与 chord 的
services/wire.ts配合,理解 Pi 的进程间通信格式。
4. env — 远程执行环境(packages/env,6 文件)
src/remote-env.tsssh.tsconnection.tswatch.tserrors.tsindex.ts。- 抽象"代码在哪里执行":本地、SSH 远程、容器等,统一为
Connection/RemoteEnv。 - 配套文档:
docs/protocol.mddocs/semantics.md(在packages/env/docs/)。 - 阅读重点:
coding-agent/core/bash-executor.ts与core/env如何经此包决定命令执行位置。
5. client — TypeScript SDK 客户端(packages/client,8 文件)
src/client.tsconnection.tstransport.tspromise.tsunix.tstypes.tserrors.tsindex.ts。- 进程外控制 Pi 的客户端(对应
coding-agent/modes/rpc/)。 - 阅读重点:
docs/sdk.md的示例如何通过本包创建并控制 agent 会话。
6. server — RPC 服务端(packages/server,16 文件)
src/server.tslistener.tssession-router.tsconnection.tstypes.ts。src/transports/unix/:Unix domain socket 传输(address.ts/listener.ts/preset.ts/types.ts)。src/testing/:host.ts/client.ts/server.ts/index.ts。- 阅读重点:与
client+protocol+coding-agent/modes/rpc/串成完整的远程控制链路。
7. codemode — 代码模式运行时(packages/codemode,10 文件)
src/declarations.tsidentifier.tssource.tstypes.tswasm.ts。src/runtime/:host.ts/worker.ts/protocol.ts/prelude-source.ts——在 QuickJS WASM 里跑用户 codemode 脚本(沙箱化)。- 阅读重点:
coding-agent/extensions/codemode/如何经此包执行脚本。
8. evals — 评测框架(packages/evals,5 文件)
src/cli.tsdocker.tsharness.tsplan.tsreport.ts。- 用 Docker 跑 agent、制定计划、产出报告,衡量 coding agent 在真实任务上的表现。
- 阅读重点:想给 Pi 做回归/基准测试时从这里入手。
9. telemetry — 厂商中立遥测(packages/telemetry,6 文件)
src/index.tsmemory.tsnoop.tstesting/{conformance,types,index}.ts。- 定义遥测契约、参考适配器(memory / noop)、conformance 测试、类型化 schema。
- 阅读重点:
coding-agent/core/telemetry.ts如何对接本包,做到不绑定具体供应商。
10. 选读建议
| 你关心 | 读 |
|---|---|
| 交互界面怎么画 | tui → coding-agent/modes/interactive/components/* |
| 接 Claude Desktop / 第三方 MCP | mcp + coding-agent/extensions/mcp/ |
| 远程/容器里跑命令 | env + coding-agent/core/bash-executor.ts |
| 用代码控制 Pi | client + server + protocol + coding-agent/modes/rpc/ + docs/sdk.md |
| 写 codemode 脚本 | codemode + coding-agent/extensions/codemode/ |
| 给 Pi 做评测 | evals |
| 埋点/统计 | telemetry + coding-agent/core/telemetry.ts |