本科毕业设计项目 | 2026 届
本系统采用统一消息总线 + Pipeline 编排的多智能体协作架构,实现从需求分析到代码生成再到自动审查的全流程自动化。系统包含助手、规划、编码、审查等核心智能体,通过统一能力注册表互相协作,支持 YAML 配置驱动的 Pipeline 编排,并配备长期记忆系统(情景/语义/程序三种记忆类型)。
前后端分离设计:后端基于 FastAPI + Python asyncio,前端基于 React + TypeScript + Vite,通过 REST API 和 WebSocket 实时通信。
本项目的差异化定位不是单个固定聊天机器人,而是一个可进化的私人助理运行时:
- 主 Agent 调度子 Agent:
assistant是主控 Agent,planner、coder、reviewer等子 Agent 会被包装成标准 Tool,主 Agent 可按需委派任务。 - Agent 即能力:系统通过
AgentCapability将任意 Agent 注册到统一能力注册表,因此 Pipeline 和其他 Agent 不需要区分“工具”还是“智能体”。 - 运行时装载新 Tool:新增
DynamicToolCapability,支持template、checklist、regex_extract三种安全动态工具,可通过 API/前端创建,无需写 Python 插件。 - 能力热挂载:动态 Tool 创建后可立即挂载到
assistant或其他 Agent,并触发 Agent 热重载。 - Tool 提示词可视化配置:网页可直接修改暴露给 LLM 的 Tool 提示词,JSON Schema 只读,避免误改工具入参协议。
- 进化中心可视化:前端新增“进化中心”,展示 Agent-Tool 能力网络、主 Agent 委派关系、动态 Tool 库和子 Agent 创建入口。
| 分类 | 技术 | 版本 |
|---|---|---|
| 后端框架 | FastAPI | ≥ 0.100 |
| ASGI 服务器 | Uvicorn | ≥ 0.20 |
| 数据验证 | Pydantic | ≥ 2.0 |
| LLM - OpenAI | openai SDK | ≥ 1.0 |
| LLM - Anthropic | anthropic SDK | ≥ 0.20 |
| 配置管理 | PyYAML | ≥ 6.0 |
| 日志 | structlog | ≥ 23.0 |
| 向量数据库 | ChromaDB | 可选 |
| 前端框架 | React | 18.x |
| 前端语言 | TypeScript | 5.3+ |
| 构建工具 | Vite | 5.x |
| 运行时 | Python 3.10+ / Node.js 18+ |
agentic-system/
├── config/ # YAML 配置 (agents/pipelines/capabilities/system)
├── backend/
│ ├── src/
│ │ ├── agents/ # 4 个智能体 (assistant/planner/coder/reviewer)
│ │ ├── api/ # FastAPI 应用 (routes/websocket/schemas/dependencies)
│ │ ├── core/ # 核心框架
│ │ │ ├── bus/ # 统一消息总线 (UnifiedBus)
│ │ │ ├── memory/ # 长期记忆系统
│ │ │ ├── capability/ # 能力插件系统
│ │ │ ├── pipeline/ # Pipeline 编排器
│ │ │ ├── context/ # 上下文管理
│ │ │ ├── llm/ # LLM 客户端 (OpenAI/Anthropic)
│ │ │ └── config.py # 配置管理
│ │ ├── capabilities/builtin/ # 完整能力实现 (代码解析/静态分析/测试运行)
│ │ └── utils/ # 日志 + 追踪
│ ├── tests/ # 测试 (unit + integration)
│ └── requirements.txt
├── frontend/
│ └── src/
│ ├── components/ # 9 个面板 (Chat/Agent/Task/Pipeline/Memory/Monitor/Evolution/Settings/Sidebar)
│ ├── hooks/ # WebSocket Hook
│ ├── store/ # 全局状态管理
│ └── api/ # API 客户端
├── docs/ # 项目文档 (architecture/api/deployment/bus-design)
├── CLAUDE.md # 架构设计文档 (详细)
├── QUICKSTART.md # 快速开始指南
├── HANDOFF.md # 交接文档
└── README.md # ← 本文件
- AssistantAgent — 对话助手,集成记忆检索,支持上下文感知对话
- PlannerAgent — 任务规划,将需求分解为可执行的子任务列表 (结构化 JSON)
- CoderAgent — 代码生成,结构化输出(文件名 + 代码 + 说明)
- ReviewerAgent — 代码审查,六维度评估(正确性/安全性/可维护性/性能/最佳实践/错误处理)
- Agent-as-Tool — 任意 Agent 可被包装成 Capability,供主 Agent 或其他 Agent 调用
- UnifiedBus — 统一消息总线,支持发布/订阅、请求/响应、广播、点对点
- 优先级队列、消息历史、运行指标统计
- Pipeline 执行过程可通过总线广播 step_started / step_completed 等监控事件
- 三种记忆类型:情景记忆 / 语义记忆 / 程序性记忆
- 双后端存储:InMemory + ChromaDB(向量数据库,可选)
- 多信号加权检索(相关性 + 重要性 + 时间衰减 + 访问频率)
- 记忆巩固(去重合并)+ 记忆遗忘(时间衰减)
- 完整 REST API:CRUD + 搜索 + 巩固 + 遗忘
- 能力抽象接口 + JSON Schema 描述
- 内置能力:代码解析器 (AST)、静态分析器、测试运行器
- 常规助理工具:
calculator、datetime_tool、web_fetch、file_search、json_tool、text_processor - 工作区工具:
read_file、write_file、bash(默认关闭,需显式启用)。默认工作区为项目根目录下./workspace,bash 默认在该目录执行,工具生成的临时/中间产物默认落在该目录。 - 能力注册中心,支持动态加载
- 动态能力:通过配置/API 创建
template、checklist、regex_extractTool,并热挂载到 Agent - Tool 提示词管理:可编辑 LLM-facing prompt,JSON Schema 只读
- 顺序执行、并行执行、YAML 配置驱动
- 预定义 Pipeline 模板(规划→编码→审查→修复)
- 分层上下文存储(全局/会话/智能体三层)
- 对话响应只回发到当前连接,避免不同浏览器会话互相串消息
- Pipeline 监控事件单独广播到监控面板,不混入聊天回复
- 所有推送消息统一附带时间戳,便于前端事件流展示
- ChatPanel — 聊天气泡界面,显示记忆使用指示
- AgentPanel — 智能体状态查看与直接调用
- TaskPanel — 任务提交与状态跟踪
- PipelinePanel — 管线模板选择与执行
- MemoryPanel — 记忆统计/列表/搜索/创建/删除
- MonitorPanel — 系统状态可视化
- Settings — LLM 配置面板(支持热重载)
- Sidebar — 侧边栏导航
- EvolutionPanel — 进化中心:能力网络可视化、动态 Tool 创建、子 Agent 创建
- YAML 配置体系 (5 个配置文件 + 动态加载 + fallback)
- 统一日志系统 (structlog)
- 调用追踪器 (Tracer/Span)
- Pydantic 类型安全配置
- Python 3.10+
- Node.js 18+
- npm
git clone <repo-url>
cd agentic-system# 创建虚拟环境 (推荐)
cd backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 配置 LLM (任选其一)
# 方式 1: 编辑配置文件
cp config.example.yaml src/config.yaml
# 编辑 src/config.yaml,填入 LLM API Key
# 方式 2: 环境变量
export LLM_PROVIDER=openai
export LLM_API_KEY=sk-your-key
export LLM_MODEL=gpt-4
# 启动后端 (二选一)
cd src && python -m api.main
# 或
cd src && uvicorn api.main:app --host 127.0.0.1 --port 8001 --reload后端将在 http://localhost:8001 启动。
cd frontend
npm install
npm run dev前端将在 http://localhost:3000 启动。
| 地址 | 说明 |
|---|---|
| http://localhost:3000 | 前端界面 |
| http://localhost:8001/docs | Swagger API 文档 |
| http://localhost:8001/api/health | 健康检查 |
| ws://localhost:8001/ws | WebSocket 实时通信 |
前端 运行 / Agent Run 答辩演示台 提供一键 Demo 入口,适合毕业设计现场快速展示:
- 预设任务包括小型 Flask API、Python 工具函数、CSV 数据处理脚本。
- 点击“一键演示”后会创建 Agent Run,并展示 run_id、agent、workspace、status 和耗时。
- 展开 Run 可查看 transcript 时间线:created、started、流式生成片段、tool_call/tool_result、done/error 等事件。
- Run 完成后可展开最终输出,用于讲解生成代码、运行命令和验收方式。
- 答辩材料、Mermaid 架构图和讲稿见
docs/demo/DEFENSE_MATERIALS.md;现场验收步骤见docs/demo/DEMO_ACCEPTANCE_2026-05-11.md。
该 Demo 主要用于说明多智能体协作、工具能力、长期记忆上下文和运行过程可观测性,不依赖额外前端插件。
# 后端单元 + 集成测试
python3 -m pytest backend/tests/ -q
# 真实 LLM 冒烟验证(建议日常回归优先使用)
python3 tests/api_live_test.py --suite smoke
# 真实 LLM 全量 API 验证
python3 tests/api_live_test.py--suite smoke 会优先验证最关键的真实链路:
/api/agents/assistant/invoketask_decompose_and_executecode_generation_and_review- WebSocket 连通性
如果在 Windows 终端运行 live 脚本时遇到编码问题,可先设置:
$env:PYTHONUTF8='1'
$env:PYTHONIOENCODING='utf-8'backend/src/config.yaml 现在只作为本地运行时覆盖项,适合放未提交的个人配置;实际加载优先级为:
config/*.yamlbackend/src/config.yaml- 环境变量
敏感信息请优先使用环境变量注入,避免把真实密钥提交到仓库。
llm:
provider: openai # openai 或 anthropic
model: gpt-4 # 模型名称
api_key: sk-xxx # API Key (建议用环境变量 LLM_API_KEY)
base_url: "" # 自定义 API 端点 (可选)
memory:
backend: "chroma" # 默认 ChromaDB 持久化;开发测试可改 "memory"
persist_dir: "./data/chroma"
reflection_min_turns: 3 # 默认累计 3 轮后反思;显著偏好/待办/项目决策可提前触发
reflection_max_messages: 12对话记忆现在不是只靠 /api/memory/create 手动写入:REST chat、SSE stream 和
WebSocket 流式聊天会在完整回复结束后后台追加到反思缓冲,默认累计后生成结构化
记忆;如果用户明确说“记住/以后默认/我喜欢/待办/需求变更”等显著长期信息,会
提前触发。下一次生成前会
检索相关记忆,并以「不可信资料」方式注入上下文。可用以下脚本验证持久化闭环:
python scripts/verify_memory_persistence.py| 文件 | 用途 |
|---|---|
config/agents.yaml |
智能体定义 (名称/类型/能力) |
config/pipelines.yaml |
Pipeline 模板 |
config/capabilities.yaml |
能力插件 |
config/system.yaml |
全局系统配置 |
补充说明:
- 默认服务监听地址已收紧为
127.0.0.1 bash工具默认关闭,只有在显式设置ENABLE_SHELL_TOOL=true时才允许使用;启用后默认 cwd 是项目根目录下./workspace,可用tools.file.workspace_root/AGENTIC_WORKSPACE_ROOT改为显式目录。
| 变量 | 说明 |
|---|---|
LLM_PROVIDER |
LLM 提供商 (openai/anthropic) |
LLM_API_KEY |
LLM API Key |
LLM_MODEL |
模型名称 |
LLM_BASE_URL |
自定义 API 端点 |
MEMORY_BACKEND |
记忆后端 (memory/chroma) |
# 全部测试
python3 -m pytest backend/tests/ -q
# 单元测试
python3 -m pytest backend/tests/unit/ -v
# 集成测试
python3 -m pytest backend/tests/integration/ -v
# 查看详细输出
python3 -m pytest backend/tests/ -v --tb=short| 模块 | 文件 | 覆盖范围 |
|---|---|---|
| 消息总线 | test_bus.py |
SimpleBus / UnifiedBus / 频道 / 路由 |
| 智能体 | test_agent_system.py |
基类 / 生命周期 / 注册中心 |
| 能力系统 | test_capability.py |
代码解析 / 静态分析 / 注册 |
| 常规工具 | test_common_tools.py |
计算 / 时间 / 网页读取 / 文件搜索 / JSON / 文本处理 |
| 配置管理 | test_config.py |
配置加载 / 环境变量 / YAML 合并 |
| 上下文 | test_context.py |
分层存储 |
| 记忆系统 | test_memory.py |
存储 / 检索 / 巩固 / 遗忘 |
| Pipeline | test_pipeline.py |
顺序 / 并行 / 条件 / 超时执行 |
| 任务注册 | test_task_registry.py |
任务状态、排序、取消 |
| Transcript | test_transcript_writer.py |
任务事件落盘 |
| Live 脚本契约 | test_api_live_script.py |
本地验收脚本端点契约 |
| 集成-API | test_api.py |
REST API 端点 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/agents |
列出所有已注册智能体 |
| GET | /api/agents/{name} |
获取特定智能体详情 |
| POST | /api/agents/{name}/invoke |
直接调用某个智能体 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/tasks |
提交新任务 |
| GET | /api/tasks |
列出所有任务 |
| GET | /api/tasks/{task_id} |
获取任务详情 |
| DELETE | /api/tasks/{task_id} |
取消/删除任务 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/pipelines/templates |
获取预定义 Pipeline 模板 |
| POST | /api/pipelines/execute |
执行 Pipeline |
| POST | /api/pipelines |
创建 Pipeline 模板 |
| PUT | /api/pipelines/{name} |
更新 Pipeline 模板 |
| DELETE | /api/pipelines/{name} |
删除 Pipeline 模板 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/memory/stats |
记忆统计 |
| GET | /api/memory/list |
列出记忆 (支持类型过滤) |
| POST | /api/memory/search |
搜索记忆 |
| POST | /api/memory/create |
创建记忆 |
| DELETE | /api/memory/{memory_id} |
删除记忆 |
| POST | /api/memory/consolidate |
触发记忆巩固 |
| POST | /api/memory/forget |
触发记忆遗忘 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/config |
获取当前配置 (隐藏 API Key) |
| POST | /api/config |
更新配置并热重载 |
| GET | /api/health |
健康检查 |
| 路径 | 说明 |
|---|---|
ws://localhost:8001/ws |
实时通信端点 |
| 面板 | 功能说明 |
|---|---|
| 聊天面板 | 用户与 AI 的对话界面,显示聊天气泡,支持记忆使用指示 |
| 智能体面板 | 列出所有已注册的智能体,查看状态和能力列表,可直接调用 |
| 任务面板 | 提交开发需求,触发 规划→编码→审查 流水线,跟踪任务状态 |
| 管线面板 | 选择预设 Pipeline 模板 (如完整流水线),配置参数后执行 |
| 记忆面板 | 查看记忆统计 (三种类型分布),列表浏览,搜索,手动创建/删除 |
| 监控面板 | 系统实时状态,WebSocket 连接状态,事件流日志 |
| 设置面板 | LLM 提供商切换,API Key 配置,模型选择,自定义 base_url |
| 指标 | 数值 |
|---|---|
| 源代码文件 | ~109 个 (82 Python + 16 TS/TSX + 11 CSS) |
| 后端代码行数 | ~8,300 行 |
| 前端代码行数 | ~5,100 行 |
| 测试代码行数 | ~4,900 行 |
| 测试用例 | 550 个 |
| 测试模块 | 16 个 |
| REST API 端点 | 31 个 |
| 前端面板 | 9 个 |
| YAML 配置文件 | 6 个 |
| 文档 | 说明 |
|---|---|
CLAUDE.md |
架构设计文档 (详细,面向 AI 和开发者) |
README.md |
项目说明 (面向用户和评审) |
QUICKSTART.md |
5 分钟快速上手 |
HANDOFF.md |
交接文档 (状态概览 + 下一步) |
PROGRESS.md |
开发进度追踪 |
docs/architecture.md |
系统架构 |
docs/api.md |
API 端点详细文档 |
docs/bus-design.md |
消息总线设计 |
docs/deployment.md |
部署指南 |
- 所有改动遵循「先文档 → 再编码 → 再验收」流程
- Python: PEP 8 + 类型注解 + Google 风格 docstring
- TypeScript: 严格模式 + 函数式组件
- 提交: Conventional Commits 规范
- 架构变动须同步更新
CLAUDE.md和相关文档