134 lines
7.0 KiB
Markdown
134 lines
7.0 KiB
Markdown
# skills_env — 本机环境档案(模板)
|
||
|
||
> 复制本文件到 `~\skills_env.md` 后逐项核对。此文件**只留在本机,不进 git**:
|
||
> 每台电脑的路径/IP/凭据不同。skills 中凡是机器相关的参数都从这里取值。
|
||
> 值为 `KEY = value` 形式,方便脚本和模型直接检索。
|
||
|
||
## 同步仓库
|
||
|
||
```
|
||
SKILLS_REPO_URL = http://100.88.102.18:3000/bowei/skills-win.git # tailscale 直连 gitea(公网 git.rpchannel.com 已于 2026-10-01 关闭)
|
||
SKILLS_REPO_USER = bowei
|
||
SKILLS_REPO_PASS = <填写,或留空表示已存入 Windows 凭据管理器>
|
||
CLAUDE_SKILLS_DIR = C:\Users\<user>\.claude\skills # 唯一 git 检出(主副本)
|
||
CODEX_SKILLS_DIR = C:\Users\<user>\.codex\skills # 全量镜像,全是 junction
|
||
AGENTS_SKILLS_DIR = C:\Users\<user>\.agents\skills # 跨工具别名目录;只做发现/修复,不全量铺
|
||
OPENCODE_CONFIG_DIR = C:\Users\<user>\.config\opencode # OpenCode 全局配置;skills 数组登记 ~/.codex/skills(sync_opencode_skills.ps1 管理)
|
||
```
|
||
|
||
凭据说明:首次 clone 成功后运行 `git config --global credential.helper manager`,
|
||
让 Windows 凭据管理器接管,此后 `SKILLS_REPO_PASS` 可以清空。
|
||
`SKILLS_REPO_URL` 用 tailscale 地址(`100.88.102.18` 是上海 mac 的 tailscale IP,全 tailnet
|
||
机器通用)。公网 git.rpchannel.com 已于 2026-10-01 关闭,不要再用;新机器必须先装
|
||
tailscale 并登录同一 tailnet 才能 clone。
|
||
|
||
### gitea 服务端(tools-sync 的 gitea_doctor 用;不自建 gitea 就整节留空)
|
||
|
||
```
|
||
GITEA_SSH_HOST = <gitea 宿主机地址,同网段/VPN 内的直连地址优先>
|
||
GITEA_SSH_PORT = 22
|
||
GITEA_SSH_HOST_ALT = <走公网跳板时的地址,没有就留空>
|
||
GITEA_SSH_PORT_ALT = <跳板端口,没有就留空>
|
||
GITEA_SSH_USER = <登录用户>
|
||
GITEA_HOST_KEY_FP = <SHA256:... 主机公钥指纹,用于确认连对了机器>
|
||
GITEA_CONTAINER = gitea
|
||
GITEA_DOCKER_BIN = /usr/local/bin/docker
|
||
GITEA_DATA_DIR = <宿主机上 bind 到容器 /data 的目录>
|
||
GITEA_COMPOSE_FILE = <docker-compose.yml 路径,没用 compose 就留空>
|
||
GITEA_HTTP_LOCAL = http://localhost:3000
|
||
```
|
||
|
||
填写要点:脚本要免密登录,先把本机公钥加进服务端的 `authorized_keys` 并实测一次。
|
||
`GITEA_DOCKER_BIN` 写绝对路径——**ssh 非交互登录通常不加载登录 shell 的 PATH,
|
||
`docker` 会找不到**。`GITEA_HOST_KEY_FP` 不是可选项:有跳板时它是你唯一能确认
|
||
"连上的确实是那台机器"的凭据。
|
||
|
||
## Python / Conda
|
||
|
||
```
|
||
CONDA_ROOT = C:\ProgramData\miniconda3
|
||
CONDA_LANGGRAPH_PYTHON = C:\Users\<user>\.conda\envs\langgraph\python.exe
|
||
```
|
||
|
||
## LangGraph 工作流仓库(各 flow skill 的 driver 从这里取项目根)
|
||
|
||
```
|
||
LANGGRAPH_DESIGN_ROOT = <LangGraph 工程总目录,如 E:\LangGraph_Design>
|
||
SIM_RTL_FLOW_ROOT = {LANGGRAPH_DESIGN_ROOT}\sim-rtl-flow
|
||
ZYNQ_IMX6_FLOW_ROOT = {LANGGRAPH_DESIGN_ROOT}\zynq-imx6-flow
|
||
FPGA_IMX6_FLOW_ROOT = {LANGGRAPH_DESIGN_ROOT}\FPGA-imx6-flow
|
||
FPGA_GOLDENREF_ROOT = {LANGGRAPH_DESIGN_ROOT}\fpga-goldenref-flow
|
||
DPD_MIG_FLOW_ROOT = {LANGGRAPH_DESIGN_ROOT}\dpd-mig-flow
|
||
KICAD_FLOW_ROOT = {LANGGRAPH_DESIGN_ROOT}\kicad-flow
|
||
XILINX_SMOD_ROOT = <SMOD 各制式工程的父目录,如 E:\Xilinx_design\smod(dpd-mig-flow 在此下找移植目标)>
|
||
```
|
||
|
||
## EDA / 硬件工具
|
||
|
||
```
|
||
VIVADO_ROOT = <Vivado 安装根目录,如 C:\Xilinx\Vivado\2018.1 —— 必须实测,不同机器盘符不同>
|
||
VIVADO_PATH = <上一行 + \bin\vivado.bat>
|
||
SDK_ROOT = <Xilinx SDK 安装根,如 D:\Xilinx\SDK\2018.1;含 bin\bootgen.bat / bin\program_flash.bat>
|
||
KICAD_PYTHONPATH = C:\Program Files\KiCad\10.0\bin\Lib\site-packages
|
||
MATLAB_ROOT = <MATLAB 安装根目录,如 D:\MATLAB\R2025b>
|
||
MATLAB_AGENTIC_ROOT = C:\Users\<user>\.matlab\agentic-toolkits
|
||
MATLAB_MCP_EXE = {MATLAB_AGENTIC_ROOT}\bin\matlab-mcp-server.exe
|
||
```
|
||
|
||
## 板卡 / 仪器 IP
|
||
|
||
```
|
||
N9320B_HOST = 192.168.1.147 # Keysight N9320B 频谱仪
|
||
SMOD_BOARD_IP = 192.168.1.143 # SMOD 板(ATSC 激励器远程升级)
|
||
```
|
||
|
||
## SMOD imx6 设备与交叉编译 VM(smod_atsc_dev / fpga_update 使用)
|
||
|
||
```
|
||
SMOD_REPO_ROOT = <ATSC 激励器 Vivado 工程根,同时是 git 仓库根>
|
||
SMOD_SSH_USER = root # imx6 SSH/网页登录名(老 dropbear)
|
||
SMOD_SSH_PASS = <填写>
|
||
SMOD_WEB_USER = <网页 Remote Update 账号,与 SSH 不同>
|
||
SMOD_WEB_PASS = <填写>
|
||
CROSS_VM_HOST = <交叉编译 VM 的 IP —— 随 VMware 网段变化,必须实测>
|
||
CROSS_VM_USER = <填写>
|
||
CROSS_VM_PASS = <填写>
|
||
```
|
||
|
||
## MCP 注册配置(真源:MCP_DESIGN_ROOT\mcp_list.md)
|
||
|
||
```
|
||
MCP_DESIGN_ROOT = E:\MCP_design
|
||
```
|
||
|
||
每个 MCP 在 Claude Code(`~\.claude.json` 的 `mcpServers`)和 Codex(`codex mcp add`,
|
||
读用 `codex mcp list --json`)中应使用**同一份** command/args/env。注意 Codex 侧
|
||
`~\.codex\config.toml` 的 `[mcp_servers.*]` 节**不生效**,手写无用;且它的注册存储
|
||
不跨 codex-cli 升级存活,所以下表是 Codex 侧唯一可重建的真源,每次同步都要核对。
|
||
同步时对两侧用户级注册表取并集,确保任一侧新增的可移植 MCP 都同步到另一侧;
|
||
`mcp_list.md` 继续用于发现“两侧都漏装”的本地工程。托管连接器、插件动态 MCP、
|
||
Codex 内置运行时 MCP(node_repl / cua_repl)不进入这个并集。
|
||
标准配置如下(路径变量引用上文条目):
|
||
|
||
| name | command | args | env |
|
||
|------------|----------------------------------|---------------------------------------------------|-----|
|
||
| vivado-mcp | {CONDA_LANGGRAPH_PYTHON} | E:\MCP_design\vivado-mcp-main\run_server.py(Codex)/ -m vivado_mcp(Claude) | VIVADO_PATH={VIVADO_PATH} |
|
||
| mcp_n9320b | {CONDA_LANGGRAPH_PYTHON} | E:\MCP_design\mcp_n9320b\n9320b_mcp.py | N9320B_HOST={N9320B_HOST} |
|
||
| cubemx | E:\MCP_design\MCP_cubemx\cubemx-mcp\.venv\Scripts\python.exe | E:\MCP_design\MCP_cubemx\cubemx-mcp\server\main.py | PYTHONPATH=E:\MCP_design\MCP_cubemx\cubemx-mcp\server |
|
||
| kicad | node | E:\MCP_design\KiCAD-MCP-Server\dist\index.js | NODE_ENV=production; PYTHONPATH={KICAD_PYTHONPATH}; KICAD_AUTO_LAUNCH=false |
|
||
| simetrix | <conda env>\Scripts\mcp-simetrix.exe | | SIMETRIX_PROJECT_ROOT=E:\ |
|
||
| matlab | {MATLAB_MCP_EXE} | --matlab-session-mode=existing --extension-file=...\simulink\tools\tools.json | |
|
||
|
||
Codex 侧所有 stdio MCP 额外加 `PYTHONIOENCODING=utf-8`、`PYTHONUTF8=1`。
|
||
MathWorks `matlab` MCP 是特例:Claude 侧要设 `alwaysLoad=true`;Codex 侧本应有
|
||
`tool_timeout_sec=600` 与 `env_vars=["WINDIR"]`,但 codex-cli 0.150.1 无接口可设,
|
||
属已知缺口(记录在 tools-sync 的 `references/codex_mcp_wanted_keys.json`)。
|
||
MATLAB 与 Simulink 共用该条目。
|
||
|
||
## 本机状态备注(同步时更新)
|
||
|
||
```
|
||
LAST_SYNC = <日期>
|
||
TODO = <遗留事项>
|
||
```
|