# agv **Repository Path**: hxiaozhang/agv ## Basic Information - **Project Name**: agv - **Description**: caomagv - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-20 - **Last Updated**: 2026-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 草莓温室智能管控平台 ## 这是什么 一个专门为草莓温室种植打造的 AI 智能管控平台。它接入了温室内的空气传感器、土壤传感器和执行器设备,由 AI 智能体实时分析环境数据,自主做出调控决策,并直接操作设备执行。平台覆盖了从环境监测、生长追踪、成熟度分析到采收调度的完整种植流程,帮助温室管理者实现精准化、自动化的草莓种植管理。 ## 它能做什么 ### 实时环境监测与预警 平台实时采集温室内空气温湿度、CO2 浓度、光照强度、土壤 pH 值、EC 值、氮磷钾含量等多项指标,与草莓各生长阶段的适宜参数自动对比。当某项指标偏离正常范围时,AI 会标记预警并给出具体调控建议。 ### AI 自动控制设备 温室内的风机、湿帘、通风窗、循环泵等执行器可以通过平台手动控制,也可以切换到 AI 模式。在 AI 模式下,智能体每 60 秒自动巡检一次环境数据,当发现温度偏高时自动开启风机和湿帘降温,CO2 偏低时自动补充,光照不足时发出提醒 —— 实现无人值守的闭环管控。 ### 生长全周期管理 从花芽分化、开花、膨果、转色到采收,每个阶段都有对应的 AI 子智能体提供养护建议。系统记录每个棚区的生长阶段、环境变化和农事操作历史,形成完整的生长档案。 ### 成熟度扫描与采收调度 对接循迹小车自动扫描各棚区草莓成熟度,统计识别数量和成熟比例。管理者可以自定义采摘阈值,当某区域成熟度达标后,系统自动提示派发采摘小车并生成分区采收计划。 ### 全局 AI 助手 平台右下角有一个悬浮的草莓小球,点击后从侧面滑出对话窗口。用户可以随时向 AI 提问——"B 区温度为什么偏高"、"今天需要采摘哪些区域"、"最近一周的生长趋势如何"——AI 会根据实时传感器数据、知识库文档和历史记录综合回答。回复过程中可以看到 AI 调用了哪些工具、查阅了哪些知识库文档,引用的信息来源都可以点击查看原文摘录。 ### 知识库 RAG 检索 支持上传草莓种植技术文档、病虫害防治手册、施肥指南等资料构建知识库。AI 在回答问题时会自动检索相关知识库内容,所有回答都带引用标注,可以追溯每一条建议的来源依据。 ## 智能体分工 平台设有 1 个总决策智能体和 6 个专业子智能体,各司其职: | 智能体 | 职责 | | --- | --- | | 温室总管 | 统筹调度,根据问题类型分派给合适的子智能体 | | 仪表盘分析员 | 分析驾驶舱环境数据,生成每日调控建议和预警 | | IoT 管控员 | 管理物联网设备,AI 模式下直接控制执行器 | | 天气分析员 | 获取和分析天气数据,评估对温室的影响 | | 生长顾问 | 跟踪草莓生长阶段,提供养护和农事建议 | | 成熟度分析员 | 分析循迹小车扫描数据,生成分区采摘建议 | | 种植顾问 | 制定采收调度方案和种植决策 | 每个页面的顶部可以切换管辖该页面的子智能体。悬浮球中的 AI 对话由温室总管自动判断问题的性质,调度最合适的子智能体来回答。 ## 页面一览 - **草莓驾驶舱** —— 温室整体态势,环境指标卡片,AI 每日建议 - **智能温室物联网** —— 传感器实时数据,执行器手动/AI 控制面板 - **生长档案** —— 各棚区生长阶段记录,AI 养护建议 - **成熟度管理中心** —— 小车扫描记录,成熟度统计,采摘建议 - **采收调度** —— 采收任务派发与执行追踪 - **AI 决策日志** —— 全平台 AI 对话历史,决策追溯 ## 移动端(uni-app) 平台附带基于 uni-app(Vue 3 + Vite)的移动端 H5 应用,代码位于 `mobile/`,面向小屏设备提供草莓驾驶舱、物联网控制、生长档案、成熟度、采收调度与 AI 对话等核心能力,与 Web 端共用同一后端,数据互通。 启动(随 `docker compose up -d --build` 一并启动 `mobile-dev` 容器): 1. 浏览器打开 `http://localhost:5174` 2. 手机安装包使用 HBuilderX 打包,详见 `mobile/README.md` ## 项目结构 以下为完整项目结构,每个文件均附中文说明: ### backend/ — FastAPI 后端(Python 3.12 + uv) ``` backend/ ├── server/ # Web 应用入口与 HTTP 适配层 │ ├── main.py # FastAPI 入口:创建应用、注册中间件、挂载 /api 路由 │ ├── worker_main.py # ARQ 后台任务 worker 入口(由 worker-dev 容器运行) │ ├── routers/ # HTTP 路由边界(一个文件一个领域) │ │ ├── __init__.py # 路由汇总注册 │ │ ├── agent_router.py # 智能体(Agent)配置与运行接口 │ │ ├── auth_dept_router.py # 部门(组织)管理接口 │ │ ├── auth_router.py # 登录 / 注册 / JWT / 鉴权接口 │ │ ├── chat_router.py # 对话 / 聊天接口 │ │ ├── dashboard_router.py # 仪表盘统计接口 │ │ ├── filesystem_router.py # 文件系统(智能体可见)接口 │ │ ├── graph_router.py # 知识图谱接口 │ │ ├── iot_router.py # 物联网设备 / 传感器接口 │ │ ├── knowledge_eval_router.py# 知识库检索评估(RAG eval)接口 │ │ ├── knowledge_router.py # 知识库管理接口 │ │ ├── mcp_router.py # MCP 工具/服务接口 │ │ ├── mention_router.py # @提及 智能体检索接口 │ │ ├── model_provider_router.py# 模型 Provider 配置接口 │ │ ├── skill_router.py # Skill(技能)管理接口 │ │ ├── system_router.py # 系统健康 / 版本 / 配置接口 │ │ ├── system_task_router.py # 后台任务中心接口 │ │ ├── tool_router.py # 工具注册与查询接口 │ │ ├── user_router.py # 用户管理接口 │ │ └── workspace_router.py # 工作区接口 │ └── utils/ # Web 层通用能力 │ ├── __init__.py │ ├── access_log_middleware.py# 访问日志中间件 │ ├── auth_middleware.py # JWT 鉴权中间件 │ ├── common_utils.py # 通用工具(分页、响应等) │ └── lifespan.py # 应用启动/关闭生命周期(初始化 DB、内置智能体等) ├── package/ # 可复用业务包(作为独立 Python 包发布) │ ├── pyproject.toml # 后端包依赖声明 │ ├── uv.lock # 依赖锁文件 │ ├── MANIFEST.in # 打包包含文件清单 │ ├── README.md # 业务包说明 │ └── yuxi/ # 主业务包 │ ├── main.py # 业务包入口(模块导出) │ ├── agents/ # LangGraph 智能体体系 │ │ ├── __init__.py │ │ ├── base.py # BaseAgent 基类 │ │ ├── context.py # BaseContext 运行配置上下文 │ │ ├── models.py # 智能体数据模型 │ │ ├── state.py # LangGraph 状态定义 │ │ ├── backends/ # 智能体运行后端 │ │ │ ├── __init__.py │ │ │ ├── composite.py # 组合后端 │ │ │ ├── knowledge_base_backend.py # 知识库后端 │ │ │ ├── skills_backend.py # Skills 后端 │ │ │ └── sandbox/ # 沙盒执行后端 │ │ ├── buildin/ # 内置智能体 │ │ │ ├── __init__.py │ │ │ ├── chatbot/ # 默认 Chatbot 智能体(graph/context/prompt/state) │ │ │ └── subagent/ # 子智能体(委派任务) │ │ ├── mcp/ # MCP 集成 │ │ │ ├── __init__.py │ │ │ ├── repository.py # MCP 配置存取 │ │ │ └── service.py # MCP 服务封装 │ │ ├── middlewares/ # 运行时中间件(能力挂载) │ │ │ ├── __init__.py │ │ │ ├── attachment.py # 附件中间件 │ │ │ ├── context.py # 上下文中间件 │ │ │ ├── dynamic_tool.py # 动态工具中间件 │ │ │ ├── knowledge_base.py # 知识库中间件 │ │ │ ├── skills.py # Skills 中间件 │ │ │ ├── subagent_task.py# 子智能体任务中间件 │ │ │ └── summary.py # 对话摘要中间件 │ │ ├── skills/ # Skill 管理 │ │ │ ├── __init__.py │ │ │ ├── remote_install.py # 远程安装 Skill │ │ │ ├── repository.py # Skill 存取 │ │ │ ├── service.py # Skill 服务 │ │ │ └── buildin/ # 内置 Skills │ │ └── toolkits/ # 工具注册与内置工具 │ │ ├── __init__.py │ │ ├── registry.py # 工具注册表 │ │ ├── service.py # 工具服务 │ │ ├── utils.py # 工具工具函数 │ │ ├── buildin/ # 内置工具集 │ │ ├── debug/ # 调试类工具 │ │ ├── iot/ # IoT 设备控制工具 │ │ └── kbs/ # 知识库查询工具 │ ├── config/ # 应用配置 │ │ ├── __init__.py │ │ ├── app.py # Config 类(读取环境变量) │ │ └── static/ # 静态配置 │ │ ├── bad_keywords.txt # 敏感词表 │ │ └── info.template.yaml # 内置模型信息模板 │ ├── iot/ # 物联网领域 │ │ ├── __init__.py │ │ ├── mqtt_client.py # MQTT 客户端(设备消息) │ │ └── schemas.py # IoT 数据结构 │ ├── knowledge/ # 知识库与图谱领域 │ │ ├── __init__.py │ │ ├── base.py # 知识库基类 │ │ ├── factory.py # 知识库工厂 │ │ ├── manager.py # KnowledgeBaseManager │ │ ├── schemas.py # 知识库数据结构 │ │ ├── chunking/ # 文档分块 │ │ │ ├── __init__.py │ │ │ └── ragflow_like/ # Ragflow 风格分块实现 │ │ ├── eval/ # RAG 评估 │ │ │ ├── __init__.py │ │ │ ├── benchmark_generation.py # 评测集生成 │ │ │ ├── evaluator.py # 评估器 │ │ │ ├── metrics.py # 评估指标 │ │ │ └── service.py # 评估服务 │ │ ├── graphs/ # 知识图谱构建 │ │ │ ├── __init__.py │ │ │ ├── graph_utils.py # 图谱工具 │ │ │ ├── milvus_graph_service.py # Milvus 图谱服务 │ │ │ ├── milvus_graph_vector_store.py # Milvus 图谱向量存储 │ │ │ └── extractors/ # 实体/关系抽取器 │ │ ├── implementations/ # 知识库实现 │ │ │ ├── __init__.py │ │ │ ├── dify.py # Dify 知识库 │ │ │ ├── milvus.py # Milvus 知识库 │ │ │ ├── notion.py # Notion 知识库 │ │ │ └── read_only_connectors.py # 只读连接器 │ │ ├── parser/ # 文档解析 │ │ │ ├── __init__.py │ │ │ ├── base.py # 解析基类 │ │ │ ├── factory.py # 解析工厂 │ │ │ ├── unified.py # 统一解析入口 │ │ │ ├── mineru.py # MinerU 解析 │ │ │ ├── mineru_official.py # MinerU 官方 API │ │ │ ├── deepseek_ocr.py # DeepSeek OCR │ │ │ ├── pp_structure_v3.py # PaddleX 版面解析 │ │ │ ├── rapid_ocr.py # RapidOCR │ │ │ └── zip_utils.py # ZIP 处理 │ │ └── utils/ # 知识库工具 │ │ ├── __init__.py │ │ ├── kb_utils.py # 知识库工具函数 │ │ ├── mindmap_utils.py# 思维导图工具 │ │ ├── sample_question_utils.py # 示例问题工具 │ │ ├── url_fetcher.py # URL 抓取 │ │ └── url_validator.py# URL 校验 │ ├── models/ # 模型适配 │ │ ├── __init__.py │ │ ├── chat.py # 对话模型适配 │ │ ├── embed.py # Embedding 模型适配 │ │ ├── rerank.py # Rerank 模型适配 │ │ └── providers/ # 模型 Provider │ │ ├── __init__.py │ │ ├── builtin.py # 内置 Provider │ │ ├── cache.py # 模型缓存 │ │ ├── repository.py # Provider 配置存取 │ │ └── service.py # Provider 服务 │ ├── repositories/ # 数据库访问边界 │ │ ├── __init__.py │ │ ├── agent_repository.py # 智能体存取 │ │ ├── agent_run_repository.py # 智能体运行记录存取 │ │ ├── conversation_repository.py # 会话存取 │ │ ├── department_repository.py # 部门存取 │ │ ├── evaluation_repository.py # 评估记录存取 │ │ ├── knowledge_base_repository.py# 知识库存取 │ │ ├── knowledge_chunk_repository.py# 知识块存取 │ │ ├── knowledge_file_repository.py# 知识文件存取 │ │ ├── knowledge_graph_repository.py# 知识图谱存取 │ │ ├── message_feedback_repository.py # 消息反馈存取 │ │ ├── task_repository.py # 任务存取 │ │ └── user_repository.py # 用户存取 │ ├── services/ # 用例层(业务编排) │ │ ├── agent_run_service.py # 智能体运行服务 │ │ ├── agent_runtime_service.py # 智能体运行时服务 │ │ ├── chat_service.py # 对话服务 │ │ ├── conversation_service.py # 会话服务 │ │ ├── feedback_service.py # 反馈服务 │ │ ├── file_preview.py # 文件预览 │ │ ├── iot_service.py # IoT 服务 │ │ ├── langfuse_service.py # Langfuse 观测集成 │ │ ├── mention_search_service.py # @提及 检索服务 │ │ ├── oidc_service.py # OIDC 第三方登录 │ │ ├── operation_log_service.py # 操作日志 │ │ ├── run_queue_service.py # 运行队列 │ │ ├── run_worker.py # Worker 设置 │ │ ├── task_service.py # 任务服务 │ │ ├── thread_files_service.py # 线程文件服务 │ │ ├── user_identity_service.py # 用户身份服务 │ │ ├── viewer_filesystem_service.py # 查看器文件系统服务 │ │ └── workspace_service.py # 工作区服务 │ ├── storage/ # 持久化基础设施 │ │ ├── postgres/ # PostgreSQL │ │ │ ├── manager.py # 连接池管理 │ │ │ ├── models_business.py # 业务表模型 │ │ │ └── models_knowledge.py # 知识库表模型 │ │ ├── minio/ # MinIO 对象存储 │ │ │ ├── __init__.py │ │ │ ├── client.py # MinIO 客户端 │ │ │ └── utils.py # 对象存储工具 │ │ └── neo4j/ # Neo4j 图数据库 │ │ ├── __init__.py │ │ └── manager.py # Neo4j 管理器 │ └── utils/ # 跨领域通用工具 │ ├── __init__.py │ ├── auth_utils.py # 认证工具 │ ├── datetime_utils.py # 时间工具 │ ├── guard.py # 类型守卫 │ ├── image_processor.py # 图片处理 │ ├── logging_config.py # 日志配置 │ ├── paths.py # 路径工具 │ ├── question_utils.py # 问题工具 │ ├── share_config.py # 分享配置 │ ├── singleton.py # 单例模式 │ ├── subagent_thread_utils.py # 子智能体线程工具 │ └── upload_utils.py # 上传工具 ├── scripts/ # 后端辅助脚本 │ ├── mqtt_monitor.py # MQTT 设备消息监控 │ └── seed_initial_users.py # 初始化默认用户 ├── test/ # 测试 │ ├── conftest.py # pytest 公共夹具 │ ├── run_tests.sh # 测试运行脚本 │ ├── .env.test.example # 测试环境变量示例 │ ├── api/ # API 层测试(__init__.py) │ ├── data/ # 测试数据(xlsx / png / docx / pptx / txt / jsonl / csv 样例文件) │ ├── e2e/ # 端到端测试(智能体、附件、子智能体、文件系统) │ ├── integration/ # 集成测试(api/ 各路由、services/ 模型连通性) │ └── unit/ # 单元测试(agents / backends / graphs / knowledge / middlewares / plugins / repositories / routers / server / services / storage / toolkits / utils) ├── .gitignore # Python 忽略规则 ├── .python-version # Python 版本固定 ├── pyproject.toml # 后端依赖与工具配置 └── uv.lock # 后端依赖锁文件 ``` ### web/ — PC 端前端(Vue 3 + Vite) ``` web/ ├── public/ # 静态资源(不经打包) │ ├── images/Strawberry/ # 草莓业务配图(8 张:驾驶舱、生长阶段、采收等场景图) │ ├── protocols/ # 协议模板 │ │ ├── privacy-policy.template.html # 隐私政策模板 │ │ └── user-agreement.template.html # 用户协议模板 │ ├── avatar.jpg # 默认头像 │ ├── favicon.svg # 站点图标 │ ├── image.png # 通用占位图 │ └── login-bg.jpg # 登录页背景图 ├── src/ # 源码 │ ├── main.js # 应用入口(挂载 Vue 实例) │ ├── App.vue # 根组件 │ ├── apis/ # 后端接口封装(唯一推荐入口) │ │ ├── base.js # 请求基类:鉴权、错误处理 │ │ ├── index.js # 接口统一导出 │ │ ├── agent_api.js # 智能体接口 │ │ ├── agent_env_api.js # 智能体环境接口 │ │ ├── apikey_api.js # API Key 管理接口 │ │ ├── auth_api.js # 登录/认证接口 │ │ ├── dashboard_api.js # 仪表盘接口 │ │ ├── department_api.js # 部门接口 │ │ ├── graph_api.js # 知识图谱接口 │ │ ├── iot_api.js # 物联网接口 │ │ ├── knowledge_api.js # 知识库接口 │ │ ├── mcp_api.js # MCP 接口 │ │ ├── mention_api.js # @提及 接口 │ │ ├── skill_api.js # Skill 接口 │ │ ├── system_api.js # 系统接口 │ │ ├── tasker.js # 任务中心接口 │ │ ├── tool_api.js # 工具接口 │ │ ├── user_api.js # 用户接口 │ │ ├── viewer_filesystem.js # 文件系统(查看器)接口 │ │ └── workspace_api.js # 工作区接口 │ ├── assets/ # 静态资源 │ │ ├── css/ # 全局样式 │ │ │ ├── base.css # 基础样式变量 │ │ │ ├── base.dark.css # 暗色主题基础 │ │ │ ├── main.css # 主样式 │ │ │ ├── dashboard.css # 仪表盘样式 │ │ │ ├── shorts.css # 短样式工具类 │ │ │ ├── sigma.css # 图谱(sigma)样式 │ │ │ ├── animations.less # 动画 │ │ │ ├── code-highlight.less # 代码高亮 │ │ │ ├── extension-detail.less # 扩展详情样式 │ │ │ ├── extensions.less # 扩展管理样式 │ │ │ └── model-selector-common.less # 模型选择器样式 │ │ ├── defaults/agent.png # 默认智能体头像 │ │ └── icons/ # 图标(sidebar_left.svg / sidebar_right.svg / files/) │ ├── components/ # 可复用 UI 组件 │ │ ├── common/ # 通用组件(FileTypeIcon、MarkdownPreview、MentionTextRenderer) │ │ ├── dashboard/ # 仪表盘组件(AgentStats、CallStats、FeedbackModal、KnowledgeStats、StatsOverview、ToolStats、UserStats) │ │ ├── extensions/ # 扩展管理(ExtensionCardGrid、ExtensionDetailLayout、ExtensionToolbar、McpCardList、McpDetailView、McpFormModal、SkillCardList、SkillDetailView、ToolsCardList) │ │ ├── modals/ # 弹窗(BenchmarkGenerateModal、BenchmarkUploadModal) │ │ ├── model-management/ # 模型管理(AgentManagePanel、ModelProviderManagePanel) │ │ ├── shared/ # 共享组件(InfoCard、PageHeader、PageShoulder、ResourceEmptyState) │ │ ├── sources/ # 来源展示(KbChunkDetailModal、KbResultGroupedList、WebSearchResultList) │ │ ├── ToolCallingResult/ # 工具调用渲染(BaseToolCall、ToolCallRenderer、toolRegistry、tools/ 各工具卡片) │ │ ├── workspace/ # 工作区(WorkspaceFileList、WorkspacePreviewPane、WorkspaceSidebar) │ │ └── (顶层 45 个组件:AgentChatComponent 对话主界面、MessageInputComponent 输入框、FloatingAgentBall 悬浮球、SettingsModal 设置、ThemeToggle 主题切换、MobileTabBar/MobileMoreSheet/MobileThreadHistorySheet 移动端壳层、TaskCenterDrawer 任务中心、ThreadMessageList 消息列表、HumanApprovalModal 审批、UserManagementComponent 用户管理、GraphCanvas/GraphDetailPanel 图谱、FileTreeComponent/FileTable/FileUploadModal 文件、KnowledgeGraphSection/KnowledgeSourceSection 知识、ModelSelectorComponent/EmbeddingModelSelector/RerankModelSelector 模型选择、RAGEvaluationTab 评估、SearchConfigModal/SearchConfigPanel 检索配置、StatusBar/HeaderComponent 状态栏与头部、AgentPanel/AgentInputArea/AgentMessageComponent/AgentArtifactsCard/AgentFilePreview 智能体对话、PageAgentDropdown 页头智能体切换、ApiKeyManagementComponent/DebugComponent/DepartmentManagementComponent/AccountSettingsComponent 设置与调试 等) │ ├── composables/ # 组合式逻辑 │ │ ├── useAgentMentionConfig.js # @提及 配置 │ │ ├── useAgentRunStream.js # 智能体运行流 │ │ ├── useAgentStreamHandler.js # 流式消息处理 │ │ ├── useAgentThreadState.js # 智能体线程状态 │ │ ├── useApproval.js # 审批逻辑 │ │ ├── useGraph.js # 图谱逻辑 │ │ ├── useMention.js # @提及 逻辑 │ │ ├── useMobileLayout.js # 移动端布局适配 │ │ ├── useModelStatus.js # 模型状态 │ │ └── useStreamSmoother.js # 流平滑 │ ├── data/strawberryData.js # 草莓业务静态数据 │ ├── layouts/ # 布局 │ │ ├── AppLayout.vue # 主布局(侧栏 + 头部 + 内容) │ │ └── BlankLayout.vue # 空白布局(登录页等) │ ├── router/index.js # 路由定义与权限守卫 │ ├── stores/ # Pinia 状态 │ │ ├── agent.js # 智能体配置状态 │ │ ├── chatThreads.js # 会话线程状态 │ │ ├── chatUI.js # 聊天 UI 状态 │ │ ├── citeSources.js # 引用来源状态 │ │ ├── config.js # 全局配置状态 │ │ ├── database.js # 知识库状态 │ │ ├── info.js # 系统信息状态 │ │ ├── pageAgent.js # 页面智能体状态 │ │ ├── tasker.js # 任务中心状态 │ │ ├── theme.js # 主题状态 │ │ └── user.js # 用户状态 │ ├── utils/ # 前端工具 │ │ ├── __tests__/ # 工具单元测试(messageProcessor、pixelAvatar、runStreamResume、subagentThread、svgRenderer) │ │ ├── agentConfigUtils.js # 智能体配置工具 │ │ ├── agentPanelAutoOpen.js # 面板自动展开 │ │ ├── agentValidator.js # 智能体配置校验 │ │ ├── chartColors.js # 图表配色 │ │ ├── chunk_presets.js # 分块预设 │ │ ├── chunkUtils.js # 分块工具 │ │ ├── errorHandler.js # 错误处理 │ │ ├── extensionDisplayName.js # 扩展显示名 │ │ ├── file_icon.js # 文件图标映射 │ │ ├── file_preview.js # 文件预览 │ │ ├── file_utils.js # 文件工具 │ │ ├── html.js # HTML 工具 │ │ ├── kb_utils.js # 知识库工具 │ │ ├── markdown_preview.js # Markdown 预览 │ │ ├── mention_icon_utils.js # @提及 图标工具 │ │ ├── mention_utils.js # @提及 工具 │ │ ├── messageGrouping.js # 消息分组 │ │ ├── messageProcessor.js # 消息处理 │ │ ├── modelIcon.js # 模型图标 │ │ ├── pixelAvatar.js # 像素头像 │ │ ├── questionUtils.js # 问题工具 │ │ ├── runStreamResume.js # 流恢复 │ │ ├── scrollController.js # 滚动控制 │ │ ├── subagentThread.js # 子智能体线程工具 │ │ ├── svgRenderer.js # SVG 渲染 │ │ ├── time.js # 时间工具 │ │ └── upload_limits.js # 上传限制 │ └── views/ # 页面级组件 │ ├── AgentView.vue # 智能体对话页 │ ├── DashboardView.vue # 管理仪表盘 │ ├── DataBaseInfoView.vue # 知识库详情页 │ ├── DataBaseView.vue # 知识库列表页 │ ├── EmptyView.vue # 空页面 │ ├── ExtensionsView.vue # 扩展管理页(MCP/Skill/工具) │ ├── HomeView.vue # 首页 │ ├── IndustrialIotView.vue # 智能温室物联网页 │ ├── LoginView.vue # 登录页 │ ├── ModelManageView.vue # 模型管理页 │ ├── OIDCCallbackView.vue # OIDC 登录回调页 │ ├── StrawberryAiLogView.vue # 草莓 AI 决策日志页 │ ├── StrawberryDashboardView.vue # 草莓驾驶舱页 │ ├── StrawberryGrowthView.vue # 生长档案页 │ ├── StrawberryHarvestDispatchView.vue # 采收调度页 │ ├── StrawberryMaturityCenterView.vue # 成熟度管理中心页 │ └── WorkspaceView.vue # 工作区页 ├── .gitignore # 前端忽略规则 ├── .prettierrc.json # 代码格式化配置 ├── eslint.config.js # ESLint 配置 ├── index.html # HTML 入口 ├── package.json # 前端依赖声明 ├── pnpm-lock.yaml # 依赖锁文件 └── vite.config.js # Vite 配置(代理 /api → 5050) ``` ### mobile/ — 移动端 App(uni-app / Vue 3 + Vite) ``` mobile/ ├── docker/ # 移动端容器内 Nginx 配置 │ └── nginx.conf # H5 构建产物用的 Nginx 站点配置 ├── public/ # H5 静态资源(构建时原样拷贝到产物根) │ └── static/ # 图片资源 │ ├── strawberry/ # 草莓主题配图(8 张:AI 助手、诊断场景、温室主视觉、生长阶段、采收品质、水培细节、传感器监控、分区总览) │ ├── harvest-preview.png # 采收预览图 │ ├── tab-active.png # 底部 Tab 选中态图标 │ └── tab.png # 底部 Tab 普通态图标 ├── scripts/ # 本地辅助脚本 │ ├── asr_server.py # Python 简易 ASR(语音转文字)HTTP 服务(调用 OpenAI Whisper,供小莓语音使用) │ └── pack-check.mjs # 打包前置检查:校验 package.json / pages.json / manifest.json / 9 个页面等必需文件是否齐全 ├── src/ # 源码 │ ├── api/ # 后端接口封装 │ │ ├── agent.js # 智能体接口:创建线程、运行智能体、拉取事件流、读取历史等 │ │ ├── iot.js # IoT 接口:驾驶舱数据、传感器、执行器手动/AI 控制、模式切换 │ │ └── system.js # 系统接口:登录、系统信息、配置查询等 │ ├── data/ │ │ └── strawberry.js # 草莓业务静态数据:棚区配置(A/B/C 区)、小车扫描记录、采摘阈值等 │ ├── pages/ # 页面(每页一个目录,共 9 个) │ │ ├── login/login.vue # 登录页:支持填写/保存后端 API 地址、测试连接后登录 │ │ ├── dashboard/dashboard.vue # 草莓驾驶舱:环境指标卡片、AI 每日建议、快捷入口 │ │ ├── iot/iot.vue # 智能物联:传感器实时数据、执行器手动/AI 控制面板 │ │ ├── agent/agent.vue # AI 对话:与温室总管对话,展示工具调用与引用来源 │ │ ├── voice/voice.vue # 小莓语音:语音唤醒、语音提问与语音播报 │ │ ├── maturity/maturity.vue # 成熟度:小车扫描记录、成熟度统计与采摘建议 │ │ ├── growth/growth.vue # 生长档案:各棚区生长阶段记录与 AI 养护建议 │ │ ├── harvest/harvest.vue # 采收调度:采收任务派发与执行追踪 │ │ └── more/more.vue # 我的:用户信息、API 地址设置、关于等 │ ├── static/ # App 打包资源副本(与 public/static 相同的 11 张图,供 App-PLUS 端引用) │ ├── store/ │ │ └── user.js # Pinia 用户状态:token、用户信息、角色、登录/登出 │ ├── utils/ # 工具层 │ │ ├── config.js # API 地址配置:App-PLUS 局域网地址、环境变量、本地存储的优先级解析 │ │ ├── request.js # uni.request 封装:自动带 token、错误处理、401 跳登录 │ │ ├── aiAnalyze.js # 与 PC Web 同原理的 AI 分析:建线程→运行智能体→SSE 流→历史→解析结论 │ │ ├── speech.js # 语音合成/识别播放封装(区分 App-PLUS 与 H5 能力差异) │ │ ├── speechSettings.js # 小莓语音偏好:系统/自定义音色、语速音调、唤醒灵敏度(本地持久化) │ │ └── wakeService.js # 全局语音唤醒服务:定时巡检、听到唤醒词后自动唤起小莓对话 │ ├── App.vue # 应用根组件:启动时恢复登录态与语音唤醒服务 │ ├── main.js # 应用入口:创建 Vue 实例并挂载 Pinia │ ├── manifest.json # uni-app 应用配置(实际生效副本:含 appid `__UNI__0D963B0`、App 打包设置) │ ├── pages.json # 页面注册与路由配置:9 个页面、全局样式、底部 TabBar │ └── uni.scss # uni-app 全局 SCSS 变量(当前为空文件,预留) ├── .dockerignore # Docker 构建忽略(node_modules、dist、.env、.git 等) ├── .env.example # 环境变量示例:VITE_API_BASE / VITE_API_PROXY / VITE_TTS_URL / VITE_ASR_URL ├── .gitignore # 忽略 node_modules、构建产物、证书与密钥等敏感文件 ├── 启动移动端.bat # Windows 一键启动:拉起 Docker Desktop 并运行 mobile-dev ├── 证书信息.md # 本地签名证书信息(敏感文件,已 gitignore,勿提交) ├── build-local-webview-apk.bat # 构建本地 WebView APK(替代云打包的离线方式) ├── docker-compose.snippet-for-test1-main.yml # 供并入主项目 docker-compose.yml 的 mobile 服务片段(含注释说明) ├── docker-compose.yml # 移动端容器编排:mobile-dev(5174 端口,热挂载 src 等) ├── Dockerfile # 移动端镜像:node:20-alpine + pnpm,启动 `pnpm dev:h5` ├── index.html # H5 入口 HTML(挂载 #app) ├── logs.bat # 查看容器日志(docker compose logs -f) ├── manifest.json # uni-app 应用配置(项目根副本,appid 为空;src/manifest.json 为打包实际生效版本) ├── pack-app.bat # Windows 打包:安装依赖并尝试 CLI 构建 App ├── package-lock.json # npm 依赖锁文件(自动生成) ├── package.json # 依赖与脚本:dev:h5 / dev:app / build:h5 / build:app / pack:check 等 ├── pnpm-lock.yaml # pnpm 依赖锁文件(自动生成) ├── pnpm-workspace.yaml # pnpm workspace 定义 ├── README.md # 移动端说明:快速命令、H5 预览、HBuilderX 打包方法 ├── restart.bat # 重建并重启 mobile-dev 容器 ├── start_asr_server.bat # 启动本地 ASR 语音识别服务(start_asr_server.py) ├── start-app说明.txt # 手机 App 部署步骤说明(安装、打包、连 WiFi、配 API) ├── start.bat / start.ps1 # 启动脚本:先确保主项目网络/后端,再启动 mobile-dev ├── stop.bat / stop.ps1 # 停止 mobile-dev(主项目不受影响) └── vite.config.js # Vite 配置:uni 插件、5174 端口、`/api` 代理到后端、H5 下 vue 别名 ``` ### docs/ — 文档站(VitePress) ``` docs/ ├── .vitepress/ # VitePress 站点配置 │ ├── config.mts # 站点配置:导航、侧边栏、主题、社交链接等 │ └── theme/ # 自定义主题 │ ├── custom.css # 自定义样式(覆盖默认主题样式) │ ├── index.ts # 主题增强注册(引入组件与样式) │ └── components/ │ └── YuxiHome.vue # 官网式首页组件(品牌主视觉、能力介绍、功能入口) ├── index.md # 文档站首页(layout: home,实际内容由 YuxiHome.vue 渲染) ├── package.json # 文档站依赖:vitepress、markdown-it-task-checkbox,dev/build/preview 脚本 ├── pnpm-lock.yaml # 文档站依赖锁文件 ├── intro/ # 入门指南(5 篇) │ ├── project-overview.md # 项目概述:整体定位与技术架构 │ ├── quick-start.md # 快速开始:从零启动平台 │ ├── evaluation.md # 评测:知识库检索/问答效果评估方法 │ ├── knowledge-base.md # 知识库:文档上传、检索与问答 │ └── model-config.md # 模型配置:大模型/嵌入/重排模型接入 ├── develop-guides/ # 开发指南(5 篇) │ ├── changelog.md # 变更记录 │ ├── contributing.md # 贡献指南 │ ├── design.md # 设计说明:模块划分与设计决策 │ ├── roadmap.md # 路线图 │ └── testing-guidelines.md # 测试指南:单元/集成/E2E 测试规范 ├── advanced/ # 进阶主题(7 篇) │ ├── api-key-integration.md # API Key 集成 │ ├── branding.md # 品牌定制(Logo、名称、主题) │ ├── configuration.md # 详细配置说明 │ ├── deployment.md # 部署指南 │ ├── document-processing.md # 文档解析(MinerU / PaddleX 接入) │ ├── misc.md # 其他杂项说明 │ └── third-party-auth.md # 第三方登录(OIDC) ├── agents/ # 智能体专题(8 篇) │ ├── agents-config.md # 智能体配置说明 │ ├── langfuse-integration.md # Langfuse 可观测性接入 │ ├── mcp-integration.md # MCP 集成 │ ├── middleware.md # 中间件机制 │ ├── sandbox-architecture.md # 代码沙盒架构 │ ├── skills-management.md # Skill(技能)管理 │ ├── subagents-management.md # 子智能体管理 │ └── tools-system.md # 工具系统 ├── public/ # 站点静态资源 │ ├── images/agent.png # 智能体示意图 │ ├── images/neo4j_browser.png # Neo4j 浏览器界面截图 │ ├── bb.png # 站点通用配图 │ └── favicon.svg # 站点图标 └── vibe/ # 开发过程稿/临时记录 ├── .idea/ # JetBrains IDE 配置(inspectionProfiles、misc.xml、modules.xml、vibe.iml、workspace.xml) ├── mobile-mockups/ # 移动端原型图目录(当前为空,预留) ├── 2026-07-06-agent-kb-core-code-analysis.md # 智能体 + 知识库核心代码分析 ├── 2026-07-20-aliyun-deploy-prep.md # 阿里云部署准备记录 └── 2026-07-23-mobile-web-scope.md # 移动端 / Web 端范围界定 ``` ### docker/ — 容器编排与运维 ``` docker/ ├── nginx/ # 前端反向代理 │ ├── default.conf # Nginx 默认站点配置(Web 服务入口) │ └── nginx.conf # Nginx 主配置(事件、http 块、包含站点配置) ├── sandbox_provisioner/ # 智能体代码沙盒环境 │ ├── app.py # 沙盒供给 HTTP 服务(为沙盒容器下发代码与任务) │ ├── Dockerfile # 沙盒镜像构建(Python 运行时) │ ├── requirements.txt # 沙盒服务依赖 │ └── sandbox.env # 沙盒服务环境变量 ├── volumes/ # 运行时数据卷(postgresql / neo4j / redis / milvus / models / yuxi 运行数据,已 gitignore,勿提交) ├── api.Dockerfile # 后端 api / worker 服务镜像 ├── web.Dockerfile # Web 前端镜像(Nginx 托管构建产物) ├── mineru.Dockerfile # MinerU 文档解析镜像 ├── paddlex.Dockerfile # PaddleX OCR / 版面分析镜像 ├── PP-StructureV3.yaml # PaddleX 版面结构(PP-StructureV3)模型配置 ├── save_docker_images.ps1 # 导出全部容器镜像为 tar(PowerShell 版) └── save_docker_images.sh # 导出全部容器镜像为 tar(Shell 版) ``` ### scripts/ — 初始化与运维脚本 ``` scripts/ ├── bump-version.sh # 版本号升级脚本(用法:./scripts/bump-version.sh [--dev] <新版本号>) ├── init.ps1 # 项目初始化(PowerShell):生成 .env、随机密钥、交互填写 API Key ├── init.sh # 项目初始化(Shell):生成 .env、随机密钥、交互填写 API Key ├── pull_image.ps1 # 拉取指定容器镜像(PowerShell:pull_image.ps1 ) └── pull_image.sh # 拉取指定容器镜像(Shell:pull_image.sh ) ``` ### .github/ — GitHub 协作配置 ``` .github/ ├── ISSUE_TEMPLATE/ # Issue 模板(4 个,均为中文) │ ├── 提交一个提问.md # 提问类 Issue 模板 │ ├── 提交一个需求建议.md # 需求/功能建议模板 │ ├── 提交一个bug.md # Bug 报告模板 │ └── 提交一个docker启动问题.md # Docker 启动问题专项模板 ├── workflows/ # CI / CD 工作流 │ ├── close-stale-issues.yml # 自动标记并关闭长期无响应的 Issue │ ├── deploy.yml # 部署流水线(构建并推送镜像 / 触发部署) │ └── ruff.yml # Python 代码规范检查(ruff) └── PULL_REQUEST_TEMPLATE.md # Pull Request 模板 ``` ### 根目录 — 项目入口与全局配置 ``` test1-main/ ├── .agents/ # 智能体运行辅助目录(当前为空) ├── tools/ # 工具脚本目录(当前为空) ├── .dockerignore # Docker 构建上下文忽略(node_modules、.git、__pycache__ 等) ├── .env # 本地环境变量(含 API Key 等敏感信息,勿提交) ├── .env.template # 环境变量模板(大模型 API Key、JWT 密钥、数据库等配置项说明) ├── .gitignore # Git 忽略规则 ├── AGENTS.md # AI 协作约定(Codex / 通用智能体读取的仓库规则) ├── ARCHITECTURE.md # 架构文档:后端 / Web / 移动端代码地图与模块说明 ├── CLAUDE.md # Claude 协作约定 ├── CONTRIBUTING.md # 贡献指南 ├── docker-compose.yml # 开发环境编排:api / web / worker / mobile / 数据库与中间件 ├── docker-compose.prod.yml # 生产环境编排 ├── env.pure-local.example # 纯本地(不依赖 Docker 中间件)运行的环境变量示例 ├── LICENSE # 开源许可证 ├── Makefile # 常用命令入口(up / down / reset / seed / lint 等) ├── README.md # 项目总览(本文档) └── README.en.md # 英文版项目说明 ``` ## 部署与运行 项目全部运行在 Docker 容器中,数据(数据库、文件、知识库)保存在项目目录下,复制到其他电脑可直接使用。 **启动步骤:** 1. 复制 `.env.example` 为 `.env`,填写大模型 API Key 和管理员密码 2. 执行 `docker compose up -d --build` 3. 浏览器打开 `http://localhost:5173`,用管理员账户登录 开发模式下服务已配置热重载,修改代码后自动生效,无需手动重启。