diff --git a/AGENTS.md b/AGENTS.md index 70d4d02..13688a8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -120,6 +120,8 @@ let b = self.buf.pop_front(); focus/ ├── AGENTS.md # 本文件 ├── Cargo.toml # [workspace] + 共享依赖版本 +├── LICENSE # MIT +├── README.md # 项目总览与使用说明 ├── rust-toolchain.toml # channel = "stable" ├── crates/ │ ├── focus-json/ # 极简 JSON 解析器(零外部依赖) @@ -129,19 +131,18 @@ focus/ │ ├── focus-tools/ # 文件工具(read / write / edit / shell) │ ├── focus-harness/ # 会话持久化 + 上下文压缩 + 系统提示模板 │ └── focus-tui/ # 终端交互层(ratatui + crossterm) -├── docs/ -│ └── architecture/ # 架构解读文档(已存在) -└── tests/ # workspace 级集成测试(可选) +└── docs/ + └── architecture/ # 架构解读文档 ``` ### 3.1 依赖图(强制单向,禁止循环) ```text focus-json ← (零外部依赖,纯 std) -focus-core ← focus-json, tokio +focus-core ← focus-json(纯同步逻辑,不依赖 tokio) focus-transport ← focus-json, tokio, rustls, tokio-rustls, rustls-native-certs -focus-providers ← focus-core, focus-transport -focus-tools ← focus-core +focus-providers ← focus-core, focus-transport, focus-json, tokio +focus-tools ← focus-core, focus-json focus-harness ← focus-core, focus-json focus-tui ← focus-core, focus-providers, focus-tools, focus-harness, focus-json, ratatui, crossterm ``` diff --git a/README.md b/README.md index d8574f3..6dce142 100644 --- a/README.md +++ b/README.md @@ -23,26 +23,29 @@ ```text focus/ -├── crates/ -│ ├── focus-json/ # 极简 JSON 解析器 / 序列化器(零外部依赖) -│ ├── focus-core/ # ★ 核心层:领域类型 + Agent 循环 + Tool / StreamProvider trait -│ ├── focus-transport/ # 传输层:HTTPS 客户端(tokio + rustls)、HTTP/1.1、SSE 解析 -│ ├── focus-providers/ # Provider 实现(Anthropic / OpenAI) -│ ├── focus-tools/ # 文件工具(read / write / edit / shell) -│ ├── focus-harness/ # 会话持久化 + 上下文压缩 + 系统提示模板 -│ └── focus-tui/ # 终端交互层(ratatui + crossterm),组装所有模块 +├── Cargo.toml # workspace 清单 +├── README.md # 本文件 +├── AGENTS.md # 工程规范(依赖白名单、代码/测试/提交规范) +├── LICENSE # MIT ├── docs/architecture/ # 架构解读文档(三份精读笔记) -└── AGENTS.md # 工程规范(依赖白名单、代码/测试/提交规范) +└── crates/ + ├── focus-json/ # 极简 JSON 解析器 / 序列化器(零外部依赖) + ├── focus-core/ # ★ 核心层:领域类型 + Agent 循环 + Tool / StreamProvider trait(纯同步,无 tokio) + ├── focus-transport/ # 传输层:HTTPS 客户端(tokio + rustls)、HTTP/1.1、SSE 解析 + ├── focus-providers/ # Provider 实现(Anthropic / OpenAI) + ├── focus-tools/ # 文件工具(read / write / edit / shell) + ├── focus-harness/ # 会话持久化 + 上下文压缩 + 系统提示模板 + └── focus-tui/ # 终端交互层(ratatui + crossterm),组装所有模块 ``` ### 分层依赖图 ```text focus-json ← 零外部依赖,纯 std -focus-core ← focus-json, tokio +focus-core ← focus-json(纯同步逻辑,不依赖 tokio) focus-transport ← focus-json, tokio, rustls, tokio-rustls, rustls-native-certs -focus-providers ← focus-core, focus-transport -focus-tools ← focus-core +focus-providers ← focus-core, focus-transport, focus-json, tokio +focus-tools ← focus-core, focus-json focus-harness ← focus-core, focus-json focus-tui ← focus-core, focus-providers, focus-tools, focus-harness, focus-json, ratatui, crossterm ``` diff --git a/docs/architecture/00-pi-architecture-overview.md b/docs/architecture/00-pi-architecture-overview.md index 9e791bb..d431fdb 100644 --- a/docs/architecture/00-pi-architecture-overview.md +++ b/docs/architecture/00-pi-architecture-overview.md @@ -228,15 +228,19 @@ Anthropic SSE → pi-ai 事件映射(anthropic-messages.ts:559-732): ``` focus/ ├── Cargo.toml # [workspace] +├── AGENTS.md # 工程规范 └── crates/ - ├── focus-core/ # agent 层:类型、循环、工具 trait(纯 std + 手写 JSON) - ├── focus-transport/ # Transport trait 定义(纯 std) - ├── focus-providers/ # provider 实现(依赖 transport,用 curl 子进程) + ├── focus-json/ # 极简 JSON 解析/序列化(零外部依赖) + ├── focus-core/ # agent 层:类型、循环、工具 trait(纯 std + 手写 JSON,无 tokio) + ├── focus-transport/ # 传输层:HTTPS(tokio + rustls)、HTTP/1.1、SSE + ├── focus-providers/ # provider 实现(Anthropic / OpenAI) ├── focus-harness/ # 会话/压缩/系统提示(纯 std) - ├── focus-tools/ # 文件工具(纯 std) - └── focus-cli/ # 入口(组合上述) + ├── focus-tools/ # 文件工具(read / write / edit / shell) + └── focus-tui/ # 终端交互层(ratatui + crossterm) ``` +> 注:早期规划中的 `focus-cli` 最终由 `focus-tui` 取代。 + ## 十、学习路线 ### 第一阶段:吃透核心(按顺序)