Files
skills-win/langgraph-vivado-install/SKILL.md
T

230 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 "<converted_path>/vivado.bat"
```
- 若不存在:提示 "路径无效或找不到 vivado.bat,请重新输入。" 并**重复 Step C**。
- 若存在:继续。
2. **将路径临时加入当前会话 PATH**(Windows 反斜杠转为正斜杠):
```bash
export PATH="<converted_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": "<Step 3 确认的 Windows 格式路径>",
"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`(均在调用时的当前目录)。