一、项目概述
中鹄是一款面向招投标场景的 AI 智能标书写作助手,定位为开源、可本地运行、可二次开发的标书编制工具。项目核心目标是降低投标团队编写技术标、整理知识资料、检查标书风险和导出成稿的成本,让中小团队也能用较低费用完成高质量标书初稿。
当前产品主体位于 client/,采用本地 Web 应用形态:浏览器前端负责交互、编辑和预览,Python 本地后端负责文档解析、AI 调用、后台任务、SQLite 状态保存和 Word 导出。analytics/ 是独立的 Cloudflare Workers 埋点服务,用于统计客户端匿名使用情况、资源点击和功能访问趋势,不参与用户业务数据处理。
二、业务场景
1. 招标文件解析与技术标生成
投标团队拿到招标文件后,需要快速识别项目概况、技术要求、评分标准、无效投标条款、废标项和响应重点。中鹄通过本地上传、Markdown 展示和 AI 解析,把招标文件拆解为后续生成目录、正文和检查项所需的结构化信息。
适用场景包括:
新项目投标,需要从零生成技术方案初稿。
招标文件篇幅较长,人工阅读和提炼成本高。
技术评分项、服务要求、实施要求分散在多个章节,需要统一提取。
多标段项目需要先识别标段,再选择本次投标范围。
2. 技术方案目录与正文编写
技术标编制通常需要先搭建目录,再围绕评分点、技术要求和项目背景生成正文。中鹄将技术方案拆成“选择标书、招标文件解析、目录生成、全局事实设定、正文生成、扩写改写”几个步骤,让用户可以在每一步确认、编辑和继续生成。
适用场景包括:
根据招标文件生成符合评分逻辑的技术方案目录。
对目录进行人工排序、编辑、增删后再生成正文。
按章节逐步生成长篇正文,减少一次性生成失控。
生成后继续人工修改,并保存为后续导出依据。
3. 已有方案扩写
部分团队已经有人工编写的技术方案,但内容偏薄、表达不够完整或字数不足。已有方案扩写模式在普通技术方案流程基础上额外上传“原方案”,目标是在保留原方案实质内容的前提下进行优化、扩充和结构化整理。
适用场景包括:
已有技术方案框架,但需要扩充章节内容。
用户希望保留原方案中的技术路线、服务承诺、人员安排、周期计划等关键事实。
希望在不重写业务核心的基础上提升表达完整度和专业度。
4. 企业知识库复用
投标工作中常有大量历史案例、服务方案、实施组织、售后承诺、设备参数和企业资质说明可复用。知识库模块用于沉淀这些资料,并通过 AI 分析为知识条目,后续可在目录生成和正文编排阶段作为参考素材。
适用场景包括:
管理企业历史标书、案例材料和方案素材。
将上传文档转换为 Markdown 并长期保存。
把长文档拆成标题、摘要、原文组成的知识条目。
在生成新标书时复用成熟内容,减少重复编写。
5. 标书查重与风险检查
投标文件经常由多人协作、多个历史文档拼接而来,容易出现元数据重复、目录重复、正文句子重复、图片复用等问题。标书查重功能面向多份投标文件交叉比对,帮助识别可能暴露围标、串标或模板复用痕迹的内容。
废标项检查则关注招标文件中的硬性要求与投标文件响应情况,通过 AI 检查无效投标、废标项、错别字和逻辑问题,辅助投标前复核。
适用场景包括:
多份投标文件需要交叉排查重复元数据、目录、正文和图片。
标书定稿前需要检查是否遗漏关键响应。
招标文件中存在废标条款,需要逐条核对投标文件。
需要把招标文件中摘抄的公共内容从重复判断中排除。
6. 模板设置与 Word 导出
标书最终通常以 Word 文档提交,且不同企业、不同项目对封面、标题、正文、表格、页边距和编号样式有不同要求。模板设置模块提供导出模板管理、新建模板、排版参数配置和实时预览能力,正文生成完成后可选择模板导出 Word。
适用场景包括:
团队需要统一标书排版规范。
不同客户或项目需要不同标题编号和配色风格。
用户希望从生成正文直接导出为可继续编辑的 Word 文档。
需要在导出前预览模板效果。
7. 资源下载与投标机会
资源下载模块从远端资源服务读取投标相关资料、工具和说明,并统计资源点击情况。投标机会模块目前是规划中的入口,目标是后续聚合招标公告、匹配企业资质和历史业绩,辅助判断是否值得投入投标资源。
功能介绍
1. 标书生成
标书生成是当前核心功能,包含“生成技术方案”和“已有方案扩写”两个入口。
生成技术方案流程:
选择标书:上传招标文件并解析为 Markdown。
招标文件解析:提取项目概况、技术要求、评分要求、无效投标和废标项等信息。
目录生成:根据招标文件、评分项和可选知识库生成技术方案目录,支持人工编辑、排序和保存。
全局事实设定:抽取跨章节一致使用的项目事实、服务承诺、技术边界等内容。
生成正文:按目录叶子节点生成正文,支持暂停、续跑、章节编辑、最低字数扩充、一致性审计和配图流程。
扩写改写:作为后续扩展入口,当前页面提示功能开发中。
已有方案扩写在第一步额外上传原方案,后续目录、全局事实和正文生成会参考原方案内容,目标是保留原文关键事实并扩写成更完整的投标方案。
2. 商务标
商务标页面当前为开发中预览入口,规划方向是围绕付款条件、履约保证金、报价有效期、合同偏离、商务响应矩阵和报价附件进行整理。页面已提供业务形态展示,但功能尚未完成。
3. 模板设置
模板设置包含“我的模板”和“新建模板”:
我的模板:管理已保存的导出模板,供 Word 导出时选择。
新建模板:配置版面、封皮、标题样式、正文样式、表格样式等参数,并提供右侧实时预览。
模板配置会影响最终 Word 导出的样式,适合团队沉淀统一的标书格式。
4. 知识库
知识库支持以文件夹方式管理资料,用户可上传文档并转换为 Markdown 保存。AI 分析流程会将文档拆分为知识条目,包含标题、摘要和原文,便于后续生成目录和正文时引用。
设计重点是让 AI 只负责提取条目和匹配段落编号,程序负责段落编号、结果合并、遗漏补漏和正文回填,减少长文档分析时的内容丢失。
5. 标书检查
标书检查包含“标书查重”和“废标项检查”:
标书查重:从元数据、目录、正文句子、图片哈希等维度筛查多份投标文件之间的重复项。
废标项检查:上传招标文件和投标文件,先解析无效投标与废标项,再结合自定义检查项对投标文件进行 AI 检查。
废标项检查规划中包含废标项检查、错别字检查和逻辑谬误检查,其中废标项检查默认开启。
6. 设置
设置页用于配置本地客户端运行参数:
通用设置:开发者模式、更新渠道等。
文本模型:支持 OpenAI-like 文本模型配置,可配置 API Key、Base URL、模型名、上下文长度、并发上限和请求方式。
生图模型:支持 OpenAI-like、火山方舟、Google AI Studio 等生图配置,并可测试接口可用性。
文件解析:支持本地解析和 MinerU 解析配置说明。
关于:展示版本、运行模式、仓库链接和隐私声明。
7. 资源下载
资源下载页面从 https://analytics.agnet.top/resources 拉取资源列表,支持搜索、详情弹窗、Markdown 内容展示和点击统计。资源数据、图片和点击量由独立 analytics 服务管理。
8. Analytics 埋点统计
analytics 是独立服务,用于匿名统计应用打开、页面访问、配置使用、AI 请求 token、资源点击和 Agent 运行状态。该服务由 Cloudflare Workers、Analytics Engine、D1、R2、KV 和 Dashboard 组成,不采集用户导入文件、生成正文、API Key、Prompt 或业务结果。
项目实现
1. 技术栈
客户端:
前端框架:Vite 7、React 19、TypeScript 5.9。
UI 基础:全局 CSS、Radix Dialog/Popover/Switch/Toast/Tooltip 等基础组件。
Markdown:markdown-it、markdown-it-cjk-friendly、markdown-it-task-lists。
图表:Mermaid,用于技术方案中的流程图、架构图等 Markdown 代码块预览。
本地后端:Python 3.11+,以标准库 HTTP 服务为入口。
AI 接口:OpenAI-like 文本接口和生图接口,配置保存在本机。
本地存储:SQLite、Markdown 文件、上传文件、用户配置文件。
Analytics:
API Worker:Cloudflare Workers。
统计存储:Analytics Engine、D1。
资源存储:D1 + R2。
公告与缓存:KV。
Dashboard:Workers Static Assets。
2. 客户端架构
客户端入口链路为:
client/src/main.tsx
-> AppProviders
-> App
-> src/app/AppRouter.tsx
主要目录职责:
client/
├── src/
│ ├── app/ # 路由、菜单、Provider、工具栏配置
│ ├── components/ # 应用级布局组件
│ ├── features/ # 技术方案、知识库、查重、废标检查、设置等业务模块
│ ├── shared/ # 跨功能类型、UI、AI、运行时 API、工具函数
│ ├── main.tsx # 前端入口
│ └── styles.css # 全局样式
├── python/
│ ├── web_backend.py # Python Web 后端入口
│ └── bullseye_backend/ # Python 后端业务模块
├── assets/ # 图标与静态资源
└── dist/ # Vite 构建产物,由 Python 后端托管
前端业务代码按功能放在 src/features//,跨功能能力放在 src/shared/。菜单配置集中在 src/app/menuConfig.ts,页面路由集中在 src/app/AppRouter.tsx。
3. 前后端通信架构
浏览器侧统一通过 window.bullseye 调用本地能力。Web 模式下,window.bullseye 由 client/src/shared/bullseyeRuntime.ts 创建,主要负责:
调用 /api/rpc 执行本地后端方法。
调用 /api/upload/ 上传文件。
通过 /api/events/ 订阅 SSE 后台任务事件。
适配浏览器文件选择和资源打开行为。
Python 后端入口是 client/python/web_backend.py,业务聚合入口是 client/python/bullseye_backend/web_api.py。WebBackendApi.rpc() 根据 method 分发到配置、AI、知识库、技术方案、查重、废标检查、模板、任务和导出等模块。
4. 数据存储与任务状态
本地数据默认保存在:
client/.bullseye-web-data/
也可以通过 BULLSEYE_USER_DATA 环境变量覆盖。
主要数据包括:
user_config.json:文本模型、生图模型、解析方式、通用设置等用户配置。
workspace/:技术方案、查重、废标检查等工作区数据。
SQLite 数据库:由 workspace_db.py 管理 schema,用于保存工作流状态、知识库索引、模板等结构化数据。
Markdown 文件:保存招标文件解析结果、知识库文档内容、正文内容等长文本。
上传文件与导出文件:由 Python 后端统一读写。
耗时任务如招标文件解析、目录生成、全文事实设定、正文生成、知识库分析、查重和废标检查在 Python 后台执行,并通过 SSE 持续推送进度。任务状态会持续落盘,页面切换或刷新后可以恢复。
5. AI 调用链路
AI 能力分为文本模型和生图模型:
文本模型用于招标文件解析、目录生成、知识库条目分析、正文生成、废标项检查等。
生图模型用于正文配图、图文表达增强等场景。
模型配置支持多服务商预设和自定义 OpenAI-like 接口。
Token 统计通过本地后端记录快照,并可在开发者页面查看。
正文生成以 outlineData.outline[*].content 作为权威来源,目录重新生成、编辑、添加或删除后需要清空旧正文内容和生成缓存,避免旧正文与新目录不一致。
6. 文档解析与导出
当前 Python 本地解析主要支持 Markdown、TXT 和 DOCX,并将内容转换为 Markdown 保存。查重上传入口允许选择 DOC、DOCX、WPS、PDF、Markdown 等文件,具体解析能力以后端实际解析实现为准。
Word 导出由 Python 后端执行,读取目录和正文内容,按选中的导出模板生成 Word 文件。Mermaid 图在前端以 Markdown 代码块预览,导出时由后端处理为 Word 中可核对的内容或图片转换流程,并通过导出进度事件通知前端。
7. 构建与运行
客户端开发命令均在 client/ 下执行:
cd client
npm ci
npm run dev
开发模式会同时启动:
Python 后端:http://127.0.0.1:8765
Vite 前端:http://127.0.0.1:5173
构建验证:
cd client
npm run build
生产本地启动:
cd client
npm run build
npm run start
此时 Python 后端会托管 dist/ 前端构建产物和 /api/* 本地接口。
8. Analytics 架构
analytics/ 与客户端主体解耦:
analytics/
├── worker/ # Cloudflare Workers API,负责 track、overview、resources 等接口
├── dashboard/ # 统计后台前端
└── scripts/ # 部署、存储初始化和历史回填脚本
客户端只上报匿名事件,不上报业务文档、文件名、本地路径、API Key、Prompt、生成结果或错误详情。资源下载页读取 analytics 资源接口,资源点击通过 resource_click 事件统计。
五、项目价值
中鹄的价值不只是“调用 AI 写一段文字”,而是把投标工作中最耗时的流程拆成可恢复、可编辑、可检查、可导出的本地工作流:
对用户:降低标书初稿编写成本,提升目录、正文、检查和导出的效率。
对团队:沉淀企业知识库和模板,复用历史资料,统一标书风格。
对开发者:项目开源、架构清晰,前端、Python 本地后端和 analytics 服务边界明确,便于二次开发。
对数据安全:业务文件和生成结果默认保存在用户本机,线上 AI 请求只发送给用户自行配置的服务商。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论