下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-cpxku7e4--huitou-aicenter-tecbid.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-cpxku7e4/huitou-aicenter-tecbid。标书一键生成(标书写作)。上传招标文件(pdf/doc 等),按标书页数、明标/暗标与表格/图片/流程图风格,支持自定义目录(不提供则按评分点自动生成),自动解析招标文件、撰写正文并产出投标文件 docx 下载;解析后附带项目概况与技术分。支持设备授权登录、登录状态检查、余额查询与充值引导。用户要求写标书/做标书/生成投标文件/标书写作/编制标书时使用。
阅读全文 (展开查看完整说明)
概述
标书写作技能
通过 scripts/client.py(零依赖轻客户端,仅 Python 标准库)调用 zbh-ai 服务一键生成投标文件。
前置条件
- Python 3.10+,无第三方依赖
- 招标文件支持 pdf/doc 等常见格式
- 服务端已启动,客户端默认地址
https://biaoshuai.huitoue.com/api/skill,
可用环境变量 ZBH_AI_BASE_URL 或 config.json 的 base_url 字段覆盖
- 用户已在门户注册(门户地址
https://aicenter.huitoue.com/);登录由客户端自动发起设备授权:
浏览器打开授权页面,用户登录门户账号、核对确认码后点「同意授权」,客户端自动取得并保存 user-key。也兼容手动方式 login <user-key>(user-key 在门户个人信息页复制)
开始前必须向用户确认的参数
提交任务前必须向用户问齐以下参数,不要臆测、不要不问就用缺省值直接发起 (标书生成会消耗产品次数,参数错了既浪费次数又浪费时间):
| 参数 | CLI 选项 | 取值 |
|---|---|---|
| 招标文件 | 位置参数 | 用户提供的招标文件路径(pdf/doc 等),必须真实存在 |
| 标书页数 | --page-num | 1-2000,无缺省,必须由用户提供(可参考招标文件对页数/份数的要求给出建议) |
| 明标/暗标 | --blind | 是否暗标;暗标加 --blind,明标不加,必须向用户确认 |
| 表格风格 | --style-table | NONE 无 / LOW 少量 / MIDDLE 适量 / MANY 大量 |
| 图片风格 | --style-img | 同上 |
| 流程图风格 | --style-flow | 同上 |
| 自定义目录 | --custom-catalog | 可选;用户自带目录时把目录全文原样传入(支持多行),不提供则服务端按招标文件评分点自动生成 |
- 三种风格缺省均为
MIDDLE适量,仅当用户明确说「按默认/随意」时才可用缺省 - 自定义目录必须先问一句「是否需要自定义目录?」:需要就让用户把目录内容粘贴过来,
原样作为 --custom-catalog 传入,不要改写、不要压缩换行;不需要则不加该参数
- 用户没提某项参数时,把没提的几项一次性问清(如「请问页数、明标还是暗标、
表格/图片/流程图各要多少?」),不要反复追问、也不要一次都不问
使用流程
智能体(WorkBuddy 等)务必使用「提交 + 轮询」模式,原因:bash 工具只在命令整体
结束后才把输出返回给智能体,阻塞式
bid会让用户在几十分钟里看不到任何进度。标书生成耗时与页数相关,可能远超 10 分钟(几十分钟量级),请耐心轮询。
# 1. 登录(首次使用),智能体务必用两步非阻塞授权(详见「给智能体的提示」):
# ① python scripts/client.py login --start --no-open # 打印授权页地址与确认码后秒回,不弹系统浏览器
# ② 先把授权页地址与确认码作为对话消息发给用户核对,同时用内嵌浏览器打开该地址;
# ③ python scripts/client.py login --poll # 轮询一次结果;pending 继续轮询,approved 落盘结束
# 内嵌浏览器:IDE/智能体环境的内置浏览器或网页预览工具(如 VSCode 的 Simple Browser);
# 人工终端仍可阻塞式 `python scripts/client.py login`(自动弹系统浏览器),
# 或手动保存 user-key:python scripts/client.py login <user-key>
# 2. 检查登录状态与余额(可选)
python scripts/client.py status
# 3. 向用户确认参数后提交任务(--no-wait 秒回 task_id,立即结束)
# 用户需要自定义目录时追加:--custom-catalog "<目录全文,可多行>"
python scripts/client.py bid 招标文件.pdf --page-num 100 --blind
--style-table MIDDLE --style-img LOW --style-flow MIDDLE --no-wait
# 4. 每约 30 秒轮询一次进度;每次轮询后把进度行转述给用户,让用户实时看到进展
python scripts/client.py result <task_id>
# 输出示例:[生成中 42%] 正在撰写正文(当前:正文)(已等待 12分05秒)
# 解析完成后会额外打印「项目概况」与「技术分」,及时转述给用户
# 5. 看到 [已完成 100%] 后,把投标文件 docx 下载到招标文件同目录
python scripts/client.py result <task_id> --out "C:/path/招标文件名-投标文件.docx"
# 登出
python scripts/client.py logout人工在终端使用时可以直接 python scripts/client.py bid 招标文件.pdf --page-num 100: 阻塞式运行,每 5 秒打印一行进度直至完成(最长 30 分钟),FIN 时自动把投标文件 docx下载到招标文件同目录 <招标文件名>-投标文件.docx,并打印 docx 的下载地址。轮询超时只代表等待结束,任务仍在服务端继续生成,改用 result 续查即可,不要重新 bid。
投标文件保存位置:
- 人工阻塞式
bid:招标文件同目录<招标文件名>-投标文件.docx - 智能体轮询模式:第 5 步
result --out显式指定,建议同样存到招标文件同目录 result不带--out:若查的是最近一次提交的任务且招标文件还在,自动存到招标
文件同目录;否则当前目录 <task_id>-投标文件.docx
命令参考
| 命令 | 说明 |
|---|---|
login [user-key] | 无参数:设备授权登录(打开授权页→用户登录并授权→自动保存 user-key);带参数:手动保存 user-key。均查询手机号与产品余额 |
login --start | 两步授权第一步(供智能体):发起设备授权,打印授权页地址与确认码后立即返回;轮询 token 只落盘不打印。默认自动弹系统浏览器,智能体务必加 --no-open(不弹系统浏览器),改用内嵌浏览器打开授权页 |
login --poll | 两步授权第二步(与 –start 搭配):轮询一次授权结果,秒回。退出码 3 且输出"尚未授权"=继续轮询;输出"已过期"=重新 –start;退出码 0=成功(自动保存 user-key 并打印手机号) |
logout | 删除 config.json 退出登录 |
status | 检查登录状态(config.json 是否含 user_key)、用户手机号与产品余额 |
bid <file> --page-num N [--blind] [--style-table L] [--style-img L] [--style-flow L] [--custom-catalog <text>] [--no-wait] [--out <path>] | 上传招标文件与生成参数发起标书生成(start_bid);--custom-catalog 传自定义目录全文,缺省按评分点自动生成目录;--no-wait 秒回 task_id(智能体必用),缺省会阻塞轮询到结束 |
result [task_id] [--out <path>] | 查询一次生成进度/结果(get_bid),单行输出 [状态 百分比] 消息(当前:阶段)(已等待 X分XX秒);FIN 时打印项目概况/技术分并下载投标文件 docx |
进度阶段(step):upload 上传 → parse 解析 → outline 目录 → content 正文 →docx 投标文件。解析完成(进入目录/正文阶段)后,result 会额外返回project_overview 项目概况与 tech_score 技术分并打印,应转述给用户。
退出码
| code | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 一般错误(含生成任务失败、任务不存在或已过期、轮询超时) |
| 2 | 参数错误(页数越界、文件不存在、未指定 task_id) |
| 3 | 未登录或授权未完成(config.json 无 user_key) |
| 4 | 余额不足,已打印充值引导 |
自动更新检查
每次启动脚本先检查产品新版本,同一天最多检查一次,检查记录写入 config.json 的last_version_check / latest_version。发现新版本时在 stderr 提示下载地址(10 分钟内有效)。检查失败只警告,不影响正常使用。
余额不足处理
生成接口返回 402 时,客户端自动调用 POST /skill/sso/login 生成一次性门户自动登录地址(5 分钟内有效)并打印,同时以退出码 4 退出。用户在浏览器打开该地址即可登录门户充值,充值完成后用同样参数重新执行 bid 即可。
config.json 字段
| 字段 | 说明 |
|---|---|
user_key | 登录凭证 user-key,由 login(设备授权或手动)写入,logout 删除整个文件 |
auth_token / auth_expires_at | 待授权请求的临时记录(轮询 token 与截止时间,login –start 写入、–poll 使用),成功或过期后自动清除;token 不外露 |
base_url | 可选,服务端地址,缺省 https://biaoshuai.huitoue.com/api/skill |
last_version_check | 最近一次更新检查日期(YYYY-MM-DD) |
latest_version | 最近一次检查看到的最新版本号 |
local_version | 可选,本地版本号,缺省取脚本内置 CLIENT_VERSION |
last_task_id | 最近一次 bid 受理的任务 ID |
last_task_time | 最近一次 bid 的提交时间(epoch 秒),供 result 计算已等待时长 |
last_tender_file | 最近一次 bid 的招标文件绝对路径,供 result 缺省把 docx 存到同目录 |
给智能体的提示
- 提交前必须问齐参数:招标文件、页数(1-2000)、明标/暗标、表格/图片/流程图风格,
缺哪项问哪项;用户没说「按默认」就不要用缺省风格,页数没有缺省、必须问;还要问一句「是否需要自定义目录」——需要就让用户粘贴目录全文并原样传入--custom-catalog,不需要时不传该参数(服务端按招标文件评分点自动生成目录)
- 遇到接口错误直接终止任务:任何命令(登录、提交、轮询等)出现接口错误
(连接失败、请求超时、5xx 服务端错误、result 返回 [失败]/ERR 等)时,立即终止本次任务,不要重试、不要继续轮询,把客户端打印的错误信息原样告知用户
- 生成进度必须实时播报:一律用
bid --no-wait提交任务,再用result轮询
(约每 30 秒一次)。不要用阻塞式 bid——bash 工具只在命令结束时返回输出,阻塞式会让用户在整个生成期间什么都看不到
- 每次轮询
result后,把打印的进度行(含百分比、当前步骤、已等待时间)用一句话
告知用户,如「生成中 42%,正在撰写正文,已等待 12 分钟」,直到 FIN/ERR
- 解析完成后 result 打印的「项目概况」「技术分」要及时转述给用户,便于用户确认方向
- 标书生成耗时与页数相关,可能远超 10 分钟(几十分钟量级);长时间「生成中」
也不要重新 bid(会重复扣次数),继续轮询即可,任务在服务端不会丢
- 退出码 3(未登录)时用两步非阻塞授权,让用户在对话里就能看到授权页地址与确认码,并用内嵌浏览器打开授权页(IDE/智能体环境的内置浏览器或网页预览工具,如 VSCode 的 Simple Browser;不要弹系统浏览器):
① 执行 python scripts/client.py login --start --no-open(秒回),先把打印的授权页地址与确认码作为对话文本发给用户,同时用内嵌浏览器打开该授权页地址,告知请在页面登录门户账号、核对确认码一致后点「同意授权」。② 循环 python scripts/client.py login --poll(约每 3-5 秒一次,每次秒回):输出"尚未授权"→转述等待状态并继续轮询;输出"已过期"→重新执行 –start –no-open 并转述新的地址与确认码;退出码 0→授权成功不要编造 user-key
- 人工一次性使用仍可阻塞式
login(最长约 10 分钟):先打印授权页地址与确认码再打开浏览器等待完成 - bid 时提示"用户身份无效或已失效"说明 user-key 失效,客户端会自动重新授权一次并重试,
照常播报进度即可;login 提示"用户 Key 校验失败"说明手动传入的 key 可能不对,核对后重新 login
- 退出码 4(余额不足)时,把客户端打印的门户自动登录地址原样给用户,引导充值,
充值后用同样参数重新提交
- result 返回"任务不存在或已过期"说明任务已被清理,需向用户说明后用同样参数重新 bid
- FIN 后用
result --out把投标文件 docx 下载到招标文件同目录
<招标文件名>-投标文件.docx,并把打印的 docx 下载地址一并提供给用户;docx 是二进制文件,不要读内容,只交付文件与下载地址
- 不要在回复中展示完整的 user-key