← Back to Skills Marketplace
caoshun-sudo

cnsdoce

by caoshun-sudo · GitHub ↗ · v1.0.0 · MIT-0
windows ✓ Security Clean
46
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install cnsdoce
Description
中国工程造价技能,支持安装工程定额查询、组价计算与报价表生成。 数据源支持两种模式(见下方说明): · 默认模式:大模型推理数据(无需本地数据库,推荐新手) · 唯一来源模式:严格限定为山东省安装工程消耗量定额(2025版) + 济南市价目表(2026版) 核心依据:《建设工程工程量清单计价标准》GB/T 505...
README (SKILL.md)

\r \r

中国安装工程造价技能\r

\r

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

\r

多模型支持\r

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

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

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

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

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

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

模型切换\r

from scripts.llm_semantic_match import *\r
\r
use_hunyuan()            # 切换到腾讯混元(免费)⭐默认\r
use_doubao()             # 切换到豆包模型(备选)\r
switch_model("hunyuan")  # 通过字符串切换\r
restore_default()        # 恢复默认(混元)\r
get_current_provider()   # 查看当前使用的模型\r
```\r
\r
### 命令行模型切换\r
```bash\r
# 默认使用混元\r
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"\r
\r
# 指定使用豆包\r
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --doubao\r
\r
# 指定使用混元\r
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --hunyuan\r
\r
# 环境变量切换(持久化)\r
export LLM_PROVIDER=doubao   # 切换到豆包\r
export LLM_PROVIDER=hunyuan  # 切换到混元(默认)\r
```\r
\r
### 语义匹配脚本\r
- **脚本路径**:`scripts/llm_semantic_match.py`\r
- **调用方式**:`python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"`\r
- **输出格式**:JSON格式的定额推荐列表\r
\r
## 确认机制 *(2026-05新增)*\r
\r
### 工作流程(带确认节点)\r
\r
```\r
用户输入需求\r
    ↓\r
Step 1: LLM语义匹配(默认调用腾讯混元API)\r
    ↓\r
显示推荐定额列表,等待用户确认 ⭐【确认节点1】\r
    ↓\r
    用户回复"确认" → 继续组价\r
    用户回复"修改" → 重新匹配\r
    ↓\r
Step 2: 组价计算\r
    ↓\r
显示组价明细,等待用户确认 ⭐【确认节点2】\r
    ↓\r
    用户回复"确认" → 生成报价表\r
    用户回复"调整" → 修改参数\r
    ↓\r
Step 3: 生成报价表\r
    ↓\r
最终确认是否导出Excel ⭐【确认节点3】\r
    ↓\r
完成\r
```\r
\r
### 确认节点说明\r
\r
| 确认节点 | 时机 | 用户操作 | 后续动作 |\r
|---------|------|---------|---------|\r
| 确认节点1 | 定额匹配完成后 | 确认/修改/补充 | 进入组价或重新匹配 |\r
| 确认节点2 | 组价计算完成后 | 确认/调整取费 | 进入报价表生成或重新计算 |\r
| 确认节点3 | 报价表生成前 | 确认导出/查看明细 | 输出Excel或继续编辑 |\r
\r
### 确认界面示例\r
\r
```\r
┌─────────────────────────────────────────┐\r
│  📋 定额语义匹配结果                    │\r
├─────────────────────────────────────────┤\r
│                                         │\r
│  根据您的需求「热泵机组安装」,           │\r
│  AI推荐以下定额组合:                    │\r
│                                         │\r
│  ┌─────────────────────────────────┐   │\r
│  │ 【主定额】                       │   │\r
│  │  ☐ 2-1-5  热泵机组安装(200kW内)│   │\r
│  │    基价:1,250.00元/台          │   │\r
│  ├─────────────────────────────────┤   │\r
│  │ 【辅定额】                       │   │\r
│  │  ☐ 2-1-12 附件安装             │   │\r
│  │  ☐ 8-3-28 管道焊接             │   │\r
│  │  ☐ 8-5-15 管道冲洗试压         │   │\r
│  └─────────────────────────────────┘   │\r
│                                         │\r
│  ─────────────────────────────────────  │\r
│                                         │\r
│  ⚠️ 请确认以上定额是否正确?            │\r
│                                         │\r
│  ┌─────────────┐  ┌─────────────┐       │\r
│  │  ✅ 确认    │  │  ❌ 修改    │       │\r
│  └─────────────┘  └─────────────┘       │\r
│                                         │\r
└─────────────────────────────────────────┘\r
```\r
\r
### 确认超时处理\r
- 用户超过5分钟未回复 → 发送提醒\r
- 超过10分钟未回复 → 保留当前结果,可随时继续\r
\r
## 数据源(强制规则)\r
\r
> **📌 双模式说明**:本技能支持两种数据源模式,默认使用大模型推理数据(无需配置本地数据库)。如需严格溯源,可切换为唯一来源模式。\r
\r
### 模式一:默认模式(大模型推理)⭐推荐\r
\r
使用大模型的工程造价知识进行定额推理,适用于:\r
- 初步估算、方案比选\r
- 查询通用定额编号和基价区间\r
- 无需额外配置,直接可用\r
\r
### 模式二:唯一来源模式(严格溯源)\r
\r
如需精确到章节条款的溯源数据,请联系作者获取完整数据库,或自行导入:\r
\r
**数据来源**:\r
- 《山东省安装工程消耗量定额(2025版)》13分册\r
- 《济南市价目表(2026版)》\r
- 《济南造价信息》2026年03期\r
\r
**导入方式**:\r
1. 联系作者获取 `quota.db` 完整数据库文件(SQLite格式,含约3.5万条定额+8,441条材料价格)\r
2. 或自行使用 `scripts/migrate_to_sqlite.py` 从PDF/Excel源文件导入\r
3. 将 `quota.db` 放入 `index/` 目录\r
\r
**数据库结构**:\r
- `quotas` 表:quota_no、original_quota_no、名称、chapter、base_price、labor_fee 等\r
- `materials` 表:名称、规格型号、含税单价、除税单价、增值税率等\r
- FTS5全文索引:支持精确/LIKE模糊/FTS5全文三级检索\r
\r
### 示例数据(已脱敏,仅供演示)\r
\r
> 以下10条代表性定额为技能内置示例数据,无完整商业授权。\r
\r
| 定额编号 | 名称 | 基价(元) | 单位 | 人工费(元) |\r
|---------|------|---------|------|-----------|\r
| AZ-8-3-27 | 低压碳钢阀门安装 DN200 | 313.64 | 个 | 205.50 |\r
| AZ-8-3-28 | 低压钢管焊接 φ57×3.5 | 45.20 | 10m | 28.30 |\r
| AZ-10-1-1 | 室内给水镀锌钢管 DN50 | 89.50 | 10m | 56.80 |\r
| AZ-9-1-1 | 自动喷淋系统管道螺纹连接 | 68.30 | 10m | 42.10 |\r
| AZ-4-6-1 | 电气管道钢管敷设 MT20 | 56.80 | 100m | 35.20 |\r
| AZ-7-2-1 | 风管制作安装(δ0.75mm) | 98.50 | 10m² | 62.40 |\r
| AZ-6-1-1 | 温度仪表安装 | 125.00 | 支 | 78.60 |\r
| AZ-12-1-1 | 管道除锈(轻锈) | 18.60 | 10m² | 12.30 |\r
| AZ-13-1-1 | 脚手架搭拆(10m内) | 45.00 | 10m² | 28.50 |\r
| AZ-3-1-1 | 碳钢容器安装(5t内) | 680.00 | 台 | 420.00 |\r
\r
> ⚠️ **法律声明**:示例数据仅供技能演示使用,不得作为正式计价依据。正式项目请使用经授权的完整定额数据库。\r
\r
### 严禁(唯一来源模式)\r
- 使用大模型通用知识补充定额数据;无溯源依据不得输出定额子目\r
- 材料价格必须从数据库中查取,不得使用估算值\r
\r
## 安装工程13分册专业结构(2025版)\r
\r
> **重要**:《山东省安装工程消耗量定额(2025版)》共 **13个分册**,覆盖安装工程全专业。\r
\r
| 分册号 | 分册名称 | 主要内容 | 常见定额编号示例 |\r
|:------:|---------|---------|---------------|\r
| 第1册 | 机械设备安装工程 | 泵、风机、制冷设备、通用设备的安装与调试,找正、灌浆 | 1-1-1(泵安装) |\r
| 第2册 | 热力设备安装工程 | 锅炉、换热站、余热利用系统安装 | 2-1-1(锅炉安装) |\r
| 第3册 | 静置设备与工艺金属结构 | 容器、塔器、储罐制作安装,金属平台/梯子/栏杆 | 3-1-1(塔器安装) |\r
| 第4册 | 电气设备安装工程 | 变配电、电缆敷设、照明系统、防雷接地、配管配线 | 4-6-1(钢管敷设) |\r
| 第5册 | 建筑智能化工程 | 综合布线、安防、楼宇自控、智能照明、火灾报警联动 | 5-1-1(综合布线) |\r
| 第6册 | 自动化控制仪表安装工程 | 工业自动化仪表、过程检测与控制装置、仪表盘柜,共10章47节885个子目 | 6-1-1(温度仪表) |\r
| 第7册 | 通风空调工程 | 风管、风机、空调机组、冷却塔、消声设备系统安装 | 7-2-1(风管制作安装) |\r
| 第8册 | 工业管道工程 | 高温高压工业管道预制、安装、试压、吹扫(石化/制药行业) | 8-3-28(低压钢管焊接) |\r
| 第9册 | 消防工程 | 水/气体/泡沫灭火系统、火灾自动报警、消防联动设备 | 9-1-1(自动喷淋管道) |\r
| 第10册 | 给排水、采暖、燃气工程 | 室内外给排水、散热器、地暖、燃气管道及器具安装 | 10-1-1(室内给水镀锌钢管) |\r
| 第11册 | 通信设备与线缆安装工程 | 电话、网络、有线电视、移动通信室内覆盖系统 | 11-1-1(电话系统安装) |\r
| 第12册 | 刷油、防腐蚀、绝热工程 | 金属表面防腐、管道绝热、设备保温施工 | 12-1-1(管道除锈) |\r
| 第13册 | 措施项目 | 脚手架、高层建筑施工增加费、系统调试费、安全文明施工费等可计量措施项目 | 13-1-1(脚手架搭拆) |\r
\r
> 注:原2016版定额已废止。2025版各分册均体现"四新"技术应用导向,支持绿色建造与智能建造。\r
\r
## 核心功能\r
\r
1. **定额查询** — 根据工作内容关键词,匹配1条或多条定额子目,标注分册号+章节号+条款号+工作内容原文\r
2. **分册精确过滤搜索** — `search_quota.py` 支持 `volume` 参数,先过滤分册再做语义/文本搜索,用法:`python search_quota.py "低压焊接" 5 "第8册"`\r
3. **SQLite + FTS5 全文索引** — `search_quota.py v6` 优先使用SQLite数据库查询(毫秒级),支持精确/LIKE模糊/FTS5全文三级检索\r
4. **LLM语义匹配** — 接入腾讯混元API(默认免费)+ 字节豆包API(备选),支持自然语言查询(如"热泵安装"→自动识别为第2册相关定额)\r
5. **确认机制** — 定额匹配后需用户确认一次,确保准确性后再执行组价\r
6. **材料价格查询** — 按名称/规格型号模糊搜索材料价格(支持含税价/除税价/增值税率)\r
7. **一清单对N定额组价** — 主定额 + 辅定额 + 主材费,合成综合单价\r
8. **取费计算** — 管理费+利润自动计算(规费科目已取消,社保费/公积金并入人工费)\r
9. **报价表输出** — 生成带 Excel 公式的标准报价表,可追溯计算逻辑\r
\r
> **重要**:一个清单项目通常需要多条定额配合(如:安装定额 + 除锈定额 + 保温定额 + 主材),组价时必须齐全!\r
\r
## search_quota.py 搜索技巧(经验 2026-05-16)\r
\r
> search_quota.py v6 已支持 SQLite 毫秒级查询,**优先使用本脚本**,避免手写临时Python文件。\r
\r
### ⚡ 最快方式:精确编号查询\r
\r
`\bash\r
python search_quota.py --quota-no "AZ-8-3-85"\r
`\r
- 耗时:~200ms(含SQLite初始化)\r
- 适用:已知定额编号,直接精确查询\r
\r
### 🔍 关键词搜索注意事项\r
\r
**数据库 \r
ame 字段格式**:第8册阀门类定额的 \r
ame 字段为 **"公称直径(mm以内) 100"**,不含"DN"前缀和"调节阀"字样。\r
\r
| 搜索词 | 结果 | 原因 |\r
|--------|------|------|\r
| "DN100 调节阀" | ❌ 未找到 | name不含"调节阀","DN100"不匹配(数据库是"100") |\r
| "低压调节阀" | ❌ 未找到 | chapter="一、低压阀门"不含"调节阀"三字 |\r
| "100 阀门" | ✅ 找到 | name含"100",chapter含"阀门" |\r
| "调节阀" | ⚠️ 找到第6册 | 匹配第6册(仪表调节阀),非第8册 |\r
| "公称直径 100" | ✅ 找到 | 精确匹配name字段 |\r
\r
### 📌 推荐搜索策略\r
\r
`\bash\r
# 第8册 低压阀门 → 用 "100 阀门" + 分册过滤\r
python search_quota.py "100 阀门" 5 "第8册"\r
\r
# 已知定额编号 → 直接精确查询(最快)\r
python search_quota.py --quota-no "AZ-8-3-85"\r
\r
# 材料查询 → 用 --material 参数\r
python search_quota.py --material "法兰 DN100"\r
python search_quota.py --material "螺栓 M16"\r
`\r
\r
### ⏱️ 性能参考\r
\r
| 操作 | 耗时 |\r
|------|------|\r
| 脚本启动 + SQLite初始化 | ~150ms |\r
| --quota-no 精确查询 | ~200ms |\r
| 关键词搜索("100 阀门") | ~220ms |\r
| 完整查询(主定额+辅定额+2种材料) | ~900ms |\r
\r
---\r
\r
## 定额溯源标准\r
\r
每个定额子目输出必须包含以下字段,缺一不可:\r
\r
| 字段 | 说明 |\r
|------|------|\r
| 定额编号 | 如 AZ-8-3-28(带专业前缀) |\r
| 分册号 | 第X册 XX工程 |\r
| 章节号 | 定额手册章节编号 |\r
| 条款号 | 该子目在章节中的条款编号 |\r
| 工作内容 | 定额工作内容原文(逐字引用) |\r
| 计量单位 | 如:m、m²、个、套等 |\r
| 基价 | 济南市价目表2026版单价 |\r
\r
无分册号、章节号、条款号、工作内容原文的定额输出视为不合格。\r
\r
## 取费标准(山东安装工程,2025版规则)\r
\r
> **重大变化**:依据 GB/T 50500-2024,自2025年11月1日起:\r
> - **取消"规费"科目**,社会保险费、住房公积金并入人工费\r
> - 企业管理费中已含相关统筹费用\r
> - 费用结构简化为:人工费 + 管理费 + 利润 + 税金\r
\r
```\r
管理费费率 = 48.08%(以人工费为基数)\r
利润费率   = 29.15%(以人工费+管理费为基数)\r
\r
综合费率 = (1 + 48.08%) × (1 + 29.15%) - 1 ≈ 91.25%\r
\r
税前综合单价 = 基价 × (1 + 91.25%) = 基价 × 1.9125\r
含税综合单价 = 税前综合单价 × (1 + 9%) = 基价 × 1.9125 × 1.09 ≈ 基价 × 2.0846\r
```\r
\r
税金 = 9%(增值税一般纳税人)\r
\r
## 执行时间节点(重要)\r
\r
| 时间节点 | 政策内容 |\r
|---------|---------|\r
| 2025年9月1日 | 国有资金投资项目**必须执行** GB/T 50500-2024 |\r
| 2025年11月1日 | 山东省新版费用计算规则与各专业消耗量定额正式施行 |\r
| 2026年1月1日 | 济南公共资源交易中心全面启用新标准,房屋市政工程按新标准执行 |\r
\r
> ⚠️ 过渡期:2026年1月1日前已发标或签约项目可继续沿用2013版清单标准。\r
\r
## 价格信息获取渠道\r
\r
- **广材助手**:一键选取济南2026版价目表,定额、价格、取费同步\r
- **广材网**:信息价专区,定位济南检索全套价格,支持导出\r
- **询价无忧网**:2008年至2026年2月历史信息价汇总\r
- **济南市城乡交通运输局**:公路工程主要材料价格参考信息\r
\r
## 工作流程(含一清单对N定额组价)\r
\r
### 流程零:LLM语义匹配 *(2026-05新增)*\r
\r
> **触发时机**:用户使用自然语言描述工作内容时(如"热泵安装"、"低压管道焊接")\r
\r
1. 接收用户输入的工作内容描述\r
2. 调用 `scripts/llm_semantic_match.py`:\r
   ```bash\r
   python scripts/llm_semantic_match.py "热泵机组安装" "第2册热力设备"\r
   ```\r
3. 豆包API返回推荐的定额列表(JSON格式)\r
4. 展示推荐结果,等待用户确认(⭐确认节点1)\r
5. 用户确认后,进入流程一\r
\r
### 流程一:定额查询(输出主定额+关联辅定额)\r
\r
1. 接收用户确认的定额范围(或直接输入的工作内容关键词)\r
2. 根据专业类型确定分册(第X册)\r
3. 在 `references/` 目录对应分册文件中检索匹配定额\r
4. **读取 `references/multi_quota_mapping.md` 查找该清单的主定额+辅定额标准组合**\r
5. 输出:\r
   - **主定额**:主定额编号 + 分册 + 章节 + 条款 + 工作内容 + 基价\r
   - **辅定额List**:辅定额1编号 + ... + 辅定额N编号\r
   - **主材List**:主材名称 + 规格 + 估算用量\r
6. 若本地无匹配,返回"未查到合规定额,请补充依据"\r
\r
> **⚠️ 重要**:输出定额后必须进入确认节点,等待用户确认后再执行组价!\r
\r
> **输出格式示例**:\r
> ```\r
> 【清单】室内给水镀锌钢管DN50\r
> \r
> 【主定额】10-1-1(第10册第1章第1条)基价:XX元/10m\r
> 【辅定额】\r
>   - 8-7-1 管道冲洗消毒(第8册第7章第1条)基价:XX元/100m\r
>   - 8-5-12 螺纹阀门安装(第8册第5章第12条)基价:XX元/个\r
> 【主材】\r
>   - 镀锌钢管DN50:清单量×1.02(含2%损耗)\r
>   - 截止阀DN50:按设计数量\r
> ```\r
\r
### 流程二:组价计算(一清单对N定额,含单位换算)\r
\r
> ⚠️ **重要**:一个清单项目的综合单价 = Σ(所有定额合价) + Σ(所有主材费)\r
\r
**Step 1:识别清单信息**\r
- 读取清单单位、清单工程量\r
\r
**Step 2:查定额组合**\r
- 读取 `references/multi_quota_mapping.md` 获取该清单的标准定额组合\r
- 若表中无记录,询问用户需要哪些辅定额\r
\r
**Step 3:逐项计算定额工程量**\r
- 对**主定额**:定额工程量 = 清单工程量 × 换算系数(查 `unit_conversion.md`)\r
- 对**每个辅定额**:定额工程量 = 清单工程量 × 该辅定额的换算系数\r
- 对**主材**:主材用量 = 清单工程量 × (1 + 损耗率)\r
\r
**Step 4:逐项计算定额合价**\r
```\r
主定额合价 = 主定额工程量 × 主定额基价\r
辅定额1合价 = 辅定额1工程量 × 辅定额1基价\r
辅定额2合价 = 辅定额2工程量 × 辅定额2基价\r
...\r
主材费 = 主材用量 × 主材信息价\r
```\r
\r
**Step 5:计算清单综合单价**\r
```\r
清单总价 = 主定额合价 + Σ(辅定额合价) + 主材费\r
税前综合单价 = 清单总价 × (1 + 48.08%) × (1 + 29.15%)\r
含税综合单价 = 税前综合单价 × (1 + 9%)\r
```\r
\r
**Step 6:输出组价明细表** *(⭐确认节点2)*\r
- 展示每个定额的计算过程\r
- 展示主材费计算过程\r
- 汇总清单综合单价\r
- **等待用户确认后进入流程三**\r
\r
### 流程三:报价表生成(含多定额分解)*(⭐确认节点3)*\r
\r
1. 读取用户确认的组价结果\r
2. 读取 `assets/报价模板.xlsx` 作为基础模板\r
3. **创建以下Sheet结构**:\r
   - **Sheet1:清单汇总表**\r
     | 清单编码 | 清单名称 | 单位 | 工程量 | 综合单价 | 合价 |\r
   - **Sheet2:定额明细表**\r
     | 清单编码 | 定额类型(主/辅/主材) | 定额编号 | 子目名称 | 清单单位 | 清单量 | 定额单位 | 换算系数 | 定额量 | 基价 | 定额合价 | 主材费 |\r
3. 填充数据:\r
   - 每个清单对应1行在"清单汇总表"\r
   - 每个清单对应N行在"定额明细表"(1主定额 + N辅定额 + M主材)\r
4. **公式设置**:\r
   - 定额工程量:`=[@清单工程量]*[@换算系数]`\r
   - 定额合价:`=[@定额工程量]*[@基价]`\r
   - 清单综合单价:`=SUMIFS(定额明细表[@定额合价],[@清单编码],[@当前清单编码]) * (1+48.08%)*(1+29.15%)`\r
   - 含税综合单价:`=[@综合单价]*(1+9%)`\r
5. 汇总行:`=SUBTOTAL(109,[合价])`(筛选时不跳行)\r
6. 输出文件并告知用户保存路径\r
\r
> **Excel模板改进建议**:\r
> 报价模板.xlsx 需要更新为双Sheet结构(清单汇总 + 定额明细),才能支持一清单对N定额的输出!\r
\r
---\r
---\r
\r
## 目录结构\r
\r
```\r
cnsdoce/\r
├── SKILL.md                         # 本文件(含MIT-0许可证声明)\r
├── LICENSE                          # MIT-0许可证(ClawHub强制要求)\r
├── scripts/\r
│   ├── search_quota.py             # 定额搜索脚本(SQLite优先)\r
│   ├── llm_semantic_match.py       # LLM语义匹配脚本\r
│   ├── calc_fees.py                # 取费计算(2025版规则)\r
│   ├── match_quota.py              # 定额关键词匹配引擎\r
│   ├── migrate_to_sqlite.py        # SQLite迁移脚本\r
│   └── requirements.txt            # Python依赖包\r
├── references/\r
│   ├── fee_standard.md            # 取费标准(2025版规则)\r
│   ├── unit_conversion.md          # 清单与定额单位换算表\r
│   ├── multi_quota_mapping.md      # 一清单对N定额标准组合\r
│   └── volume_0[1-9]_*.md         # 13分册章节摘要(精简版)\r
├── index/\r
│   └── quota.db                    # SQLite数据库(可选,联系作者获取完整版)\r
└── assets/\r
    └── 报价模板.xlsx               # 带公式的标准报价表Excel模板\r
```\r
\r
> ⚠️ `quota.db` 完整数据库(含约3.5万条定额+8,441条材料价格)需联系作者获取,或自行导入。\r
\r
## 常用定额编号参考(2025版安装工程13分册)\r
\r
| 分册 | 专业 | 常见定额编号示例 | 备注 |\r
|:----:|------|----------------|------|\r
| 第4册 | 电气安装 | 4-6-1(钢管敷设 MT20) | 变配电/电缆/照明 |\r
| 第6册 | 仪表安装 | 6-1-1(温度仪表安装) | 自动化控制仪表 |\r
| 第7册 | 通风空调 | 7-2-1(风管制作安装) | 风机/空调机组 |\r
| 第8册 | 工业管道 | 8-3-28(低压钢管焊接 φ57×3.5) | 高温高压管道 |\r
| 第9册 | 消防安装 | 9-1-1(自动喷淋管道) | 水/气体/泡沫灭火 |\r
| 第10册 | 给排水 | 10-1-1(室内给水镀锌钢管) | 散热器/地暖/燃气 |\r
| 第12册 | 刷油绝热 | 12-1-1(管道除锈) | 防腐/保温 |\r
| 第13册 | 措施项目 | 13-1-1(脚手架搭拆) | 高层增加费/调试费 |\r
\r
## Excel 输出规范(含单位换算)\r
\r
报价表 Excel 必须满足:\r
\r
1. **表头**:项目名称 + 日期 + 编制人\r
2. **列结构**:\r
   - 序号 | 分册 | 定额编号 | 子目名称 | 章节 | 条款 | 工作内容\r
   - **清单单位** | **清单工程量** | **定额单位** | **换算系数** | **定额工程量**\r
   - 基价 | 税前综合单价 | 含税综合单价 | 合价 | 备注\r
3. **公式列**:\r
   - 换算系数:`=IF(清单单位="m",0.1,IF(...))` 或 VLOOKUP 查表\r
   - 定额工程量:`=[@清单工程量]*[@换算系数]`\r
   - 税前综合单价:`=[@基价]*(1+48.08%)*(1+29.15%)`\r
   - 含税综合单价:`=[@税前综合单价]*(1+9%)`\r
   - 合价:`=[@定额工程量]*[@含税综合单价]`\r
   - 小计:`=SUBTOTAL(109,[合价])`(筛选时不跳行)\r
4. **格式**:千元以上保留2位小数,千元以下取整,金额用万元标注\r
5. **合计行**:加粗,含大写金额\r
\r
---\r
\r
## 单位换算规范\r
\r
> 详细换算表见 `references/unit_conversion.md`\r
\r
### 通用换算规则\r
\r
| 定额单位 | 清单单位 | 换算系数 | 示例 |\r
|---------|---------|---------|------|\r
| 10m | m | ×0.1 | 100m管道 → 10个定额单位 |\r
| 100m | m | ×0.01 | 500m电缆 → 5个定额单位 |\r
| 10m² | m² | ×0.1 | 200m²风管 → 20个定额单位 |\r
| 10个 | 个 | ×0.1 | 50个阀门 → 5个定额单位 |\r
| 100kg | kg | ×0.01 | 300kg支架 → 3个定额单位 |\r
| 个 | 个 | ×1 | 变压器/空调机组不换算 |\r
\r
### 特殊换算(保温工程)\r
\r
```\r
保温体积 = π × (管道外径 + 保温厚度) × 保温厚度 × 管道长度\r
Excel:=PI()*(D2+δ)*δ*L2\r
```\r
\r
## 材料匹配与单价换算规则\r
\r
> **背景**:在生成报价表时,需从材料数据库(`quota.db` 的 `materials` 表,或用户导入的完整数据库)匹配未计价材料价格。材料库中规格信息在`名称`字段中(非`规格型号`),且计价单位(m/个/t/kg等)可能与定额计量单位(10m/10个/副等)不一致,需要匹配+换算。\r
\r
### 材料匹配打分机制\r
\r
当根据定额子目匹配材料时,采用以下多层级打分策略:\r
\r
| 匹配层级 | 条件 | 分数 |\r
|---------|------|:----:|\r
| 精确DN匹配 | 材料名称含`DN{目标DN}` | +10 |\r
| 管外径匹配 | 材料名称含`D{管外径}`或`管外径D{管外径}` | +9 |\r
| φ匹配 | 材料名称含`φ{管外径}`或`Φ{管外径}` | +8 |\r
| 尺寸标记匹配 | 名称含目标数字且有D/φ标记 | +5 |\r
| 来源优先级 | 价格取定表(2026) | +2 |\r
| 来源优先级 | 济南造价信息2026年03期 | +1 |\r
| 通用条目加分 | 名称无DN/φ/D等规格标记(通用条目) | +1 |\r
| 错误DN扣分 | 名称含非目标DN号(如搜索DN250但名称含DN20) | -5 |\r
\r
**DN→管外径映射表**:\r
\r
| DN | 15 | 20 | 25 | 32 | 40 | 50 | 65 | 80 | 100 | 125 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 | 600 | 700 | 800 |\r
|----|----|----|----|----|----|----|----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|\r
| D | 18 | 25 | 32 | 38 | 45 | 57 | 76 | 89 | 108 | 133 | 159 | 219 | 273 | 325 | 377 | 426 | 480 | 530 | 630 | 720 | 820 |\r
\r
**匹配结果标注**:\r
- **精确匹配**(score > 3):直接显示材料名称+规格\r
- **参考匹配**(score ≤ 3):显示清理后名称+`(参考)`标记,移除名称中的错误DN号\r
\r
**排除关键词**:栏杆、扶手、成品安装、底座、盲板等非工程材料条目需过滤\r
\r
### 未计价材料单价换算\r
\r
材料库中的计价单位(如m、个、t、kg、片、只)可能与定额计量单位(如10m、10个、副)不同,需统一换算:\r
\r
**可换算的维度(同维度)**:\r
\r
| 材料单位 | 定额单位 | 换算系数 | 说明 |\r
|---------|---------|:--------:|------|\r
| 个 | 10个 | ×10 | 管件、阀门 |\r
| m | 10m | ×10 | 管材按长度计价 |\r
| 片 | 副 | ×2 | 1副法兰 = 2片 |\r
| 只 | 副 | ×2 | 1副法兰 = 2只 |\r
\r
**不可换算的维度(跨维度)**:\r
\r
| 材料单位 | 定额单位 | 处理方式 |\r
|---------|---------|---------|\r
| kg | 10m | ⚠️ 无法换算,需人工确认或另找按米计价的条目 |\r
| t | 10m / 10个 | ⚠️ 无法换算,标记红色提醒 |\r
| 个 | 副 | ⚠️ 含义不同(阀门个≠法兰副),需人工确认 |\r
\r
### 未计价材料列规范(Excel输出)\r
\r
报价表综合单价Sheet末尾应包含以下列:\r
\r
| 列 | 列名 | 说明 |\r
|----|------|------|\r
| 未计价材料 | 材料名称+规格 | 如"无缝钢管 DN50",参考匹配标注`(参考)` |\r
| 未计价材料单价(元) | 数值 | 已换算为定额计量单位的单价,不可换算的红色标注 |\r
| 计价单位 | 定额计量单位 | 与定额"计量单位"列一致 |\r
| 来源 | 数据来源 | `价格取定表(2026)` 或 `济南造价信息2026年03期(含税单价_202603)` |\r
\r
> ⚠️ **价格溯源**:每个未计价材料价格必须标注来源,济南造价信息还需标注具体字段名(`含税单价_202603`/`含税单价_202602`/`取定价`)\r
\r
## ⚠️ PowerShell/Windows 执行注意事项(经验教训 2026-05-16)\r
\r
> 以下是在 Windows PowerShell 5.1 环境下执行定额查询时积累的经验教训,必须严格遵守。\r
\r
### 1. PowerShell 5.1 语法限制\r
\r
| 操作 | ❌ 错误写法 | ✅ 正确写法 | 说明 |\r
|------|------------|------------|------|\r
| 链式命令 | `cd X && python a.py` | `cd X; python a.py` | PS5.1 不支持 `&&`/`\|\|` |\r
| 条件执行 | `A && B` | `A; if ($?) { B }` | 需用 `$?` 判断上条命令是否成功 |\r
| 三元运算 | `A ? B : C` | `if (A) { B } else { C }` | 三元运算符为 PS7+ 特性 |\r
| 空合并 | `$a ?? $b` | `if ($null -eq $a) { $b } else { $a }` | `??` 为 PS7+ 特性 |\r
\r
### 2. 中文编码问题(最常见问题)\r
\r
**问题**:在 PowerShell 中直接用 `python -c "含中文的字符串"` 执行,中文会乱码或报错。\r
\r
**解决方案**:\r
1. 将 Python 代码写入临时 `.py` 文件(UTF-8 编码)\r
2. 执行该 `.py` 文件\r
3. 读取输出结果\r
\r
```powershell\r
# ❌ 错误:中文会乱码\r
python -c "print('DN100调节阀')"\r
\r
# ✅ 正确:先写文件再执行\r
Set-Content -Path temp_query.py -Value "print('DN100调节阀')" -Encoding UTF8\r
C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe temp_query.py\r
```\r
\r
### 3. 路径引用规则\r
\r
| 场景 | 正确做法 | 原因 |\r
|------|---------|------|\r
| 引用 `.workbuddy` 目录 | 使用绝对路径 `C:\Users\Administrator\.workbuddy\...` | 相对路径会被 PS 当作模块名解析 |\r
| Python 可执行文件 | `C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe` | 避免 PATH 混乱 |\r
| 脚本路径 | 绝对路径或确保正确 working directory | PowerShell 的 cwd 可能与预期不同 |\r
\r
### 4. SQLite 列名规范\r
\r
查询 `quota.db` 时,必须先确认列名(用 `PRAGMA table_info(表名)`),**严禁猜测列名**。\r
\r
| 表名 | 正确列名 | 常见错误 |\r
|------|---------|---------|\r
| `quotas` | `labor_fee`(人工费) | `labor_cost` ❌ |\r
| `quotas` | `material_fee`(材料费) | `material_cost` ❌ |\r
| `quotas` | `machine_fee`(机械费) | `machine_cost` ❌ |\r
| `quotas` | `base_price`(基价) | `basePrice` ❌ |\r
| `materials` | `含税单价`(中文列名) | `tax_included_price` ❌ |\r
\r
### 5. 优先使用 search_quota.py 脚本\r
\r
**不要每次都写临时 Python 文件!** `search_quota.py v6` 已支持命令行直接查询,且优先使用 SQLite 毫秒级查询。\r
\r
```powershell\r
# ✅ 推荐:直接调用脚本(快)\r
$python = "C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe"\r
$script = "C:\Users\Administrator\.workbuddy\skills\cnsdoce\scripts\search_quota.py"\r
& $python $script "DN100 调节阀"\r
\r
# ❌ 避免:每次都创建临时查询文件(慢)\r
# 仅在脚本无法满足需求时才写临时 .py 文件\r
```\r
\r
### 6. 快速查询定额的标准流程\r
\r
```\r
用户提问\r
  ↓\r
直接调用 search_quota.py(命令行参数传入)\r
  ↓\r
(如脚本参数解析不支持中文)→ 写临时 .py 文件查询 SQLite\r
  ↓\r
解析结果 → 输出给用户\r
```\r
\r
### 7. 常见错误速查\r
\r
| 错误信息 | 原因 | 解决方案 |\r
|---------|------|---------|\r
| `&&` is not recognized | PS5.1 不支持 `&&` | 改用 `;` 链接命令 |\r
| `labor_cost` column not found | 列名错误,应为 `labor_fee` | `PRAGMA table_info(quotas)` 查列名 |\r
| 中文乱码/问号 | `python -c` 编码问题 | 写 .py 文件,UTF8 编码执行 |\r
| `.workbuddy` 被当作模块 | 相对路径问题 | 改用绝对路径 |\r
| FTS5 中文无效 | `unicode61` 不支持中文分词 | 中文搜索用 `LIKE`,不用 FTS5 |\r
\r
---\r
\r
## 触发词\r
\r
以下表述自动触发本技能:\r
- "查一下这个定额"\r
- "帮我组价"\r
- "套这个定额"\r
- "生成报价表"\r
- "计算一下取费"\r
- "@skill://cnsdoce"\r
- "山东安装定额" / "2025版安装定额" / "安装工程13分册"\r
- "济南价目表" / "济南市价目表2026"\r
- "GB/T 50500-2024" / "50500-2024"\r
- "管道/电气/暖通/仪表/消防/给排水/智能化/通信/刷油/绝热" + "定额" 或 "组价"\r
- "材料价格" / "查询材料" / "钢筋价格" / "钢管价格" + "多少" 或 "查询"\r
\r
### LLM语义匹配触发词\r
- "帮我查一下" + 工作内容描述(自然语言)\r
- "我想装" / "我想做" + 工程描述\r
- "热泵/泵/风机/管道" + "安装" + 规格描述\r
- 任何使用自然语言描述工程内容的场景\r
\r
### 确认机制触发\r
- 定额匹配完成后自动进入确认节点\r
- 用户回复"确认"/"对的"/"正确" → 继续下一步\r
- 用户回复"修改"/"不对"/"调整" → 重新匹配\r
- 用户回复"加上XX" → 在当前基础上补充\r
Usage Guidance
Install if you are comfortable with a construction-estimating skill that may call Tencent Hunyuan or Doubao for semantic matching. For confidential bids, customer names, infrastructure details, or strict audit requirements, use the local SQLite/search workflow, avoid cloud LLM matching, and verify that outputs cite the local quota database before relying on them.
Capability Tags
requires-oauth-tokenrequires-sensitive-credentials
Capability Assessment
Purpose & Capability
The skill's quota lookup, fee calculation, SQLite search, migration utilities, and LLM-assisted semantic matching fit the stated construction-estimating purpose. Cloud LLM use is part of the advertised workflow, so users should treat submitted work descriptions as potentially leaving the local machine.
Instruction Scope
Runtime instructions are mostly user-driven and include confirmation checkpoints before pricing/export steps. The unique-source mode is described as strict, but the artifacts do not show a hard enforcement switch, so users needing auditable local-only results should deliberately use the local database/search path.
Install Mechanism
No installer, auto-run hook, or hidden install-time behavior was found. Dependencies are declared in requirements.txt and VirusTotal telemetry is clean.
Credentials
Windows/Python, local reference files, optional SQLite index use, and provider API calls are proportionate for a quota-search and pricing skill. The migration script rewrites the skill's own index/quota.db from expected source files, not broad local content.
Persistence & Privilege
The skill uses optional API keys from environment variables and optional local databases, with no evidence of background persistence, privilege escalation, credential harvesting, or destructive actions. One unused helper misdescribes Tencent token generation, but active code paths use either an API key or the Tencent SDK credential object.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install cnsdoce
  3. After installation, invoke the skill by name or use /cnsdoce
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
cnsdoce 1.0.0 Changelog - 初始发布,提供中国安装工程造价领域的专业技能支持。 - 支持定额子目查询、安装工程组价计算、取费自动计算、Excel报价表生成、山东/济南定额价目表双数据源(推理/溯源)切换。 - 引入腾讯混元(免费)和字节豆包(付费)大模型语义匹配,支持命令行及脚本模型灵活切换。 - 新增全流程“确认机制”,提升定额匹配和组价结果准确性。 - 完善示例数据、分册结构及数据库接入指导,适合新手与专业用户使用。
Metadata
Slug cnsdoce
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is cnsdoce?

中国工程造价技能,支持安装工程定额查询、组价计算与报价表生成。 数据源支持两种模式(见下方说明): · 默认模式:大模型推理数据(无需本地数据库,推荐新手) · 唯一来源模式:严格限定为山东省安装工程消耗量定额(2025版) + 济南市价目表(2026版) 核心依据:《建设工程工程量清单计价标准》GB/T 505... It is an AI Agent Skill for Claude Code / OpenClaw, with 46 downloads so far.

How do I install cnsdoce?

Run "/install cnsdoce" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is cnsdoce free?

Yes, cnsdoce is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does cnsdoce support?

cnsdoce is cross-platform and runs anywhere OpenClaw / Claude Code is available (windows).

Who created cnsdoce?

It is built and maintained by caoshun-sudo (@caoshun-sudo); the current version is v1.0.0.

💬 Comments