6.1 KiB
6.1 KiB
技术栈(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)
前端核心:
next16(App Router)+react19(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、根目录构建脚本与配置文件的静态审计)