运行时依赖
版本
从仓库中读取目标技能的 SKILL.md 的最近 git 变更:
安装命令
点击复制技能文档
远程技能测试 编排代理技能在远程跳转主机上的端到端测试。用户更新技能后,本技能通过SSH连接到远程主机,更新已安装的技能,在专用测试目录中通过opencode run运行目标技能,检索生成的报告,并将其与之前的运行结果进行比较,以验证更改是否与技能更新匹配。
输出语言规则 检测用户对话的语言,并使用相同的语言进行所有输出。 中文输入 -> 中文输出 英文输入 -> 英文输出
先决条件 所需工具: ssh — 访问远程跳转主机 scp — 从远程主机检索报告 npx — 安装在远程主机上(用于npx skills add) opencode — 安装并配置在远程主机上
工作流 digraph test_flow { "收集SSH配置\n+ 技能名称 + 提示" [shape=box]; "SSH:创建测试目录" [shape=box]; "SSH:安装技能\n(项目级别在测试目录中)" [shape=box]; "SSH:opencode run\n(输出到日志)" [shape=box]; "SCP:检索报告 + 日志" [shape=box]; "查找之前的报告" [shape=diamond]; "比较报告\n与SKILL.md更改" [shape=box]; "输出分析" [shape=box]; "收集SSH配置\n+ 技能名称 + 提示" -> "SSH:创建测试目录"; "SSH:创建测试目录" -> "SSH:安装技能\n(项目级别在测试目录中)"; "SSH:安装技能\n(项目级别在测试目录中)" -> "SSH:opencode run\n(输出到日志)"; "SSH:opencode run\n(输出到日志)" -> "SCP:检索报告 + 日志"; "SCP:检索报告 + 日志" -> "查找之前的报告"; "查找之前的报告" -> "比较报告\n与SKILL.md更改" [label="已找到"]; "查找之前的报告" -> "输出分析" [label="第一次运行"]; "比较报告\n与SKILL.md更改" -> "输出分析"; }
步骤 1:收集信息 从用户收集以下信息。直到所有必需项都提供后,才继续进行。 必需: 目标技能名称 — 要测试的技能(例如,aws-fis-experiment-execute) SSH访问 — 如何连接到远程跳转主机。 询问用户:如何通过SSH连接到远程跳转主机?请提供:user@host,并提供SSH密钥路径(或SSH配置别名)。 示例:participant@10.0.1.50 使用密钥 ~/.ssh/my-key.pem 测试提示 — 要在远程主机上运行的提示。询问用户直接在对话中提供。 示例:什么提示应该用于测试?示例:“使用aws-fis-experiment-execute技能执行~/fis-experiments/2026-04-10-az-power-int-my-cluster-EXTabc123/目录下的实验” 如果用户没有提供提示,从对话上下文构造一个(例如,技能名称 + 之前提到的任何依赖路径)。追加以下后缀到用户的提示(始终): 如果需要跨目录读取文件,直接操作不要确认。 所有操作自动执行,不要等待用户确认。 将组装的提示存储为FULL_PROMPT。
步骤 2:SSH — 创建测试目录 在安装技能之前,先在远程主机上创建带时间戳的测试目录。所有后续步骤都在此目录中操作。 TIMESTAMP=$(TZ=Asia/Shanghai date +%Y-%m-%d-%H-%M-%S) TEST_DIR="~/skill-tests/${TIMESTAMP}-{SKILL_NAME}" ssh -i {SSH_KEY} -o StrictHostKeyChecking=no {USER}@{HOST} \ "mkdir -p ${TEST_DIR}" 存储TEST_DIR以供后续步骤使用。
步骤 3:SSH — 安装所有技能(项目级别) 在测试目录中安装存储库中的所有技能(不是全局安装)。技能之间存在依赖关系(例如,aws-fis-experiment-execute在运行时加载app-service-log-analysis),因此仅安装目标技能会导致缺少依赖关系的失败。 重要:远程主机可能使用nvm进行Node.js管理。使用bash -i -c加载.bashrc环境变量(LLM提供者URL、API密钥等),这些变量在交互式守护进程中会被阻止。 ssh -t -i {SSH_KEY} -o StrictHostKeyChecking=no {USER}@{HOST} \ "bash -i -c 'source ~/.nvm/nvm.sh 2>/dev/null; \ cd ${TEST_DIR} && npx skills add panlm/skills -y'" 验证输出显示“安装完成”并列出所有已安装的技能。如果失败,显示错误并停止。
步骤 4:SSH — 通过OpenCode执行技能(输出到日志) 在远程主机上的测试目录中运行opencode run。捕获所有输出(stdout + stderr)到日志文件中以进行诊断。 ssh -t -i {SSH_KEY} -o StrictHostKeyChecking=no \ -o ServerAliveInterval=60 {USER}@{HOST} \ "bash -i -c 'source ~/.nvm/nvm.sh 2>/dev/null; \ cd ${TEST_DIR} && \ opencode run \ --dangerously-skip-permissions \ \"${FULL_PROMPT}\" \ 2>&1 | tee ${TEST_DIR}/opencode-run.log'" 关键标志: --dangerously-skip-permissions — 自动批准所有权限提示(跨目录读取、文件写入等),以便运行完全非交互式 2>&1 | tee ...log — 将所有输出捕获到opencode-run.log,同时也在终端中显示以进行实时监控 bash -i — 加载.bashrc环境变量(LLM提供者配置) ServerAliveInterval=60 — 防止SSH超时对于长时间运行的技能