cnsdoce

API key required
Security

中国工程造价技能,支持安装工程定额查询、组价计算与报价表生成。 数据源支持两种模式(见下方说明): · 默认模式:大模型推理数据(无需本地数据库,推荐新手) · 唯一来源模式:严格限定为山东省安装工程消耗量定额(2025版) + 济南市价目表(2026版) 核心依据:《建设工程工程量清单计价标准》GB/T 50500-2024(2025年9月1日起实施)。 当用户询问以下场景时触发本技能:定额子目查询(章节号+条款号溯源)、 安装工程组价(13分册各专业)、取费计算(管理费48.08%、利润29.15%)、 Excel报价表生成、山东/济南价目表查询。

Install

openclaw skills install cnsdoce

中国安装工程造价技能

LLM语义匹配配置 (2026-05更新)

多模型支持

  • 默认模型:腾讯混元 Hunyuan-Lite(免费,无使用限制)⭐已开启
  • 备选模型:字节豆包 Doubao(按需开启,需设置 LLM_PROVIDER=doubao
  • 降级策略:混元调用失败时,自动降级到豆包(如已配置API Key)

当前状态 ✅ 全部配置完成(2026-05-15)

配置项状态说明
混元 SDK✅ 已安装tencentcloud-sdk-python-hunyuan 3.1.56
混元 API Key✅ 已配置环境变量 HUNYUAN_API_KEY(sk-开头)
豆包 API Key✅ 已配置环境变量 DOUBAO_API_KEY(ark-开头)
豆包模型服务✅ 已开通doubao-1-5-lite-32k-250115,直接用模型ID调用
默认 Provider✅ hunyuan环境变量 LLM_PROVIDER(默认混元免费)

重要:豆包无需设置 DOUBAO_ENDPOINT_ID,直接用模型ID doubao-1-5-lite-32k-250115 即可调用。

豆包模型调用方式(已验证 2026-05-15)

  • 直接设置 LLM_PROVIDER=doubao 即可使用
  • 无需创建接入点(Endpoint),模型ID即为调用标识
  • API地址:https://ark.cn-beijing.volces.com/api/v3/chat/completions
  • 费率:0.003元/千tokens(lite版)

模型切换

from scripts.llm_semantic_match import *

use_hunyuan()            # 切换到腾讯混元(免费)⭐默认
use_doubao()             # 切换到豆包模型(备选)
switch_model("hunyuan")  # 通过字符串切换
restore_default()        # 恢复默认(混元)
get_current_provider()   # 查看当前使用的模型

命令行模型切换

# 默认使用混元
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"

# 指定使用豆包
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --doubao

# 指定使用混元
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --hunyuan

# 环境变量切换(持久化)
export LLM_PROVIDER=doubao   # 切换到豆包
export LLM_PROVIDER=hunyuan  # 切换到混元(默认)

语义匹配脚本

  • 脚本路径scripts/llm_semantic_match.py
  • 调用方式python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"
  • 输出格式:JSON格式的定额推荐列表

确认机制 (2026-05新增)

工作流程(带确认节点)

用户输入需求
    ↓
Step 1: LLM语义匹配(默认调用腾讯混元API)
    ↓
显示推荐定额列表,等待用户确认 ⭐【确认节点1】
    ↓
    用户回复"确认" → 继续组价
    用户回复"修改" → 重新匹配
    ↓
Step 2: 组价计算
    ↓
显示组价明细,等待用户确认 ⭐【确认节点2】
    ↓
    用户回复"确认" → 生成报价表
    用户回复"调整" → 修改参数
    ↓
Step 3: 生成报价表
    ↓
最终确认是否导出Excel ⭐【确认节点3】
    ↓
完成

确认节点说明

确认节点时机用户操作后续动作
确认节点1定额匹配完成后确认/修改/补充进入组价或重新匹配
确认节点2组价计算完成后确认/调整取费进入报价表生成或重新计算
确认节点3报价表生成前确认导出/查看明细输出Excel或继续编辑

确认界面示例

┌─────────────────────────────────────────┐
│  📋 定额语义匹配结果                    │
├─────────────────────────────────────────┤
│                                         │
│  根据您的需求「热泵机组安装」,           │
│  AI推荐以下定额组合:                    │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │ 【主定额】                       │   │
│  │  ☐ 2-1-5  热泵机组安装(200kW内)│   │
│  │    基价:1,250.00元/台          │   │
│  ├─────────────────────────────────┤   │
│  │ 【辅定额】                       │   │
│  │  ☐ 2-1-12 附件安装             │   │
│  │  ☐ 8-3-28 管道焊接             │   │
│  │  ☐ 8-5-15 管道冲洗试压         │   │
│  └─────────────────────────────────┘   │
│                                         │
│  ─────────────────────────────────────  │
│                                         │
│  ⚠️ 请确认以上定额是否正确?            │
│                                         │
│  ┌─────────────┐  ┌─────────────┐       │
│  │  ✅ 确认    │  │  ❌ 修改    │       │
│  └─────────────┘  └─────────────┘       │
│                                         │
└─────────────────────────────────────────┘

确认超时处理

  • 用户超过5分钟未回复 → 发送提醒
  • 超过10分钟未回复 → 保留当前结果,可随时继续

数据源(强制规则)

📌 双模式说明:本技能支持两种数据源模式,默认使用大模型推理数据(无需配置本地数据库)。如需严格溯源,可切换为唯一来源模式。

模式一:默认模式(大模型推理)⭐推荐

使用大模型的工程造价知识进行定额推理,适用于:

  • 初步估算、方案比选
  • 查询通用定额编号和基价区间
  • 无需额外配置,直接可用

模式二:唯一来源模式(严格溯源)

如需精确到章节条款的溯源数据,请联系作者获取完整数据库,或自行导入:

数据来源

  • 《山东省安装工程消耗量定额(2025版)》13分册
  • 《济南市价目表(2026版)》
  • 《济南造价信息》2026年03期

导入方式

  1. 联系作者获取 quota.db 完整数据库文件(SQLite格式,含约3.5万条定额+8,441条材料价格)
  2. 或自行使用 scripts/migrate_to_sqlite.py 从PDF/Excel源文件导入
  3. quota.db 放入 index/ 目录

数据库结构

  • quotas 表:quota_no、original_quota_no、名称、chapter、base_price、labor_fee 等
  • materials 表:名称、规格型号、含税单价、除税单价、增值税率等
  • FTS5全文索引:支持精确/LIKE模糊/FTS5全文三级检索

示例数据(已脱敏,仅供演示)

以下10条代表性定额为技能内置示例数据,无完整商业授权。

定额编号名称基价(元)单位人工费(元)
AZ-8-3-27低压碳钢阀门安装 DN200313.64205.50
AZ-8-3-28低压钢管焊接 φ57×3.545.2010m28.30
AZ-10-1-1室内给水镀锌钢管 DN5089.5010m56.80
AZ-9-1-1自动喷淋系统管道螺纹连接68.3010m42.10
AZ-4-6-1电气管道钢管敷设 MT2056.80100m35.20
AZ-7-2-1风管制作安装(δ0.75mm)98.5010m²62.40
AZ-6-1-1温度仪表安装125.0078.60
AZ-12-1-1管道除锈(轻锈)18.6010m²12.30
AZ-13-1-1脚手架搭拆(10m内)45.0010m²28.50
AZ-3-1-1碳钢容器安装(5t内)680.00420.00

⚠️ 法律声明:示例数据仅供技能演示使用,不得作为正式计价依据。正式项目请使用经授权的完整定额数据库。

严禁(唯一来源模式)

  • 使用大模型通用知识补充定额数据;无溯源依据不得输出定额子目
  • 材料价格必须从数据库中查取,不得使用估算值

安装工程13分册专业结构(2025版)

重要:《山东省安装工程消耗量定额(2025版)》共 13个分册,覆盖安装工程全专业。

分册号分册名称主要内容常见定额编号示例
第1册机械设备安装工程泵、风机、制冷设备、通用设备的安装与调试,找正、灌浆1-1-1(泵安装)
第2册热力设备安装工程锅炉、换热站、余热利用系统安装2-1-1(锅炉安装)
第3册静置设备与工艺金属结构容器、塔器、储罐制作安装,金属平台/梯子/栏杆3-1-1(塔器安装)
第4册电气设备安装工程变配电、电缆敷设、照明系统、防雷接地、配管配线4-6-1(钢管敷设)
第5册建筑智能化工程综合布线、安防、楼宇自控、智能照明、火灾报警联动5-1-1(综合布线)
第6册自动化控制仪表安装工程工业自动化仪表、过程检测与控制装置、仪表盘柜,共10章47节885个子目6-1-1(温度仪表)
第7册通风空调工程风管、风机、空调机组、冷却塔、消声设备系统安装7-2-1(风管制作安装)
第8册工业管道工程高温高压工业管道预制、安装、试压、吹扫(石化/制药行业)8-3-28(低压钢管焊接)
第9册消防工程水/气体/泡沫灭火系统、火灾自动报警、消防联动设备9-1-1(自动喷淋管道)
第10册给排水、采暖、燃气工程室内外给排水、散热器、地暖、燃气管道及器具安装10-1-1(室内给水镀锌钢管)
第11册通信设备与线缆安装工程电话、网络、有线电视、移动通信室内覆盖系统11-1-1(电话系统安装)
第12册刷油、防腐蚀、绝热工程金属表面防腐、管道绝热、设备保温施工12-1-1(管道除锈)
第13册措施项目脚手架、高层建筑施工增加费、系统调试费、安全文明施工费等可计量措施项目13-1-1(脚手架搭拆)

注:原2016版定额已废止。2025版各分册均体现"四新"技术应用导向,支持绿色建造与智能建造。

核心功能

  1. 定额查询 — 根据工作内容关键词,匹配1条或多条定额子目,标注分册号+章节号+条款号+工作内容原文
  2. 分册精确过滤搜索search_quota.py 支持 volume 参数,先过滤分册再做语义/文本搜索,用法:python search_quota.py "低压焊接" 5 "第8册"
  3. SQLite + FTS5 全文索引search_quota.py v6 优先使用SQLite数据库查询(毫秒级),支持精确/LIKE模糊/FTS5全文三级检索
  4. LLM语义匹配 — 接入腾讯混元API(默认免费)+ 字节豆包API(备选),支持自然语言查询(如"热泵安装"→自动识别为第2册相关定额)
  5. 确认机制 — 定额匹配后需用户确认一次,确保准确性后再执行组价
  6. 材料价格查询 — 按名称/规格型号模糊搜索材料价格(支持含税价/除税价/增值税率)
  7. 一清单对N定额组价 — 主定额 + 辅定额 + 主材费,合成综合单价
  8. 取费计算 — 管理费+利润自动计算(规费科目已取消,社保费/公积金并入人工费)
  9. 报价表输出 — 生成带 Excel 公式的标准报价表,可追溯计算逻辑

重要:一个清单项目通常需要多条定额配合(如:安装定额 + 除锈定额 + 保温定额 + 主材),组价时必须齐全!

search_quota.py 搜索技巧(经验 2026-05-16)

search_quota.py v6 已支持 SQLite 毫秒级查询,优先使用本脚本,避免手写临时Python文件。

⚡ 最快方式:精确编号查询

ash python search_quota.py --quota-no "AZ-8-3-85"

  • 耗时:~200ms(含SQLite初始化)
  • 适用:已知定额编号,直接精确查询

🔍 关键词搜索注意事项

数据库 ame 字段格式:第8册阀门类定额的 ame 字段为 "公称直径(mm以内) 100",不含"DN"前缀和"调节阀"字样。

搜索词结果原因
"DN100 调节阀"❌ 未找到name不含"调节阀","DN100"不匹配(数据库是"100")
"低压调节阀"❌ 未找到chapter="一、低压阀门"不含"调节阀"三字
"100 阀门"✅ 找到name含"100",chapter含"阀门"
"调节阀"⚠️ 找到第6册匹配第6册(仪表调节阀),非第8册
"公称直径 100"✅ 找到精确匹配name字段

📌 推荐搜索策略

`ash

第8册 低压阀门 → 用 "100 阀门" + 分册过滤

python search_quota.py "100 阀门" 5 "第8册"

已知定额编号 → 直接精确查询(最快)

python search_quota.py --quota-no "AZ-8-3-85"

材料查询 → 用 --material 参数

python search_quota.py --material "法兰 DN100" python search_quota.py --material "螺栓 M16" `

⏱️ 性能参考

操作耗时
脚本启动 + SQLite初始化~150ms
--quota-no 精确查询~200ms
关键词搜索("100 阀门")~220ms
完整查询(主定额+辅定额+2种材料)~900ms

定额溯源标准

每个定额子目输出必须包含以下字段,缺一不可:

字段说明
定额编号如 AZ-8-3-28(带专业前缀)
分册号第X册 XX工程
章节号定额手册章节编号
条款号该子目在章节中的条款编号
工作内容定额工作内容原文(逐字引用)
计量单位如:m、m²、个、套等
基价济南市价目表2026版单价

无分册号、章节号、条款号、工作内容原文的定额输出视为不合格。

取费标准(山东安装工程,2025版规则)

重大变化:依据 GB/T 50500-2024,自2025年11月1日起:

  • 取消"规费"科目,社会保险费、住房公积金并入人工费
  • 企业管理费中已含相关统筹费用
  • 费用结构简化为:人工费 + 管理费 + 利润 + 税金
管理费费率 = 48.08%(以人工费为基数)
利润费率   = 29.15%(以人工费+管理费为基数)

综合费率 = (1 + 48.08%) × (1 + 29.15%) - 1 ≈ 91.25%

税前综合单价 = 基价 × (1 + 91.25%) = 基价 × 1.9125
含税综合单价 = 税前综合单价 × (1 + 9%) = 基价 × 1.9125 × 1.09 ≈ 基价 × 2.0846

税金 = 9%(增值税一般纳税人)

执行时间节点(重要)

时间节点政策内容
2025年9月1日国有资金投资项目必须执行 GB/T 50500-2024
2025年11月1日山东省新版费用计算规则与各专业消耗量定额正式施行
2026年1月1日济南公共资源交易中心全面启用新标准,房屋市政工程按新标准执行

⚠️ 过渡期:2026年1月1日前已发标或签约项目可继续沿用2013版清单标准。

价格信息获取渠道

  • 广材助手:一键选取济南2026版价目表,定额、价格、取费同步
  • 广材网:信息价专区,定位济南检索全套价格,支持导出
  • 询价无忧网:2008年至2026年2月历史信息价汇总
  • 济南市城乡交通运输局:公路工程主要材料价格参考信息

工作流程(含一清单对N定额组价)

流程零:LLM语义匹配 (2026-05新增)

触发时机:用户使用自然语言描述工作内容时(如"热泵安装"、"低压管道焊接")

  1. 接收用户输入的工作内容描述
  2. 调用 scripts/llm_semantic_match.py
    python scripts/llm_semantic_match.py "热泵机组安装" "第2册热力设备"
    
  3. 豆包API返回推荐的定额列表(JSON格式)
  4. 展示推荐结果,等待用户确认(⭐确认节点1)
  5. 用户确认后,进入流程一

流程一:定额查询(输出主定额+关联辅定额)

  1. 接收用户确认的定额范围(或直接输入的工作内容关键词)
  2. 根据专业类型确定分册(第X册)
  3. references/ 目录对应分册文件中检索匹配定额
  4. 读取 references/multi_quota_mapping.md 查找该清单的主定额+辅定额标准组合
  5. 输出:
    • 主定额:主定额编号 + 分册 + 章节 + 条款 + 工作内容 + 基价
    • 辅定额List:辅定额1编号 + ... + 辅定额N编号
    • 主材List:主材名称 + 规格 + 估算用量
  6. 若本地无匹配,返回"未查到合规定额,请补充依据"

⚠️ 重要:输出定额后必须进入确认节点,等待用户确认后再执行组价!

输出格式示例

【清单】室内给水镀锌钢管DN50

【主定额】10-1-1(第10册第1章第1条)基价:XX元/10m
【辅定额】
  - 8-7-1 管道冲洗消毒(第8册第7章第1条)基价:XX元/100m
  - 8-5-12 螺纹阀门安装(第8册第5章第12条)基价:XX元/个
【主材】
  - 镀锌钢管DN50:清单量×1.02(含2%损耗)
  - 截止阀DN50:按设计数量

流程二:组价计算(一清单对N定额,含单位换算)

⚠️ 重要:一个清单项目的综合单价 = Σ(所有定额合价) + Σ(所有主材费)

Step 1:识别清单信息

  • 读取清单单位、清单工程量

Step 2:查定额组合

  • 读取 references/multi_quota_mapping.md 获取该清单的标准定额组合
  • 若表中无记录,询问用户需要哪些辅定额

Step 3:逐项计算定额工程量

  • 主定额:定额工程量 = 清单工程量 × 换算系数(查 unit_conversion.md
  • 每个辅定额:定额工程量 = 清单工程量 × 该辅定额的换算系数
  • 主材:主材用量 = 清单工程量 × (1 + 损耗率)

Step 4:逐项计算定额合价

主定额合价 = 主定额工程量 × 主定额基价
辅定额1合价 = 辅定额1工程量 × 辅定额1基价
辅定额2合价 = 辅定额2工程量 × 辅定额2基价
...
主材费 = 主材用量 × 主材信息价

Step 5:计算清单综合单价

清单总价 = 主定额合价 + Σ(辅定额合价) + 主材费
税前综合单价 = 清单总价 × (1 + 48.08%) × (1 + 29.15%)
含税综合单价 = 税前综合单价 × (1 + 9%)

Step 6:输出组价明细表 (⭐确认节点2)

  • 展示每个定额的计算过程
  • 展示主材费计算过程
  • 汇总清单综合单价
  • 等待用户确认后进入流程三

流程三:报价表生成(含多定额分解)(⭐确认节点3)

  1. 读取用户确认的组价结果
  2. 读取 assets/报价模板.xlsx 作为基础模板
  3. 创建以下Sheet结构
    • Sheet1:清单汇总表 | 清单编码 | 清单名称 | 单位 | 工程量 | 综合单价 | 合价 |
    • Sheet2:定额明细表 | 清单编码 | 定额类型(主/辅/主材) | 定额编号 | 子目名称 | 清单单位 | 清单量 | 定额单位 | 换算系数 | 定额量 | 基价 | 定额合价 | 主材费 |
  4. 填充数据:
    • 每个清单对应1行在"清单汇总表"
    • 每个清单对应N行在"定额明细表"(1主定额 + N辅定额 + M主材)
  5. 公式设置
    • 定额工程量:=[@清单工程量]*[@换算系数]
    • 定额合价:=[@定额工程量]*[@基价]
    • 清单综合单价:=SUMIFS(定额明细表[@定额合价],[@清单编码],[@当前清单编码]) * (1+48.08%)*(1+29.15%)
    • 含税综合单价:=[@综合单价]*(1+9%)
  6. 汇总行:=SUBTOTAL(109,[合价])(筛选时不跳行)
  7. 输出文件并告知用户保存路径

Excel模板改进建议: 报价模板.xlsx 需要更新为双Sheet结构(清单汇总 + 定额明细),才能支持一清单对N定额的输出!



目录结构

cnsdoce/
├── SKILL.md                         # 本文件(含MIT-0许可证声明)
├── LICENSE                          # MIT-0许可证(ClawHub强制要求)
├── scripts/
│   ├── search_quota.py             # 定额搜索脚本(SQLite优先)
│   ├── llm_semantic_match.py       # LLM语义匹配脚本
│   ├── calc_fees.py                # 取费计算(2025版规则)
│   ├── match_quota.py              # 定额关键词匹配引擎
│   ├── migrate_to_sqlite.py        # SQLite迁移脚本
│   └── requirements.txt            # Python依赖包
├── references/
│   ├── fee_standard.md            # 取费标准(2025版规则)
│   ├── unit_conversion.md          # 清单与定额单位换算表
│   ├── multi_quota_mapping.md      # 一清单对N定额标准组合
│   └── volume_0[1-9]_*.md         # 13分册章节摘要(精简版)
├── index/
│   └── quota.db                    # SQLite数据库(可选,联系作者获取完整版)
└── assets/
    └── 报价模板.xlsx               # 带公式的标准报价表Excel模板

⚠️ quota.db 完整数据库(含约3.5万条定额+8,441条材料价格)需联系作者获取,或自行导入。

常用定额编号参考(2025版安装工程13分册)

分册专业常见定额编号示例备注
第4册电气安装4-6-1(钢管敷设 MT20)变配电/电缆/照明
第6册仪表安装6-1-1(温度仪表安装)自动化控制仪表
第7册通风空调7-2-1(风管制作安装)风机/空调机组
第8册工业管道8-3-28(低压钢管焊接 φ57×3.5)高温高压管道
第9册消防安装9-1-1(自动喷淋管道)水/气体/泡沫灭火
第10册给排水10-1-1(室内给水镀锌钢管)散热器/地暖/燃气
第12册刷油绝热12-1-1(管道除锈)防腐/保温
第13册措施项目13-1-1(脚手架搭拆)高层增加费/调试费

Excel 输出规范(含单位换算)

报价表 Excel 必须满足:

  1. 表头:项目名称 + 日期 + 编制人
  2. 列结构
    • 序号 | 分册 | 定额编号 | 子目名称 | 章节 | 条款 | 工作内容
    • 清单单位 | 清单工程量 | 定额单位 | 换算系数 | 定额工程量
    • 基价 | 税前综合单价 | 含税综合单价 | 合价 | 备注
  3. 公式列
    • 换算系数:=IF(清单单位="m",0.1,IF(...)) 或 VLOOKUP 查表
    • 定额工程量:=[@清单工程量]*[@换算系数]
    • 税前综合单价:=[@基价]*(1+48.08%)*(1+29.15%)
    • 含税综合单价:=[@税前综合单价]*(1+9%)
    • 合价:=[@定额工程量]*[@含税综合单价]
    • 小计:=SUBTOTAL(109,[合价])(筛选时不跳行)
  4. 格式:千元以上保留2位小数,千元以下取整,金额用万元标注
  5. 合计行:加粗,含大写金额

单位换算规范

详细换算表见 references/unit_conversion.md

通用换算规则

定额单位清单单位换算系数示例
10mm×0.1100m管道 → 10个定额单位
100mm×0.01500m电缆 → 5个定额单位
10m²×0.1200m²风管 → 20个定额单位
10个×0.150个阀门 → 5个定额单位
100kgkg×0.01300kg支架 → 3个定额单位
×1变压器/空调机组不换算

特殊换算(保温工程)

保温体积 = π × (管道外径 + 保温厚度) × 保温厚度 × 管道长度
Excel:=PI()*(D2+δ)*δ*L2

材料匹配与单价换算规则

背景:在生成报价表时,需从材料数据库(quota.dbmaterials 表,或用户导入的完整数据库)匹配未计价材料价格。材料库中规格信息在名称字段中(非规格型号),且计价单位(m/个/t/kg等)可能与定额计量单位(10m/10个/副等)不一致,需要匹配+换算。

材料匹配打分机制

当根据定额子目匹配材料时,采用以下多层级打分策略:

匹配层级条件分数
精确DN匹配材料名称含DN{目标DN}+10
管外径匹配材料名称含D{管外径}管外径D{管外径}+9
φ匹配材料名称含φ{管外径}Φ{管外径}+8
尺寸标记匹配名称含目标数字且有D/φ标记+5
来源优先级价格取定表(2026)+2
来源优先级济南造价信息2026年03期+1
通用条目加分名称无DN/φ/D等规格标记(通用条目)+1
错误DN扣分名称含非目标DN号(如搜索DN250但名称含DN20)-5

DN→管外径映射表

DN1520253240506580100125150200250300350400450500600700800
D1825323845577689108133159219273325377426480530630720820

匹配结果标注

  • 精确匹配(score > 3):直接显示材料名称+规格
  • 参考匹配(score ≤ 3):显示清理后名称+(参考)标记,移除名称中的错误DN号

排除关键词:栏杆、扶手、成品安装、底座、盲板等非工程材料条目需过滤

未计价材料单价换算

材料库中的计价单位(如m、个、t、kg、片、只)可能与定额计量单位(如10m、10个、副)不同,需统一换算:

可换算的维度(同维度)

材料单位定额单位换算系数说明
10个×10管件、阀门
m10m×10管材按长度计价
×21副法兰 = 2片
×21副法兰 = 2只

不可换算的维度(跨维度)

材料单位定额单位处理方式
kg10m⚠️ 无法换算,需人工确认或另找按米计价的条目
t10m / 10个⚠️ 无法换算,标记红色提醒
⚠️ 含义不同(阀门个≠法兰副),需人工确认

未计价材料列规范(Excel输出)

报价表综合单价Sheet末尾应包含以下列:

列名说明
未计价材料材料名称+规格如"无缝钢管 DN50",参考匹配标注(参考)
未计价材料单价(元)数值已换算为定额计量单位的单价,不可换算的红色标注
计价单位定额计量单位与定额"计量单位"列一致
来源数据来源价格取定表(2026)济南造价信息2026年03期(含税单价_202603)

⚠️ 价格溯源:每个未计价材料价格必须标注来源,济南造价信息还需标注具体字段名(含税单价_202603/含税单价_202602/取定价

⚠️ PowerShell/Windows 执行注意事项(经验教训 2026-05-16)

以下是在 Windows PowerShell 5.1 环境下执行定额查询时积累的经验教训,必须严格遵守。

1. PowerShell 5.1 语法限制

操作❌ 错误写法✅ 正确写法说明
链式命令cd X && python a.pycd X; python a.pyPS5.1 不支持 &&/||
条件执行A && BA; if ($?) { B }需用 $? 判断上条命令是否成功
三元运算A ? B : Cif (A) { B } else { C }三元运算符为 PS7+ 特性
空合并$a ?? $bif ($null -eq $a) { $b } else { $a }?? 为 PS7+ 特性

2. 中文编码问题(最常见问题)

问题:在 PowerShell 中直接用 python -c "含中文的字符串" 执行,中文会乱码或报错。

解决方案

  1. 将 Python 代码写入临时 .py 文件(UTF-8 编码)
  2. 执行该 .py 文件
  3. 读取输出结果
# ❌ 错误:中文会乱码
python -c "print('DN100调节阀')"

# ✅ 正确:先写文件再执行
Set-Content -Path temp_query.py -Value "print('DN100调节阀')" -Encoding UTF8
C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe temp_query.py

3. 路径引用规则

场景正确做法原因
引用 .workbuddy 目录使用绝对路径 C:\Users\Administrator\.workbuddy\...相对路径会被 PS 当作模块名解析
Python 可执行文件C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe避免 PATH 混乱
脚本路径绝对路径或确保正确 working directoryPowerShell 的 cwd 可能与预期不同

4. SQLite 列名规范

查询 quota.db 时,必须先确认列名(用 PRAGMA table_info(表名)),严禁猜测列名

表名正确列名常见错误
quotaslabor_fee(人工费)labor_cost
quotasmaterial_fee(材料费)material_cost
quotasmachine_fee(机械费)machine_cost
quotasbase_price(基价)basePrice
materials含税单价(中文列名)tax_included_price

5. 优先使用 search_quota.py 脚本

不要每次都写临时 Python 文件! search_quota.py v6 已支持命令行直接查询,且优先使用 SQLite 毫秒级查询。

# ✅ 推荐:直接调用脚本(快)
$python = "C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe"
$script = "C:\Users\Administrator\.workbuddy\skills\cnsdoce\scripts\search_quota.py"
& $python $script "DN100 调节阀"

# ❌ 避免:每次都创建临时查询文件(慢)
# 仅在脚本无法满足需求时才写临时 .py 文件

6. 快速查询定额的标准流程

用户提问
  ↓
直接调用 search_quota.py(命令行参数传入)
  ↓
(如脚本参数解析不支持中文)→ 写临时 .py 文件查询 SQLite
  ↓
解析结果 → 输出给用户

7. 常见错误速查

错误信息原因解决方案
&& is not recognizedPS5.1 不支持 &&改用 ; 链接命令
labor_cost column not found列名错误,应为 labor_feePRAGMA table_info(quotas) 查列名
中文乱码/问号python -c 编码问题写 .py 文件,UTF8 编码执行
.workbuddy 被当作模块相对路径问题改用绝对路径
FTS5 中文无效unicode61 不支持中文分词中文搜索用 LIKE,不用 FTS5

触发词

以下表述自动触发本技能:

  • "查一下这个定额"
  • "帮我组价"
  • "套这个定额"
  • "生成报价表"
  • "计算一下取费"
  • "@skill://cnsdoce"
  • "山东安装定额" / "2025版安装定额" / "安装工程13分册"
  • "济南价目表" / "济南市价目表2026"
  • "GB/T 50500-2024" / "50500-2024"
  • "管道/电气/暖通/仪表/消防/给排水/智能化/通信/刷油/绝热" + "定额" 或 "组价"
  • "材料价格" / "查询材料" / "钢筋价格" / "钢管价格" + "多少" 或 "查询"

LLM语义匹配触发词

  • "帮我查一下" + 工作内容描述(自然语言)
  • "我想装" / "我想做" + 工程描述
  • "热泵/泵/风机/管道" + "安装" + 规格描述
  • 任何使用自然语言描述工程内容的场景

确认机制触发

  • 定额匹配完成后自动进入确认节点
  • 用户回复"确认"/"对的"/"正确" → 继续下一步
  • 用户回复"修改"/"不对"/"调整" → 重新匹配
  • 用户回复"加上XX" → 在当前基础上补充