BossAgents × ChipWise Engine 安装修复全记录
一、环境信息
| 项目 | 值 |
|---|---|
| OS | Windows 10/11 |
| WSL | Ubuntu-22.04 (用户: andyy1976) |
| GPU | RTX 3080 |
| CPU | i7-10700K |
| RAM | 32GB |
| Node.js | v24.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全部超时
根因:
chipwise-routes.js:42—handleChipwiseRoutes不是async函数但用了await,SyntaxError导致所有请求挂起server.js:3705— 每次请求都delete require.cache重新加载模块链- 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.shwrapper脚本(设置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改为== nullloadHistory仅在currentSessionId为null时加载
P2:LLM生成RTL编译失败
根因:
- LLM用markdown包裹代码(
\\\verilog) - LLM生成嵌套模块结构(module riscv_top { module if_stage {...} }
),Verilog不允许 - _parseModules
用lazy正则[\s\S]*?endmodule遇到嵌套匹配错误 - 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.v 和 4069 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/exec对wsl.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 |
BossAgents