乐于分享
好东西不私藏

OpenClaw实战:第五期智能体协作——7个AI员工如何联手干活

OpenClaw实战:第五期智能体协作——7个AI员工如何联手干活

OpenClaw实战:从0到1搭建招投标AI系统

后端API + 前端界面 + Docker部署全流程

7个智能体有了,知识库有了,怎么变成一个真正能用的系统?这篇讲清楚

📖 前情回顾

前四期我们走完了:

第一期:OpenClaw部署,让AI住进你的服务器

第二期:智能体设计,7个AI角色怎么分工

第三期:知识库建设,690个法规文件怎么喂给AI

第四期:智能体协作,一个指令7个AI联手干活

但有个问题——每次用都要打开终端敲命令,这玩意儿谁用得起?

老板要的是:打开浏览器,点两下,招标文件就出来了。

所以第五期,我们干一件事:把智能体封装成Web应用

01.

整体架构:三层分离

先看全貌:

🖥️ 前端界面 (Vue.js + Element Plus)
招标管理 | 投标管理 | 法律审查 | 知识库
🔀 API网关 (FastAPI)
/api/v1/tender   /api/v1/bid   /api/v1/legal
⚙️ 业务服务层
模板匹配 → 内容生成 → 合规检查 → 文件导出
📚 知识库 + 智能体
772个法规文件 | OpenClaw Agent调度

为什么选这个技术栈?

⚡ FastAPI

Python生态,和知识库脚本无缝衔接,自带API文档

🎨 Vue.js + Element Plus

企业级后台标配,表单/表格/步骤条开箱即用

🐳 Docker

一键部署,不用在服务器上装一堆依赖

02.

后端API:5个核心接口

2.1 项目结构

📁 项目目录结构
bidding-agents/├── main.py# FastAPI入口├── api/│   ├── tender.py# 招标文件API│   ├── bid.py# 投标文件API│   ├── legal.py# 法规查询API│   ├── knowledge.py# 知识库搜索API│   └── feishu.py# 飞书集成API├── services/│   ├── template_service.py# 模板匹配│   ├── generation_service.py# 内容生成│   ├── compliance_service.py# 合规检查│   ├── export_service.py# 文件导出│   └── simple_search.py# 知识库检索├── enterprise-data/# 企业数据└── docker/     ├── Dockerfile     └── docker-compose.yml

2.2 招标文件生成API

这是最核心的接口,一个POST请求搞定:

🐍 api/tender.py
@router.post("/generate")async defgenerate_tender(request: TenderRequest):    # 1. 匹配模板     template = template_service.match(         project_type=request.projectType,         procurement_method=request.procurementMethod     )    # 2. 生成内容(调用OpenClaw智能体)     content = await generation_service.generate(         template=template,         project_info=request.dict(),         agent_id="tender-agent"     )    # 3. 合规检查(调用法规顾问)     compliance = await compliance_service.check(content)    # 4. 返回结果return {        "content": content,        "compliance_report": compliance,        "template_used": template.name     }

💡 关键设计

不是AI直接生成完事,而是 模板匹配 → AI填充 → 合规检查 三步走。

为什么?因为纯AI生成的招标文件格式不稳定,今天长这样明天长那样。用模板兜底,AI只负责填内容,格式由模板控制。

🏗️
[IMAGE_PLACEHOLDER_1]
招投标AI系统架构全景图 / 后端API工作流程示意图

图1:招投标AI系统整体架构与数据流转

2.3 知识库搜索API

🐍 api/knowledge.py
@router.get("/search")async defsearch_knowledge(q: str, category: str = None):     results = simple_search.search(         query=q,         category=category,         top_k=5     )    return {"results": results}

这个搜索不是简单的关键词匹配,而是做了三层:

1

标题匹配:文件名包含关键词,权重最高

2

内容匹配:正文包含关键词,按出现频率排序

3

时效性过滤:优先返回”现行有效”的文件,”需核实”的降权

2.4 飞书集成API

🐍 api/feishu.py
@router.post("/notify")async defnotify_feishu(task_id: str, event_type: str):    awaitsend_feishu_card(         title="招标文件已生成",         content=f"项目:{task_id}\n状态:{event_type}",         url=f"/tender/detail/{task_id}"     )

这个接口让系统和企业办公流打通——文件生成完了,飞书自动弹卡片,不用盯着网页等。

03.

前端界面:4个核心页面

3.1 新建招标——分步表单

用Element Plus的步骤条组件实现,把一个复杂的招标文件拆成3步填完:

1

基本信息

2

评标办法

3

生成文件

项目名称
请输入项目名称
项目类型
工程
预算金额(万元)
请输入
采购方式
公开招标
评标方法
综合评估法
下一步 →

3.2 新建投标——4步向导

投标比招标更复杂,因为要分析对手、选策略:

1

上传招标文件 → AI自动解析

2

填写企业信息 → 资质自动匹配

3

选择投标策略 → AI推荐最优方案

4

生成投标文件 → 一键下载

3.3 法律审查——一键查询

输入项目描述,AI自动检索相关法规,标注风险点:

🔍 审查结果

⚠️ 投标保证金超过估算价2%(违反87号令第33条)

 评标委员会人数符合要求(5人单数)

⚠️ 投标有效期不足20日(违反招标投标法第24条)

3.4 知识库搜索——全文检索

🔍 搜索法规、范本、标准…
搜索
📄 财政部87号令
现行有效较新2024年
📄 招标投标法
现行有效2017年修正
📄 陕西省住建厅
需核实2018年

每个搜索结果都带时效性标签——这是第四期做的知识库治理成果,直接在前端体现。

🖥️
[IMAGE_PLACEHOLDER_2]
前端界面截图 / 法律审查功能演示

图2:招投标AI系统前端界面功能展示

04.

合规检查:AI+规则双保险

这是整个系统最关键的部分。纯AI检查不可靠(可能漏判),纯规则检查不灵活(覆盖不全),所以用双保险:

🐍 services/compliance_service.py
classComplianceChecker:     RULES = [         {"id""R001""law""招标投标法第24条""check""投标有效期≥20日"},         {"id""R002""law""87号令第33条""check""投标保证金≤估算价2%"},         {"id""R003""law""招标投标法第37条""check""评标委员会≥5人单数"},         {"id""R004""law""87号令第59条""check""履约保证金≤合同金额10%"},     ]    async defcheck(self, content: str) -> ComplianceReport:        # 第一步:规则引擎硬检查         rule_results = [self._apply_rule(r, content) for r in self.RULES]        # 第二步:AI语义检查(调用法规顾问智能体)         ai_result = await self._ai_check(content)        # 合并结果,去重return self._merge(rule_results, ai_result)

📏 规则引擎

负责”绝对不能错”的硬性规定

🤖 AI语义检查

负责”可能有问题”的模糊判断

两者互补,漏判率大幅降低

05.

Docker部署:3条命令上线

5.1 docker-compose.yml

🐳 docker-compose.yml
version'3.8'services:  api:    build: .    ports:       - "8088:8088"volumes:       - ./knowledge-base-md-new:/app/knowledge-base       - ./output:/app/outputenvironment:       - OPENCLAW_API_URL=http://host.docker.internal:3000depends_on:       - redisfrontend:    build./src/frontendports:       - "80:80"depends_on:       - apiredis:    imageredis:7-alpineports:       - "6379:6379"

5.2 一键启动

⌨️ 终端命令
# 构建并启动docker-compose up -d# 查看状态docker-compose ps# 查看日志docker-compose logs -f api

就这么简单。不需要装Python、不需要装Node.js、不需要配环境变量——Docker全包了

5.3 访问地址

🌐前端界面:http://你的服务器IP
📋API文档:http://你的服务器IP:8088/docs
❤️健康检查:http://你的服务器IP:8088/health
🐳
[IMAGE_PLACEHOLDER_3]
Docker容器运行状态 / 系统部署架构图

图3:Docker部署架构与容器运行状态

06.

踩过的坑

⚠️ 坑1:知识库搜索不能用向量数据库

一开始想用Milvus做向量检索,结果发现:

  • 772个中文法规文件,分词效果差

  • 法律条文语义相似度高,向量检索区分不开”87号令”和”18号令”

  • 部署Milvus又多一个服务,运维成本翻倍

最终方案:先用BM25关键词搜索,够用。等数据量大了再换向量库。

⚠️ 坑2:AI生成内容格式不稳定

同一个模板,今天生成的招标文件格式是对的,明天就可能变。AI不会100%遵守模板格式。

解决方案:模板用占位符({{项目名称}}),AI只生成占位符的内容,格式由代码控制。

⚠️ 坑3:Docker里访问不到宿主机的OpenClaw

OpenClaw跑在宿主机上,Docker容器里访问localhost:3000访问不到。

解决方案:用host.docker.internal代替localhost(Docker Desktop支持),Linux上加 --add-host=host.docker.internal:host-gateway

07.

当前进度与下一步

✅ 已完成

模块 状态 说明
FastAPI后端
5个API模块,3252行代码
Vue.js前端
6个页面,Element Plus
知识库搜索
BM25+时效性过滤
合规检查
规则引擎+AI双保险
Docker部署
docker-compose一键启动
飞书集成
生成完成自动通知

📋 下一步

  • OCR转换:130个扫描版PDF还没处理,知识库覆盖还差一截

  • 用户测试:找几个招标代理公司试用,收集反馈

  • 性能优化:AI生成慢(30-60秒),考虑流式输出+进度条

  • 权限管理:多租户隔离,不同公司数据互不可见

08.

总结:从”能用”到”好用”有多远

回顾五期走过的路:

1

部署OpenClaw → 让AI住进来

2

设计7个智能体 → 让AI有分工

3

建设知识库 → 让AI有知识

4

智能体协作 → 让AI能联手

5

封装成Web应用 → 让人能用

五期下来,从0到1的系统搭完了。但“能用”和”好用”之间,还差着:

  • 知识库质量:772个文件,时效性标注做了,但”需核实”的还有几百个

  • AI输出质量:生成的招标文件能用,但离”直接提交”还有距离

  • 用户体验:前端页面有了,但交互细节还粗糙

下一步的核心任务不是加功能而是打磨质量——让每个模块从”能跑”变成”可靠”

🔮 下期预告

知识库精简与质量提升——772个文件砍到150个核心文件,每个都确保准确可用

📚 系列文章

第一期:OpenClaw部署——让AI住进你的服务器

第二期:智能体设计——7个AI角色怎么分工

第三期:知识库建设——690个法规文件怎么喂给AI

第四期:智能体协作——一个指令7个AI联手干活

第五期:系统开发实战——从0到1搭建招投标AI应用(本篇)

💬 你在搭建AI系统时遇到过哪些坑?

欢迎在评论区分享你的经验点赞 👍 收藏 ⭐ 转发 🔄 让更多人看到

关注我,下期更精彩 →

📌 更多AI实战内容,关注主页查看~