--- name: langgraph-vivado-install description: 在 Windows 原生环境下自动化配置基于 Conda 的 LangGraph 开发环境,并强制完成 Vivado 链路的闭环验证。当用户提到"配置langgraph"、"安装langgraph"、"LangGraph环境"、"langgraph vivado"、"配置开发环境 langgraph"、"LangGraph+Vivado"、"搭建langgraph"时,必须触发此技能。即使用户未明确说"用这个技能",只要涉及在 Windows 上安装或配置 LangGraph(含与 Vivado 集成),都应触发。 --- # LangGraph + Vivado 环境配置技能 本技能在 Windows 原生环境(Git Bash / 命令提示符)中自动完成以下工作: 1. 检测并安装 Conda 2. 创建 `langgraph` 虚拟环境并安装所需包 3. 迭代检测 Vivado 链路直至成功 4. 写出配置文件与冒烟测试脚本并运行验证 --- ## 整体流程 ``` Step 1: Conda 检测与安装 Step 2: 创建 langgraph 环境,安装依赖 Step 3: Vivado 链路迭代检测(循环直到成功) Step 4: 写出 env_config.json,提示持久化 Step 5: 生成并运行 smoke_test.py ``` --- ## Step 1 — Conda 检测与安装 运行: ```bash conda --version ``` - **若成功**:记录版本,进入 Step 2。 - **若失败**:执行安装命令: ```bash winget install -e --id Anaconda.Miniconda3 ``` 安装完成后,提示用户: > "Miniconda 安装完成。请重启 Shell 或运行 `conda init bash` 使 conda 命令生效,然后重新触发本技能。" **在用户确认 conda 可用之前,不继续执行后续步骤。** --- ## Step 2 — 创建 langgraph Conda 环境 ### 2a. 检查环境是否已存在 ```bash conda env list | grep "^langgraph" ``` - 若已存在:跳过创建,直接进入 2b。 - 若不存在: ```bash conda create -n langgraph python=3.11 -y ``` ### 2b. 安装所需 Python 包 ```bash conda run -n langgraph pip install langgraph langchain-anthropic pandas ``` 验证安装: ```bash conda run -n langgraph python -c "import langgraph; print('LangGraph OK:', langgraph.__version__)" ``` 若导入失败,报告错误并停止,请用户检查网络或 pip 源配置。 --- ## Step 3 — Vivado 链路迭代检测循环 这是本技能的核心环节。目标是确保在 `langgraph` 环境中可以调用 Vivado。 ### Step A:首次尝试检测 ```bash conda run -n langgraph vivado -version ``` ### Step B:若成功 - 打印版本信息(取输出第一行)。 - 进入 Step 4。 ### Step C:若失败(命令未找到)— 交互式路径收集 **停止自动化**,向用户提问: > "未能检测到 Vivado 环境。请输入 Vivado 的 bin 文件夹完整路径(例如:`C:\Xilinx\Vivado\2023.2\bin`):" **收到用户输入后执行:** 1. **验证路径有效性** — 检查该目录下 `vivado.bat` 是否存在: ```bash # 将用户输入的 Windows 路径转换为 bash 路径后检查 # 例:C:\Xilinx\Vivado\2023.2\bin → /c/Xilinx/Vivado/2023.2/bin ls "/vivado.bat" ``` - 若不存在:提示 "路径无效或找不到 vivado.bat,请重新输入。" 并**重复 Step C**。 - 若存在:继续。 2. **将路径临时加入当前会话 PATH**(Windows 反斜杠转为正斜杠): ```bash export PATH=":$PATH" ``` 3. **记录该路径**供后续 Step 4/5 使用(内部变量 `VIVADO_BIN_PATH`)。 4. **重试检测**: ```bash vivado -version ``` - 若成功:打印版本,进入 Step 4。 - 若再次失败:回到 Step C 顶部,重新向用户询问路径。 > **循环逻辑**:重复 Step C 直到 `vivado -version` 执行成功为止。不要跳过,不要假设路径正确。 --- ## Step 4 — 持久化配置 `vivado -version` 成功后: ### 4a. 提示用户持久化 向用户说明: > "为了在每次新开 Shell 时自动识别 Vivado,建议将该路径永久添加到 Windows 系统环境变量 PATH 中。操作方法:系统属性 → 高级 → 环境变量 → 编辑 PATH → 新建,粘贴路径。" ### 4b. 写出 env_config.json 在当前工作目录创建: ```json { "VIVADO_BIN_PATH": "", "conda_env": "langgraph", "python_version": "3.11", "packages": ["langgraph", "langchain-anthropic", "pandas"] } ``` --- ## Step 5 — 生成冒烟测试脚本并运行 在当前工作目录创建 `smoke_test.py`,内容如下: ```python import subprocess import sys import json import os def test_langgraph(): try: import langgraph import importlib.metadata version = importlib.metadata.version("langgraph") print(f"[OK] LangGraph import OK, version: {version}") return True except ImportError as e: print(f"[FAIL] LangGraph import failed: {e}") return False def test_vivado(): config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "env_config.json") env = os.environ.copy() vivado_bin = "" if os.path.exists(config_path): with open(config_path, encoding="utf-8") as f: config = json.load(f) vivado_bin = config.get("VIVADO_BIN_PATH", "").strip() if vivado_bin: env["PATH"] = vivado_bin + os.pathsep + env["PATH"] # On Windows use the full path to vivado.bat to avoid shell PATH issues if vivado_bin and (os.name == "nt" or sys.platform == "win32"): cmd = [os.path.join(vivado_bin, "vivado.bat"), "-version"] else: cmd = ["vivado", "-version"] try: result = subprocess.run(cmd, capture_output=True, text=True, timeout=30, env=env) if result.returncode == 0: first_line = (result.stdout.strip().splitlines() or ["(no output)"])[0] print(f"[OK] Vivado detected: {first_line}") return True else: print(f"[FAIL] vivado -version non-zero exit: {result.stderr.strip()}") return False except FileNotFoundError: print(f"[FAIL] vivado not found. CMD tried: {cmd}") return False except subprocess.TimeoutExpired: print("[FAIL] vivado -version timed out (30s)") return False if __name__ == "__main__": print("=" * 50) print("LangGraph + Vivado smoke test") print("=" * 50) ok_lg = test_langgraph() ok_vv = test_vivado() print("=" * 50) if ok_lg and ok_vv: print("[PASS] All checks passed. LangGraph + Vivado pipeline OK!") sys.exit(0) else: print("[FAIL] Some checks failed. See above.") sys.exit(1) ``` ### 运行冒烟测试 ```bash conda run -n langgraph python smoke_test.py ``` - **全部通过**:向用户报告"环境配置完成,LangGraph + Vivado 链路闭环成功。" - **有失败项**:读取具体错误,向用户说明原因(路径问题、包未安装等),并提供修复建议。 --- ## 注意事项 - Windows 路径转换规则:`C:\Xilinx\Vivado\2023.2\bin` → `/c/Xilinx/Vivado/2023.2/bin`(首字母小写,冒号去掉,反斜杠换正斜杠)。 - `conda run -n langgraph vivado -version` 需要 PATH 在 conda 激活前已包含 Vivado bin 目录,若不行则用 `export PATH=... && conda run ...` 形式或直接用绝对路径调用。 - 本技能产生的文件:`env_config.json`、`smoke_test.py`(均在调用时的当前目录)。