基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
---
|
||||
name: "package-chengtao"
|
||||
description: "成套报价软件安装包打包流水线执行者。被派发后独立完成:三程序源码新旧复核→按需重编译→make_package 重组 release→ISCC 编译安装包→三判定验证(退出码0+Successful+体积)→release 内容逐项核对→更新代码索引→完整汇报。用户说'打包/帮我打包/出包/重新打包/把更新打包进去'时由主智能体派发本智能体。"
|
||||
color: green
|
||||
model: "custom:builtin%3Abigmodel-coding-plan:GLM-5.3-Flash"
|
||||
tools:
|
||||
- Read
|
||||
- Bash
|
||||
- Edit
|
||||
injectAgentsMd: true
|
||||
---
|
||||
|
||||
你是"成套报价软件打包子智能体",执行一次完整的安装包打包流水线。项目根:C:\Users\099978\Documents\SharpDevelop Projects\成套报价软件(WinForms 主程序+cadbt+pdfbt 三程序,Inno Setup 打包)。严格按以下步骤,任何一步失败就停下报告,不要跳步。
|
||||
|
||||
## 第 0 步:打包前复核(必做,不可省)
|
||||
分三条查(**禁止用 -o OR 合并查询**,会误报):
|
||||
```
|
||||
cd 项目根
|
||||
find 成套报价软件 -name "*.cs" -newer 成套报价软件/bin/Debug/成套报价软件.exe -not -path "*/obj/*" -not -path "*/bin/*" | head -3
|
||||
find pdfbt -name "*.cs" -newer pdfbt/bin/Debug/pdfbt.exe -not -path "*/obj/*" -not -path "*/bin/*" | head -3
|
||||
find cadbt -name "*.cs" -newer cadbt/cadbt/bin/Debug/cadbt.exe -not -path "*/obj/*" -not -path "*/bin/*" | head -3
|
||||
```
|
||||
- 三段都无输出=源码最新,直接进第 2 步。
|
||||
- 主程序有新源码 → 先 taskkill //F //IM 成套报价软件.exe(否则 exe 被锁编译失败),cd 成套报价软件 && "C:/Windows/Microsoft.NET/Framework/v4.0.30319/csc.exe" @../tools/verify_build.rsp,要求零 error 零 warning。
|
||||
- pdfbt/cadbt 有新源码 → taskkill 对应进程后 cd 各项目目录 dotnet msbuild xxx.csproj -p:Configuration=Debug。
|
||||
- 另核验三处 Smart.CustomComponents.dll 指纹一致:md5sum 成套报价软件/bin/Debug/Smart.CustomComponents.dll pdfbt/bin/Debug/Smart.CustomComponents.dll cadbt/cadbt/bin/Debug/Smart.CustomComponents.dll(三个 md5 必须相同,不同则停止报告)。
|
||||
|
||||
## 第 1 步:清理与重组 release
|
||||
```
|
||||
cd 项目根
|
||||
rm -rf "release/成套报价软件/ku/proxy_cache"
|
||||
python tools/make_package.py
|
||||
```
|
||||
脚本会输出"发布目录: ...release\成套报价软件"。然后核对 release 内容:
|
||||
- ls -la release/成套报价软件/成套报价软件.exe release/成套报价软件/pdfbt/pdfbt.exe(时间戳应=各 bin 最新 exe)
|
||||
- ls release/成套报价软件/cadbt/CAD-Viewer/dist/fonts | wc -l 应为 88(CAD 字体)
|
||||
- ls release/成套报价软件/cadbt/CAD-Viewer/dist/templates/ 应有 acad.dxf acadiso.dxf
|
||||
- grep -c '"base-url":"/"' release/成套报价软件/cadbt/CAD-Viewer/dist/assets/main-*.js 应为 1(字体本地化 JS)
|
||||
- ls release/成套报价软件/GCS铜排壳体计算/ 里不得有任何 .cs/.xml/.bat/.rsp/.py(源码排除)
|
||||
- md5sum release 下三处 Smart.CustomComponents.dll 与 bin 一致
|
||||
|
||||
## 第 2 步:ISCC 编译(退出码必须直取,禁止管道接 grep/head 吞掉退出码)
|
||||
```
|
||||
cd release/成套报价软件
|
||||
"C:/Program Files (x86)/Inno Setup 6/ISCC.exe" setup.iss > iscc_build.log 2>&1; echo "ISCC_EXIT=$?"
|
||||
tail -3 iscc_build.log
|
||||
ls -la Output/成套报价软件_Setup.exe
|
||||
```
|
||||
判定标准(三条全过才算成功):
|
||||
1. ISCC_EXIT=0
|
||||
2. 日志含 "Successful compile"
|
||||
3. Setup 体积 ≈ 125,700,000 字节上下(近期正常值;若 <110,000,000 = 截断半成品,重跑一次 ISCC 通常就成)
|
||||
日志里 ChineseSimplified.isl 的几条 Warning(ErrorDownloading/DownloadingLabel/ErrorFileHash 等)是已知无害项。Bash 控制台输出中文乱码是显示问题,以文件与字节为准。
|
||||
|
||||
## 第 3 步:更新代码索引
|
||||
用 Edit 工具在 项目根\代码索引.md 文件**末尾**(修改日志表格最后)追加一行,格式与既有行一致:
|
||||
`| <今天日期> | 【打包】打包子智能体执行:主程序 <时间/字节> 版+pdfbt <时间/字节> 版+cadbt(dist 88 字体/本地化 JS),<有无重编译>,复核三程序源码新旧+DLL 指纹一致,ISCC <耗时> 退出码 0,Setup=<实际字节数> 字节 | — |`
|
||||
(<> 处填实际值;若本轮无任何源码/内容变化与上包完全相同,仍记录一行并注明"无变化重打包")
|
||||
|
||||
## 第 4 步:汇报
|
||||
最终报告:Setup 完整路径+字节数+ISCC 退出码+各核对项结果清单+有无重编译+代码索引是否已追加。不要动安装目录 C:\成套报价软件 下的任何文件(那不属于打包流水线)。
|
||||
@@ -0,0 +1,62 @@
|
||||
# 方案:AI 快筛异常断路器 + 选型页可视化替换流水线(快+准,不走 SQL)
|
||||
|
||||
## 一、需求拆解(按你的原话)
|
||||
|
||||
1. **快筛+理解判断**:AI 从选型页规格文本里筛出塑壳/微型断路器中**文本异常**的行(如 `CDM3S-400F/3300400A` 壳架电流粘连、`NM1-125/3300 100A` 脱扣码混写、疑似断路器但写法怪异),由 **LLM 理解判断**(不是死规则)它是不是断路器、异常在哪、正确型号应是什么
|
||||
2. **不直接操作数据库**:替换不走 SQL UPDATE,改走**软件选型页的编辑业务链路**(与你手改选型页单元格完全同一条链)
|
||||
3. **AI 点击选型界面对应行**:AI 选中选型页那行(你能看到行被选中、下方明细联动)——"页面定位"
|
||||
4. **元件库负责选型取价**:元件库页面上选规格/读真实价格(页面真实渲染值),替换动作回到选型页执行
|
||||
5. **元件库快速定位**:AI 在元件库页面快速定位目标系列/壳架/极数/电流(含反向:按软件选型行的规格在页面上自动选中对应选项)
|
||||
|
||||
## 二、总体架构(三阶段流水线)
|
||||
|
||||
```
|
||||
阶段① AI 理解筛选(秒级,一次 LLM 调用)
|
||||
GET /api/xuanxing 全量清单
|
||||
→ 正则快筛可疑特征(电流粘连/3300后无空格/壳架>2000/前缀不在常见表…)缩小范围
|
||||
→ GLM 批量理解判断:是断路器吗?异常类型?推断正确壳架/极数/电流
|
||||
→ 产出《异常行清单+修正方案》给用户过目
|
||||
|
||||
阶段② 元件库取价(每行 1 次往返,~100ms)
|
||||
/api/page 发一条组合 JS(在元件库页面上下文里):
|
||||
fetch 页面同款接口拉目标系列价格平表(签名由技能脚本本地生成)
|
||||
→ 页面内解码 → 返回 壳架×极数×电流×价格 平表
|
||||
(可再发一条点击 JS 把对应选项点上——你要"看得见"就点,追求速度就跳过点击)
|
||||
→ AI 按①的修正方案在平表里匹配 → 得到页面真实型号/价格/品名
|
||||
|
||||
阶段③ 选型页替换(走编辑链路,零 SQL,你能看到全过程)
|
||||
POST /api/selectselection {name,guige} → 选型页该行被选中+滚动可见+下方明细联动(AI 的"手指"点在选型界面)
|
||||
POST /api/editselection {定位键+新值} → 复刻"你在选型页手改单元格":
|
||||
写 元件名称/规格/表价/采购系数/品牌/系列 → RecalcSelectionRow 行内重算
|
||||
→ _selectionSummaryDirty 置脏 → SyncSelectionChangesToDb()(现有方法:按名称+规格全项目同步,
|
||||
★SET 天然不含数量列)→ RefreshQuotePageAfterSelectionEdit(报价页/项目汇总刷新)
|
||||
→ 选型页立即显示新值(绑定表就是显示表)
|
||||
```
|
||||
|
||||
## 三、改动清单
|
||||
|
||||
**1. AI助手接口.cs 新增两接口**(零新 SQL,全部复用现有业务方法):
|
||||
- `/api/selectselection`:UI Invoke 里遍历 `_selectionSummaryTable` 匹配行 → `advancedDataGridView1.CurrentCell` 选中 + `FirstDisplayedScrollingRowIndex` 滚动可见(自然触发 SelectionChanged→明细联动)
|
||||
- `/api/editselection`:body={jiu_name,jiu_guige, xin_name?,xin_guige,xin_biaojia,xin_xishu,xin_pinpai,xin_xilie};定位行→逐列赋值(类型按列转换)→ `RecalcSelectionRow(i)` → 置脏 → `SyncSelectionChangesToDb()` → `RefreshQuotePageAfterSelectionEdit()`;拒绝任何数量字段(铁律);找不到定位行返回明确错误
|
||||
- 新 SQL:无(SyncSelectionChangesToDb 为现有基线方法,其 UPDATE 本就全参数化且 SET 无数量列)
|
||||
|
||||
**2. 技能 SKILL.md 重写工作流**(dqb-xuanxing v3):
|
||||
- 阶段①的快筛正则清单+LLM 判断提示词模板(一次批量判断,禁逐行问模型)
|
||||
- 阶段②页面上下文取价 JS 模板(fetch+页面内解码平表,附现成片段;点选项作为可选视觉步骤)
|
||||
- 阶段③ select+edit 组合节奏(每行两次 HTTP)
|
||||
- 铁律不变:fenlei 只认塑壳/微型;数量绝不碰;结果对照表汇报
|
||||
|
||||
**3. 保留兼容**:/api/replaceall 保留(老路线备用),页面替换按钮链路不动
|
||||
|
||||
## 四、验证标准
|
||||
|
||||
1. csc 零错误;selectselection 点中行后选型页可见选中+明细联动(日志+用户目视)
|
||||
2. editselection 替换一行:选型页立即变新值、库内全项目同名行同步、**数量逐位不变**、派生价正确——全走 SyncSelectionChangesToDb(diag 日志"[选型页] 已把 N 条元件修改写入数据库"为证)
|
||||
3. 端到端:真实项目跑一轮"筛异常→取价→替换"(含 CDM3S-400F/3300400A 这类粘连行),修正为规范型号
|
||||
4. 速度:50 行异常行全流程 ≤ 2 分钟(筛选 1 次 LLM + 每行 3 次 HTTP)
|
||||
|
||||
## 五、明确不做
|
||||
|
||||
- 不写任何新 SQL(Mimosa 参数绑定约束天然满足)
|
||||
- 不动选型页现有 UI/编辑逻辑(纯复用)
|
||||
- 不自动改"类型列"(保持原值,分类防线照旧)
|
||||
@@ -0,0 +1,24 @@
|
||||
# 拖入文件回归 ZCode 原生机制:删光我的桥接 + 修前端源码漏读二进制内容
|
||||
|
||||
## 先认错
|
||||
拖放应该用 ZCode 原生的附件流程(拖入→附件胶囊→原生上传→随消息发送),我擅自拦截并自动发路径消息,是越权,全部删除。
|
||||
|
||||
## 改动一:DockWindow10.cs 回到干净状态
|
||||
删除我加的全部拖放代码:拖放拦截JS 注入、WebMessageReceived 处理器(AI面板_收到网页消息)、处理拖入文件、发送消息到聊天。保留原有功能(浅色主题注入、⚡按钮、引导页),按钮此前已删。
|
||||
|
||||
## 改动二:修 ZCode 前端源码(根因修复,原生通道)
|
||||
**根因**(已从源码实证):`packages/ui/src/lib/chatAttachments.ts` 收集附件时——图片/PDF/视频分支都会 `readAttachmentBase64(file)` 读内容走原生上传(引擎侧 attachmentBeginV4/ChunkV4/CommitV4 通道实测可用);**普通文件(xlsx/dwg/zip…)的兜底分支只读文本(isTextLike 才 textContent),非文本直接返回"仅元信息"→"附件缺少可读取内容"**。
|
||||
修法:兜底分支补上与图片分支同款的 `readAttachmentBase64`——非文本二进制也读成 dataBase64,走 ZCode 原生上传协议。一处改动,原生 UI/胶囊/上传进度/发送全流程不变。
|
||||
(原路径 localPath 分支、文本 textContent 分支均不动——桌面端行为不受影响)
|
||||
|
||||
## 构建与部署
|
||||
1. 改 `zcode-build\ZCode\packages\ui\src\lib\chatAttachments.ts`(约 4 行)。
|
||||
2. `pnpm build` 重建(曾完整跑通过)→ 把新 `packages\web\dist` 覆盖到 `ai助手\zcode\web\`(项目+安装目录 C:\成套报价软件 两份)。
|
||||
3. 主程序重编(DockWindow10 回退版)→ 同步 bin+安装目录 exe → 重启软件。
|
||||
|
||||
## 验证
|
||||
- 无头 playwright:拖 xlsx/png 到聊天框 → **原生附件胶囊出现** → 引擎日志 `attachmentBeginV4/ChunkV4/CommitV4 OK`(不再出现"缺少可读取内容");CSV 文本回归原生通道不受影响。
|
||||
- 你实测拖一个 Excel:应看到和拖文本一样的附件胶囊+上传完成,随消息一起发给 AI。
|
||||
|
||||
## 记录
|
||||
代码索引追加;构建脚本不动;打包等你说打包再做。
|
||||
@@ -0,0 +1,16 @@
|
||||
引擎数据库 schema 19→21 自动迁移(新装机/升级机不再卡 AgentDatabaseAdmissionError,加 API 密钥畅通):
|
||||
|
||||
【1. ai助手\修复引擎数据库.cmd(新增,GBK+raw string 规则)】
|
||||
- 进入 openclaw 包目录,runtime\node.exe openclaw.mjs doctor --fix,输出全部追加 引擎控制台.log,结束写"修复完成"标记。
|
||||
|
||||
【2. OpenClawHost.cs 三新成员 + 启动引擎自动修复链】
|
||||
- 引擎数据库版本():System.Data.SQLite 只读打开 ~/.openclaw/agents/main/agent/openclaw-agent.sqlite,SELECT schema_version FROM schema_meta WHERE meta_key='primary';无库返回 -1(全新机器)。
|
||||
- 清引擎死租约():打开 ~/.openclaw/state/openclaw.sqlite,DELETE FROM agent_database_leases(doctor 被 PID 复用幻影租约卡死的根治,全参数化/无拼接)。
|
||||
- 启动引擎() 在 EnsureConfigured 后插入:库版本∈[1,20] 时 → 记日志 → 确保引擎已停(跑 停止引擎静默.cmd+等3秒)→ 清死租约 → ShellExecuteW 静默跑 修复引擎数据库.cmd → 每2秒轮询库版本直到≥21(最长90秒)→ 继续原启动流程;失败也放行并落日志。
|
||||
|
||||
【3. 验证】
|
||||
- 先备份本机 agent 库 → 把 schema_meta 人为改成 19 → 重启软件走自动修复链(应见:停引擎→清租约→doctor→版本回 21→引擎起来 healthz live)→ 异常则恢复备份。
|
||||
- 脚本副本同步装机目录;make_package 自动带新脚本(ai助手 目录整体拷贝)。
|
||||
|
||||
【4. 更新包 v3】
|
||||
- 更新包_20260922 追加 ai助手\修复引擎数据库.cmd(与 exe、models-config.json 三件套),新电脑覆盖后重启即自动迁移。
|
||||
Reference in New Issue
Block a user