加入 langgraph-vivado-install, langgraph-plan-view, 更新 fft-analyse
This commit is contained in:
@@ -7,20 +7,23 @@ description: 在 Windows 原生环境下自动化配置基于 Conda 的 LangGrap
|
||||
|
||||
本技能在 Windows 原生环境(Git Bash / 命令提示符)中自动完成以下工作:
|
||||
1. 检测并安装 Conda
|
||||
2. 创建 `langgraph` 虚拟环境并安装所需包
|
||||
3. 迭代检测 Vivado 链路直至成功
|
||||
4. 写出配置文件与冒烟测试脚本并运行验证
|
||||
2. 确认 conda 路径已永久写入 Windows 用户级 PATH
|
||||
3. 创建 `langgraph` 虚拟环境并安装所需包
|
||||
4. 迭代检测 Vivado 链路直至成功
|
||||
5. 写出配置文件与冒烟测试脚本并运行验证
|
||||
|
||||
---
|
||||
|
||||
## 整体流程
|
||||
|
||||
```
|
||||
Step 1: Conda 检测与安装
|
||||
Step 2: 创建 langgraph 环境,安装依赖
|
||||
Step 3: Vivado 链路迭代检测(循环直到成功)
|
||||
Step 4: 写出 env_config.json,提示持久化
|
||||
Step 5: 生成并运行 smoke_test.py
|
||||
Step 1: Conda 检测与安装
|
||||
Step 1b: 确认 conda 路径已写入 Windows PATH(新安装或已有均执行)
|
||||
Step 2: 创建 langgraph 环境,安装依赖
|
||||
Step 2c: 检测并安装 Codex CLI,验证 Auth
|
||||
Step 3: Vivado 链路迭代检测(循环直到成功)
|
||||
Step 4: 写出 env_config.json,提示持久化
|
||||
Step 5: 生成并运行 smoke_test.py
|
||||
```
|
||||
|
||||
---
|
||||
@@ -32,14 +35,68 @@ Step 5: 生成并运行 smoke_test.py
|
||||
conda --version
|
||||
```
|
||||
|
||||
- **若成功**:记录版本,进入 Step 2。
|
||||
- **若成功**:记录版本,进入 **Step 1b**。
|
||||
- **若失败**:执行安装命令:
|
||||
```bash
|
||||
winget install -e --id Anaconda.Miniconda3
|
||||
```
|
||||
安装完成后,提示用户:
|
||||
> "Miniconda 安装完成。请重启 Shell 或运行 `conda init bash` 使 conda 命令生效,然后重新触发本技能。"
|
||||
**在用户确认 conda 可用之前,不继续执行后续步骤。**
|
||||
**在用户确认 conda 可用之前,不继续执行后续步骤。用户确认后,进入 Step 1b。**
|
||||
|
||||
---
|
||||
|
||||
## Step 1b — 确认 conda 路径已写入 Windows PATH
|
||||
|
||||
无论 conda 是刚安装的还是之前已存在,都必须执行此步骤,确保 conda 的路径被永久写入 Windows 用户级 PATH,方便在任何新 Shell 中直接使用。
|
||||
|
||||
### 1. 定位 conda 所在目录
|
||||
|
||||
在 PowerShell 中运行:
|
||||
```powershell
|
||||
$condaPath = (Get-Command conda -ErrorAction SilentlyContinue).Source
|
||||
$condaBin = if ($condaPath) { Split-Path $condaPath -Parent } else { $null }
|
||||
Write-Host "conda 所在目录: $condaBin"
|
||||
```
|
||||
|
||||
若 `$condaBin` 为空(conda 命令本身来自 conda init 脚本而非独立可执行文件),则改用:
|
||||
```powershell
|
||||
# 方法 B:通过 conda info 获取 base 目录,再拼接 condabin
|
||||
$baseDir = (conda info --base 2>$null).Trim()
|
||||
$condaBin = Join-Path $baseDir "condabin"
|
||||
Write-Host "conda condabin 目录: $condaBin"
|
||||
```
|
||||
|
||||
### 2. 检查路径是否已在 PATH 中
|
||||
|
||||
```powershell
|
||||
$userPath = [System.Environment]::GetEnvironmentVariable("PATH", "User")
|
||||
$sysPath = [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
|
||||
|
||||
$inUserPath = ($userPath -split ";") -contains $condaBin
|
||||
$inSysPath = ($sysPath -split ";") -contains $condaBin
|
||||
|
||||
if ($inUserPath -or $inSysPath) {
|
||||
Write-Host "[OK] conda 路径已在 PATH 中,无需修改。"
|
||||
} else {
|
||||
Write-Host "[INFO] conda 路径不在 PATH 中,准备写入用户级 PATH..."
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 若不在 PATH 中则写入
|
||||
|
||||
```powershell
|
||||
if (-not ($inUserPath -or $inSysPath)) {
|
||||
$newUserPath = $condaBin + ";" + $userPath
|
||||
[System.Environment]::SetEnvironmentVariable("PATH", $newUserPath, "User")
|
||||
Write-Host "[OK] 已将以下路径写入用户级 PATH: $condaBin"
|
||||
Write-Host " 新开终端后即可直接使用 conda 命令。"
|
||||
}
|
||||
```
|
||||
|
||||
> **为什么写用户级 PATH 而非系统级?** 用户级 PATH 不需要管理员权限,且只影响当前用户,更安全。若该机器是多用户共享环境,可改为 `"Machine"` 并以管理员身份运行。
|
||||
|
||||
完成后进入 Step 2。
|
||||
|
||||
---
|
||||
|
||||
@@ -70,6 +127,89 @@ conda run -n langgraph python -c "import langgraph; print('LangGraph OK:', langg
|
||||
|
||||
---
|
||||
|
||||
## Step 2c — 检测并安装 Codex CLI,验证 Auth
|
||||
|
||||
Codex CLI 是 OpenAI 发布的命令行代码审查工具,以 npm 全局包形式安装在 `langgraph` conda 环境中,供 LangGraph 工作流的 Codex review 节点调用。
|
||||
|
||||
### 2c-1. 检测 Codex CLI 是否已安装
|
||||
|
||||
在 PowerShell 中运行:
|
||||
|
||||
```powershell
|
||||
$condaEnvPath = (C:\Users\bowei\miniconda3\Scripts\conda.exe run -n langgraph python -c "import sys; print(sys.prefix)").Trim()
|
||||
$codexCmd = Join-Path $condaEnvPath "codex.cmd"
|
||||
if (Test-Path $codexCmd) {
|
||||
Write-Host "[OK] Codex CLI 已安装: $codexCmd"
|
||||
$codexInstalled = $true
|
||||
} else {
|
||||
Write-Host "[INFO] 未检测到 Codex CLI,准备安装..."
|
||||
$codexInstalled = $false
|
||||
}
|
||||
```
|
||||
|
||||
### 2c-2. 若未安装,通过 npm 安装
|
||||
|
||||
首先确认 npm 可用(Node.js 需已安装在 conda 环境或系统 PATH 中):
|
||||
|
||||
```powershell
|
||||
C:\Users\bowei\miniconda3\Scripts\conda.exe run -n langgraph npm --version
|
||||
```
|
||||
|
||||
- **若 npm 可用**:执行安装:
|
||||
```powershell
|
||||
C:\Users\bowei\miniconda3\Scripts\conda.exe run -n langgraph npm install -g @openai/codex
|
||||
```
|
||||
安装完成后,再次执行 2c-1 检查 `codex.cmd` 是否出现。若仍不存在,报告错误并停止,请用户手动检查 npm 全局安装路径。
|
||||
|
||||
- **若 npm 不可用**:停止并提示:
|
||||
> "langgraph conda 环境中未找到 npm。请先安装 Node.js(建议通过 `winget install OpenJS.NodeJS.LTS`),重启 Shell 后重新触发本技能。"
|
||||
**在用户确认 npm 可用之前,不继续后续步骤。**
|
||||
|
||||
### 2c-3. 验证 Codex CLI 可执行
|
||||
|
||||
```powershell
|
||||
$env:CODEX_HOME = "C:\Users\bowei\.codex"
|
||||
cmd /c "$codexCmd" --version
|
||||
```
|
||||
|
||||
- 若命令输出版本号(如 `0.133.0`):记录版本,继续。
|
||||
- 若命令失败:报告错误(输出内容),停止执行,请用户检查 Node.js 版本兼容性。
|
||||
|
||||
> **为什么用 `cmd /c`?** `.cmd` 文件在 Windows 上不能直接被 PowerShell 或 Python subprocess 执行,必须通过 `cmd /c` 转发。
|
||||
|
||||
### 2c-4. 验证 Codex Auth
|
||||
|
||||
Codex CLI 的认证 token 存储在 `$CODEX_HOME\auth.json`(默认 `C:\Users\bowei\.codex\auth.json`)。
|
||||
|
||||
```powershell
|
||||
$codexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { "$env:USERPROFILE\.codex" }
|
||||
$authFile = Join-Path $codexHome "auth.json"
|
||||
|
||||
if (Test-Path $authFile) {
|
||||
$authContent = (Get-Content $authFile -Raw -Encoding utf8).Trim()
|
||||
if ($authContent.Length -gt 20) {
|
||||
Write-Host "[OK] Codex auth.json 存在且内容有效。"
|
||||
$authOk = $true
|
||||
} else {
|
||||
Write-Host "[WARN] auth.json 内容过短,可能已损坏或未完成认证。"
|
||||
$authOk = $false
|
||||
}
|
||||
} else {
|
||||
Write-Host "[WARN] 未找到 auth.json: $authFile"
|
||||
$authOk = $false
|
||||
}
|
||||
```
|
||||
|
||||
- **若 `$authOk = $true`**:继续进入 Step 3。
|
||||
- **若 `$authOk = $false`**:停止并提示:
|
||||
> "Codex CLI 尚未完成认证,或认证已失效。请在终端运行 `codex` 并按提示完成 ChatGPT OAuth 登录,登录成功后 auth.json 将自动写入 `C:\Users\bowei\.codex\`。完成后重新触发本技能或手动继续到 Step 3。"
|
||||
|
||||
**在用户确认认证完成之前,不继续后续步骤。**
|
||||
|
||||
> **为什么检查 auth.json 而非运行 `codex auth status`?** Codex CLI 目前没有独立的状态查询子命令;auth.json 存在且非空即表示 OAuth 流程已完成。若需更严格验证,可在 Step 5 冒烟测试中加入一次受控的 `codex exec --ephemeral` 调用。
|
||||
|
||||
---
|
||||
|
||||
## Step 3 — Vivado 链路迭代检测循环
|
||||
|
||||
这是本技能的核心环节。目标是确保在 `langgraph` 环境中可以调用 Vivado。
|
||||
|
||||
Reference in New Issue
Block a user