# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview IC Coder Plugin 是一个 VS Code 扩展,为 Verilog/FPGA 开发提供智能辅助功能,包括代码生成、文件操作、iverilog 仿真和 VCD 波形查看。 ## Build Commands ```bash # 安装依赖 pnpm install # 编译 (开发模式) pnpm run compile # 监听模式编译 pnpm run watch # 生产环境打包 pnpm run package # 代码检查 pnpm run lint # 运行测试 pnpm run test # 编译测试文件 pnpm run compile-tests ``` ## Development - 按 F5 在 VS Code 中启动调试模式 - 使用 webpack 打包,入口文件为 `src/extension.ts` - 输出目录为 `dist/` ## Architecture ``` src/ ├── extension.ts # 插件入口,注册命令和视图 ├── panels/ │ ├── ICHelperPanel.ts # 主聊天面板 (WebviewPanel) │ └── VCDViewerPanel.ts # VCD 波形查看器面板 ├── views/ │ ├── ICViewProvider.ts # 侧边栏视图提供者 │ └── webviewContent.ts # Webview HTML 内容 (大文件,使用搜索) ├── utils/ │ ├── messageHandler.ts # 消息处理核心逻辑 (大文件,使用搜索) │ ├── iverilogRunner.ts # iverilog 编译和仿真执行 │ ├── chatHistoryManager.ts # 会话历史管理 │ ├── createFiles.ts # 文件创建工具 │ └── readFiles.ts # 文件读取工具 ├── types/ │ └── chatHistory.ts # 消息类型定义 (LangChain4j 格式) └── test/ # 测试文件 ``` ### Key Components **消息流程**: Webview -> `onDidReceiveMessage` -> `messageHandler.ts` -> 后端处理 -> `panel.webview.postMessage` -> Webview **消息类型** (`src/types/chatHistory.ts`): - `MessageType.SYSTEM` / `USER` / `AI` / `TOOL_EXECUTION_RESULT` - 兼容 LangChain4j 格式 **iverilog 集成** (`tools/iverilog/`): - 内置 Windows x64 版本的 iverilog/vvp - 通过 `IVERILOG_ROOT` 环境变量配置库路径 - 支持命令: "生成 VCD"、"运行仿真"、"生成波形" ## VS Code Extension Points - 命令: `ic-coder.openPanel`, `ic-coder.openChat`, `ic-coder.openVCDViewer` - 侧边栏视图: `ic-coder.mainView` - 激活事件: `onLanguage:verilog`, `onLanguage:vhdl`, `onStartupFinished` ## Dependencies - `vcdrom`, `vcd-stream`, `waveql` - VCD 波形处理 - `@wavedrom/doppler`, `onml` - 波形渲染 - `iconv-lite` - 编码转换 ## Notes - `webviewContent.ts` 和 `messageHandler.ts` 文件较大,建议使用搜索而非完整读取 - 当前仅支持 Windows 平台的 iverilog,其他平台需用户自行安装