基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)
This commit is contained in:
@@ -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