# 代码库结构

**Analysis Date:** 2026-04-07

## 目录布局

```text
deerflow2/
├── backend/                        # Python 后端（Gateway + Harness workspace）
│   ├── app/                        # 应用壳层：HTTP Gateway、IM channels
│   ├── packages/harness/deerflow/  # 运行时内核：agent/runtime/tools/sandbox
│   ├── tests/                      # 后端测试
│   └── pyproject.toml              # 后端 workspace 定义
├── frontend/                       # Next.js 前端（App Router）
│   ├── src/app/                    # 页面与路由入口
│   ├── src/components/             # UI 与业务组件
│   ├── src/core/                   # 领域能力层（API/hooks/types）
│   ├── src/server/                 # 服务端能力（auth）
│   └── tests/                      # 前端 E2E 测试
├── docker/                         # 部署与网关编排
├── docs/                           # 项目文档
├── scripts/                        # 开发与部署脚本
└── skills/                         # 技能资源（public skills）
```

## 目录职责

**`backend/app`:**
- Purpose: 面向产品的 API/协议层，不承载核心 agent 组装逻辑
- Contains: `gateway/app.py`、`gateway/routers/*.py`、`channels/*.py`
- Key files: `backend/app/gateway/app.py`, `backend/app/gateway/services.py`, `backend/app/channels/service.py`

**`backend/packages/harness/deerflow`:**
- Purpose: 可复用内核层，封装智能体运行时与能力模块
- Contains: `agents/`, `runtime/`, `tools/`, `sandbox/`, `skills/`, `models/`, `config/`
- Key files: `backend/packages/harness/deerflow/agents/lead_agent/agent.py`, `backend/packages/harness/deerflow/runtime/runs/manager.py`, `backend/packages/harness/deerflow/runtime/stream_bridge/memory.py`

**`frontend/src/app`:**
- Purpose: Next.js 路由与页面入口，组合 UI 与 core 能力
- Contains: 根布局、workspace 页面、docs 页面、API route handlers
- Key files: `frontend/src/app/layout.tsx`, `frontend/src/app/workspace/layout.tsx`, `frontend/src/app/workspace/chats/[thread_id]/page.tsx`

**`frontend/src/components`:**
- Purpose: 可复用 UI 组件与工作台业务组件
- Contains: `ui/*`, `workspace/*`, `landing/*`, `ai-elements/*`
- Key files: `frontend/src/components/workspace/workspace-container.tsx`, `frontend/src/components/workspace/chats/use-thread-chat.ts`

**`frontend/src/core`:**
- Purpose: 前端领域逻辑层，统一管理数据访问、hook 与类型
- Contains: `threads/`, `api/`, `memory/`, `models/`, `skills/`, `uploads/`, `settings/`
- Key files: `frontend/src/core/threads/hooks.ts`, `frontend/src/core/api/api-client.ts`, `frontend/src/core/config/index.ts`

## 关键文件位置

**Entry Points:**
- `backend/app/gateway/app.py`: FastAPI 入口与路由总装
- `frontend/src/app/layout.tsx`: 前端根布局入口
- `frontend/src/app/page.tsx`: Landing 页面入口
- `frontend/src/app/workspace/page.tsx`: 工作台入口重定向

**Configuration:**
- `backend/pyproject.toml`: Python 依赖与 workspace
- `frontend/package.json`: 前端依赖与脚本
- `frontend/tsconfig.json`: TS 编译策略与 `@/*` 别名
- `frontend/next.config.js`: Next 构建输出与运行参数
- `config.yaml`: 运行配置主文件（存在，勿在规划文档中记录敏感值）

**Core Logic:**
- `backend/app/gateway/services.py`: run 生命周期业务逻辑与 SSE 格式化
- `backend/app/gateway/routers/thread_runs.py`: 线程 run 协议接口
- `backend/packages/harness/deerflow/agents/lead_agent/agent.py`: 主 Agent 构建逻辑
- `backend/packages/harness/deerflow/runtime/runs/manager.py`: run 状态机与并发控制
- `frontend/src/core/threads/hooks.ts`: 流式会话、线程列表、突变逻辑
- `frontend/src/core/api/api-client.ts`: LangGraph SDK 客户端封装

**Testing:**
- `backend/tests/*.py`: 后端单元/集成测试
- `frontend/tests/e2e/*`: 前端端到端测试（Playwright）
- `frontend/src/core/**/*.{test.ts,test.mjs}`: 前端核心逻辑单测

## 命名约定

**Files:**
- 前端组件文件：`kebab-case.tsx`（示例：`workspace-container.tsx`）
- 前端 Hook 文件：`use-*.ts` 或 `hooks.ts`（示例：`use-thread-chat.ts`, `threads/hooks.ts`）
- 后端 Python 文件：`snake_case.py`（示例：`thread_runs.py`, `memory_middleware.py`）
- 路由文件：按资源名命名（示例：`routers/threads.py`, `routers/models.py`）

**Directories:**
- 前端按职责分层：`app`（路由）/`components`（视图）/`core`（领域）
- 后端按边界分层：`app`（应用层）/`packages/harness/deerflow`（内核层）

## 新增代码放置规则（可执行）

**新增后端 API 端点：**
- 路由定义: `backend/app/gateway/routers/{resource}.py`
- 复用业务逻辑: 优先放 `backend/app/gateway/services.py` 或同级 `{resource}_service.py`
- 依赖获取: 统一通过 `backend/app/gateway/deps.py`

**新增 Agent/运行时能力：**
- Agent 相关: `backend/packages/harness/deerflow/agents/*`
- 运行时状态/流: `backend/packages/harness/deerflow/runtime/*`
- 工具能力: `backend/packages/harness/deerflow/tools/*` 或 `community/*`
- 规则: 不在 `backend/app/*` 写核心算法/agent 编排逻辑

**新增前端业务功能：**
- 页面入口: `frontend/src/app/{route}/page.tsx`
- 业务组件: `frontend/src/components/workspace/*`（工作台）或对应域目录
- 数据访问与副作用: `frontend/src/core/{domain}/api.ts|hooks.ts|types.ts`
- 规则: 页面层只做组合，不直接实现复杂 API 调用细节

**新增 Next API 代理：**
- 放置于 `frontend/src/app/api/{resource}/route.ts` 或 `[...path]/route.ts`
- 代理逻辑复用现有 `proxyRequest` 模式（参考 `frontend/src/app/api/memory/[...path]/route.ts`）

**新增测试：**
- 后端: `backend/tests/test_{feature}.py`
- 前端 core 单测: 与实现文件同目录 `*.test.ts|*.test.mjs`
- 前端 E2E: `frontend/tests/e2e/{feature}.spec.ts`

## 特殊目录说明

**`backend/src`:**
- Purpose: 旧路径兼容目录（当前主要为 `__pycache__`）
- Generated: Yes（当前内容以缓存文件为主）
- Committed: Yes（目录存在于仓库）
- Guidance: 新代码不要放在 `backend/src`，统一落到 `backend/packages/harness/deerflow` 或 `backend/app`

**`frontend/.next` 与 `frontend/node_modules`:**
- Purpose: 构建产物与依赖缓存
- Generated: Yes
- Committed: No（应视为构建输出）

**`.planning/codebase`:**
- Purpose: 供后续规划/执行代理读取的代码库认知文档
- Generated: Yes（由 map 阶段生成）
- Committed: Yes（作为流程资产）

**结论：**
该仓库最重要的结构约束是“后端 Harness 与 App 分层 + 前端 app/components/core 三段分层”。后续新增功能应优先沿既有目录职责扩展，避免把核心逻辑散落到路由层或页面层。

---

*Structure analysis: 2026-04-07*
