BossAgents × ChipWise Engine 安装修复全记录

BossAgents × ChipWise Engine 安装修复全记录

一、环境信息

项目
OSWindows 10/11
WSLUbuntu-22.04 (用户: andyy1976)
GPURTX 3080
CPUi7-10700K
RAM32GB
Node.jsv24.14.0
BossAgents端口3006
MTClaw端口18790
Ollama端口11434

二、解决的问题(按严重程度排序)

P0:服务器死机(响应>2分钟)

根因/api/boss/risks 调用 detectRisksFromLogs(7) 查询 audit_logs 表1070万条记录无LIMIT,返回85万条记录。

修复

  • detectRisksFromLogs 添加 limit=100 参数
  • boss.js 去掉重复 detectRisksFromLogs 调用
  • 清理1070万条旧审计日志(保留17条),VACUUM压缩
  • 审计日志保留期从30天缩短到3天
  • 效果:响应从>2分钟降到21ms

P0:ChipWise API全部超时

根因

  1. chipwise-routes.js:42handleChipwiseRoutes不是async函数但用了await,SyntaxError导致所有请求挂起
  2. server.js:3705 — 每次请求都delete require.cache重新加载模块链
  3. health端点5秒超时,但WSL检测需30秒+

修复

  • handleChipwiseRoutes 改为async函数
  • 移除 delete require.cache 热重载
  • health超时从5s增加到120s
  • create端点 arch_params 兼容直接传参(body.arch_params || body

P1:LLM调用链死循环(单次调用30秒+)

根因:全局 _selected: "cloudbase" 导致调用链 cloudbase(429)→ollama→deepseek(402)→sensenova,每个失败模型等60秒超时。

修复

  • ChipWise独立模型优先级:identify用 ollama→sensenova(快优先),create用 sensenova→ollama(强优先)
  • callLLM 增加 noFallback 选项,指定provider失败时不走全局降级链
  • Ollama本地服务(localhost/127.0.0.1)免API Key校验
  • Ollama模型从 gemma3:4b 改为 qwen2:7b(实际安装的模型)
  • identify超时15s,create超时120s
  • 效果:identify从30秒+降到6秒,create从30秒+降到真实LLM推理时间

P1:EDA工具链全部不可用

根因:Windows无法直接运行Linux EDA工具,需要WSL中转。

修复

  • 安装WSL Ubuntu 22.04 + conda + EDA工具
  • 创建 wsl-eda.sh wrapper脚本(设置PATH后exec命令)
  • eda-toolchain.js 添加WSL执行支持(_checkWslAvailable, _execWsl, _toWslPath, _runTool
  • WSL检测超时30秒(conda初始化慢)
  • runIverilog/runVerible/runYosys 缓存不可用时自动调 checkToolAvailability 重新检测
  • 关键execSync 是唯一可靠的WSL执行方式,spawn/execFile 在此场景下不可用

P1:会话SESSION消息混入

根因currentSessionMessages 在null时未正确处理。

修复

  • null时返回空数组
  • === undefined 改为 == null
  • loadHistory 仅在 currentSessionId 为null时加载

P2:LLM生成RTL编译失败

根因

  1. LLM用markdown包裹代码(\\\verilog
  2. LLM生成嵌套模块结构(module riscv_top { module if_stage {...} }),Verilog不允许
  3. _parseModules 用lazy正则 [\s\S]*?endmodule 遇到嵌套匹配错误
  4. Temperature过高导致代码不完整

修复

  • _parseModules 改为按 module/endmodule 深度配对拆分(计数depth)
  • 清理markdown代码块(\\\verilog → 空)
  • 清理markdown标题(### MODULE:// MODULE:
  • Prompt改为英文,强制单文件输出,禁止省略,子模块先定义后顶层
  • Temperature从0.2降到0.1
  • 编译失败时回退到已验证POC rv32i_top.v,回退后重新跑iverilog+verible+yosys

P2:演示页面数据不真实

修复列表

  • MTClaw L1路由从38词缩减到12词
  • cost-optimizer移除固定85%
  • GET/POST双架构统一
  • doc-worker内部模式修复
  • 三处员工定义统一(YAML为唯一真相源)
  • 供应商数据标注来源
  • 商城价格标注"参考价"
  • 加速比基于真实测量数据计算

P2:EDA验证硬编码POC

根因:前端verify按钮硬编码 rv32i_top.v4069 cells/992 FF

修复

  • 使用create API返回的 code_path 和真实compile/lint/synthesis结果
  • Yosys综合数据从API动态获取
  • 综合报告动态生成

三、EDA工具安装步骤

3.1 WSL Ubuntu 22.04

# 安装WSL(如未安装)
wsl --install -d Ubuntu-22.04

# 首次启动设置用户名密码
wsl -d Ubuntu-22.04

3.2 Conda + EDA工具

# 在WSL中安装miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 安装EDA工具
conda install -c conda-forge iverilog    # v11.0
conda install -c conda-forge yosys        # v0.51
conda install -c conda-forge verible      # v2024-06-10
conda install -c conda-forge gtkwave      # 可选

3.3 RISC-V工具链

# 预编译工具链
cd ~
wget https://github.com/stnol/riscv-toolchain-gcc-precompiled/releases/download/v16.1.0/riscv64-unknown-elf-gcc-v16.1.0-2024-09-07-linux-ubuntu-22.04.tar.xz
tar xf riscv64-unknown-elf-gcc-*.tar.xz
# 解压到 ~/riscv-toolchain/

3.4 Wrapper脚本

创建 /home/andyy1976/wsl-eda.sh

#!/bin/bash
export PATH="/home/andyy1976/miniconda3/bin:/home/andyy1976/riscv-toolchain/bin:$PATH"
exec "$@"
chmod +x /home/andyy1976/wsl-eda.sh

3.5 验证安装

wsl -d Ubuntu-22.04 -- /home/andyy1976/wsl-eda.sh iverilog -V
wsl -d Ubuntu-22.04 -- /home/andyy1976/wsl-eda.sh yosys --version
wsl -d Ubuntu-22.04 -- /home/andyy1976/wsl-eda.sh verible-verilog-lint --version
wsl -d Ubuntu-22.04 -- /home/andyy1976/wsl-eda.sh riscv64-unknown-elf-gcc --version

四、配置文件修改

4.1 models.json 关键修改

{
  "_selected": "cloudbase",  // 全局默认,不要改(其他数字员工用)
  "ollama": {
    "model": "qwen2:7b",    // 改为实际安装的模型(原为gemma3:4b)
    "key": ""               // 空key,Ollama不需要
  }
}

4.2 环境变量

# ChipWise LLM配置(可选,有默认值)
CHIPWISE_LLM_PRIORITY=ollama,sensenova    # identify优先级
CHIPWISE_CREATE_PRIORITY=sensenova,ollama  # create优先级
CHIPWISE_LLM_TIMEOUT_MS=15000             # identify超时
CHIPWISE_LLM_LONG_TIMEOUT_MS=120000       # create超时

4.3 Ollama模型

# 安装Ollama模型
ollama pull qwen2:7b
# 确认可用
curl http://localhost:11434/api/tags

五、重装注意事项

5.1 必须先启动WSL

最重要:BossAgents服务器启动时检测EDA工具,如果WSL未运行,_wslAvailable缓存为false,后续所有EDA操作都会失败。

# 启动服务器前必须先启动WSL
wsl -d Ubuntu-22.04 -- echo "WSL OK"
# 然后启动服务器
node server.js

5.2 WSL conda初始化慢

首次WSL命令需~30秒(conda activate慢)。eda-toolchain.js的WSL检测超时设为30秒。如果超时,EDA工具会显示不可用,但后续调用时会自动重新检测。

5.3 LLM API余额

| 模型 | 状态 | 说明 |

|------|------|------|

| SenseNova | ✅ 可用 | 唯一可用的云端LLM |

| Ollama | ✅ 可用 | 本地端侧,需Ollama服务运行 |

| CloudBase | ❌ 429 | 超配额,不可用 |

| DeepSeek | ❌ 402 | 余额不足,不可用 |

重装后需确认SenseNova API Key有效(在models.json中)。

5.4 Node.js execSync是WSL唯一可靠方式

  • execFile/execwsl.exe 行为异常(回调stdout为空)
  • spawn 在eda-toolchain require上下文中返回code null
  • 只有 execSync 可用

5.5 Windows双引号与bash -c冲突

# 错误:cmd.exe吃掉双引号导致bash解析错误
cmd.exe /c "wsl.exe -d Ubuntu-22.04 -e bash -c "export PATH=...""

# 正确:使用wrapper脚本
wsl.exe -d Ubuntu-22.04 -e bash -c "/home/andyy1976/wsl-eda.sh iverilog -V"

5.6 WSL路径转换

Windows路径 D:\bossagents\data\chipwise\workspace\rv32i_top.v 在WSL中为 /mnt/d/bossagents/data/chipwise/workspace/rv32i_top.v。eda-toolchain.js的 _toWslPath 自动处理此转换。

5.7 POC文件

D:\bossagents\data\chipwise\workspace\rv32i_top.v 是预验证的RISC-V处理器RTL(93行,iverilog✅ verible✅ yosys 4069cells/992FF)。LLM生成失败时的回退依赖此文件,不可删除。

5.8 演示保底缓存

D:\bossagents\data\chipwise\demo_result.json 包含预缓存的identify和create结果。前端仅在 demo=true且module_count=0(完全失败)时使用。

5.9 sudo需要密码

WSL用户 andyy1976 的sudo密码未知。所有工具安装必须通过conda(不需要sudo)或预编译binary。

5.10 服务器启动顺序

1. 启动WSL:  wsl -d Ubuntu-22.04 -- echo "WSL OK"
2. 启动Ollama:  ollama serve  (或确认已运行)
3. 启动BossAgents:  node server.js
4. 访问演示:  https://ylxt.chat/chipwise-demo

六、Git提交记录

724a0a4a fix: _parseModules按module/endmodule深度配对拆分,修复嵌套模块解析
66734a20 fix: EDA验证使用真实LLM生成文件而非硬编码POC
43a58565 fix: EDA工具自动重检测+前端缓存仅作最后兜底
78ff1ccd feat: ChipWise四大优化 - Prompt/温度/回退/缓存
137ca028 fix: Create用SenseNova优先(强模型), identify用Ollama优先(快模型)
868d0cda fix: ChipWise Create三重修复
623fb81f fix: ChipWise Create超时120s+移除外层超时+增强RTL解析
93a748b0 fix: ChipWise LLM优先Ollama端侧+商汤兜底, Ollama免key, 模型改为qwen2:7b
5fff8394 fix: ChipWise health超时120s + WSL缓存重置
5caf8031 feat: ChipWise Engine可视化演示页面 + HICOOL复赛策划方案
42df19f5 fix: EDA工具链WSL执行修复 — wrapper脚本+execSync+30s超时
77c1827a feat: EDA工具链支持WSL执行 + 安装脚本
2df250b7 fix: 修复ChipWise API全部超时 — async/await语法错误 + require.cache热重载

七、当前系统状态

| 组件 | 状态 | 说明 |

|------|------|------|

| BossAgents服务 | ✅ 运行中 | ylxt.chat |

| WSL Ubuntu-22.04 | ⚠️ 需手动启动 | wsl -d Ubuntu-22.04 -- echo ok |

| Ollama qwen2:7b | ✅ 可用 | localhost:11434 |

| SenseNova | ✅ 可用 | 唯一可用云端LLM |

| iverilog 11.0 | ✅ WSL | conda安装 |

| yosys 0.51 | ✅ WSL | conda安装 |

| verible 2024-06-10 | ✅ WSL | conda安装 |

| riscv-gcc 16.1.0 | ✅ WSL | 预编译binary |

| ChipWise Identify | ✅ 真实LLM | Ollama, ~6秒 |

| ChipWise Create | ✅ 真实LLM | SenseNova→Ollama, ~2分钟 |

| EDA验证 | ✅ 真实调用 | iverilog+verible+yosys via WSL |

| chipwise-demo | ✅ 可用 | https://ylxt.chat/chipwise-demo |

← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁