# 技术栈（Tech Focus）

**分析日期：** 2026-04-07

## 语言

**主语言：**
- Python 3.12+：后端网关、Agent Runtime、MCP/工具系统（`backend/pyproject.toml`、`backend/.python-version`、`backend/langgraph.json`、`backend/packages/harness/pyproject.toml`）
- TypeScript（ES2022）：前端 App Router、API 代理、状态管理与 UI 组件（`frontend/package.json`、`frontend/tsconfig.json`）

**次要语言：**
- JavaScript（ESM）：Next.js/工具链配置（`frontend/next.config.js`、`frontend/eslint.config.js`、`frontend/prettier.config.js`）
- YAML：运行时模型与工具编排配置（`config.example.yaml`、`config.yaml`）

**结论：**
- 代码库是 Python + TypeScript 双栈，后端偏 AI runtime 编排，前端偏 Next.js 应用层；版本锚点明确（Python 3.12、Node 22）。

## 运行时

**后端运行时：**
- Python 3.12（`backend/.python-version`、`backend/langgraph.json`）
- FastAPI + Uvicorn（`backend/pyproject.toml`、`backend/Makefile`）
- LangGraph Server（`backend/Makefile` 的 `uv run langgraph dev`）

**前端运行时：**
- Node.js 22+（`frontend/README.md`；CI 也固定 Node 22，见 `.github/workflows/lint-check.yml`）
- Next.js 16 + React 19（`frontend/package.json`）

**结论：**
- 运行时依赖在文档与 CI 双重约束，团队应以 Python 3.12 + Node 22 作为本地/CI 基线。

## 依赖与包管理

**后端：**
- 包管理器：`uv`（`Makefile`、`backend/Makefile`）
- 工作区：`backend` 主工程 + `backend/packages/harness`（`backend/pyproject.toml` 的 `[tool.uv.workspace]`）
- 锁文件：`backend/uv.lock`（存在）

**前端：**
- 包管理器：`pnpm@10.26.2`（`frontend/package.json`）
- 锁文件：`frontend/pnpm-lock.yaml`（存在）

**结论：**
- 后端与前端均已锁版本；规划阶段应坚持 `uv sync` + `pnpm install --frozen-lockfile`，避免跨环境漂移。

## 核心框架

**后端核心：**
- `langgraph` / `langgraph-api`：Agent 图运行与 API 能力（`backend/packages/harness/pyproject.toml`）
- `langchain` 生态：模型适配、工具接口、回调（`backend/packages/harness/pyproject.toml`、`backend/packages/harness/deerflow/models/factory.py`）
- `fastapi` + `sse-starlette`：网关 REST 与流式接口（`backend/pyproject.toml`、`backend/app/gateway/routers/runs.py`）

**前端核心：**
- `next` 16（App Router）+ `react` 19（`frontend/package.json`）
- `@tanstack/react-query`：前端数据获取与缓存（`frontend/src/core/*/hooks.ts`）
- `@langchain/langgraph-sdk`：前端直连 LangGraph API（`frontend/src/core/api/api-client.ts`）

**结论：**
- 架构重心是 LangGraph runtime + FastAPI gateway + Next.js UI 三段式，新增能力应优先挂靠这三层边界。

## 构建与开发工具

**后端：**
- 启动：`uv run langgraph dev`、`uv run uvicorn ...`（`backend/Makefile`）
- 测试：`pytest`（`backend/pyproject.toml`、`backend/Makefile`）
- 质量：`ruff`（`backend/ruff.toml`）

**前端：**
- 开发：`next dev --turbo`（`frontend/package.json`）
- 构建：`next build`（`frontend/package.json`）
- 质量：`eslint` + `typescript-eslint` + `prettier`（`frontend/eslint.config.js`、`frontend/prettier.config.js`）
- E2E：`playwright`（`frontend/playwright.config.ts`）

**CI：**
- GitHub Actions：后端单测、前后端 lint/type/build（`.github/workflows/backend-unit-tests.yml`、`.github/workflows/lint-check.yml`）

**结论：**
- 工具链完整，且 CI 已覆盖“格式/Lint/类型/构建/后端单测”；后续 phase 应直接复用现有流水线，不建议新建并行脚本体系。

## 关键依赖（对规划最有影响）

**AI 与模型：**
- `langchain-openai`、`langchain-anthropic`、`langchain-google-genai`、`langchain-deepseek`（`backend/packages/harness/pyproject.toml`）
- `langgraph-sdk`（前后端均使用，`backend/pyproject.toml`、`frontend/package.json`）

**集成与工具：**
- `langchain-mcp-adapters`（MCP 多服务接入，`backend/packages/harness/pyproject.toml`）
- `slack-sdk`、`python-telegram-bot`、`lark-oapi`、`wecom-aibot-python-sdk`（`backend/pyproject.toml`、`backend/app/channels/*.py`）
- `tavily-python`、`firecrawl-py`、`ddgs`、`duckdb`（`backend/packages/harness/pyproject.toml`）

**前端平台能力：**
- `better-auth`（鉴权，`frontend/src/server/better-auth/config.ts`）
- `@t3-oss/env-nextjs` + `zod`（环境变量校验，`frontend/src/env.js`）

**结论：**
- 依赖风险主要在第三方模型/搜索/IM SDK 的 API 兼容性；规划中应为这些“边缘适配层”预留回归验证。

## 配置体系

**应用配置：**
- 主配置：`config.yaml`（示例：`config.example.yaml`），支持 `$ENV_VAR` 解析（`backend/packages/harness/deerflow/config/app_config.py`）
- 扩展配置：`extensions_config.json`（MCP servers + skills 状态，`backend/packages/harness/deerflow/config/extensions_config.py`）

**前端配置：**
- 运行时环境校验：`frontend/src/env.js`
- 前端 API 基址解析：`frontend/src/core/config/index.ts`

**敏感配置文件存在性（仅记录存在，不读取值）：**
- 根目录 `.env`
- 前端 `frontend/.env`、`frontend/.env.example`

**结论：**
- 配置源分层清晰（主业务配置 + 扩展配置 + 前端 env）；新功能应优先扩展现有配置模型，不要散落新增私有配置文件。

## 平台与部署要求

**开发：**
- `make install` 安装前后端依赖（`Makefile`）
- `make dev` 一键启动（LangGraph + Gateway + Frontend + Nginx，见 `Makefile` 和 `backend/README.md`）

**生产/容器：**
- 前端 `next.config.js` 使用 `output: "standalone"`（`frontend/next.config.js`）
- 支持 Docker 部署脚本与编排目录（`docker/docker-compose.yaml`、`docker/docker-compose-dev.yaml`、`scripts/deploy.sh`、`scripts/docker.sh`）

**结论：**
- 默认目标是容器化/反向代理下的整套部署；后续规划应把“网关端口与反代路径一致性”作为上线前强校验项。

---

*栈分析完成于 2026-04-07（基于 `backend`、`frontend`、根目录构建脚本与配置文件的静态审计）*
