feat: AirPlan V2 — 全专家插件强制路由 + 事件系统规范化
P0-8 扩大: do_mode.py finish_worker 全专家插件强制路由 - GUI→XDB, network→NDB, C/C++→SDB, done→Rvr, blocked/failed→Dbg - 证据去重: 已有 xdbSessions/ndbSessions/sdbReports/rvrReviewed 则跳过 P1-GAP17: 事件 emit 规范化 - 新增 7 个事件常量 (TASK_ENTERED, TASK_FINISHED, ENGINE_ENTERED 等) - 全部 emit 调用替换字符串字面量为常量,零残留 - 30 个事件类型常量全部定义且唯一 P1-GAP18: 事件日志原子轮转 - emit 计数器每 128 次检查轮转,避免每次 emit 读文件 - 清除未使用的 _emit_with_completion/_pending_merge_complete - 原子轮转: tempfile+os.replace 保证不损坏 eng 极端接管: 强制调用全部专家插件 (Dbg/XDB/NDB/SDB/Rvr) commands/do.md: 更新为全专家插件路由文档 全量测试: 69 通过, 0 失败 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
73
scripts/test_install.sh
Executable file
73
scripts/test_install.sh
Executable file
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash
|
||||
# AirPlan V2 安装脚本测试
|
||||
# 模拟运行安装脚本的关键步骤(不实际克隆)
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PLUGIN_NAME="airplan-v2"
|
||||
SKILLS_DIR="$HOME/.claude/skills"
|
||||
|
||||
echo "=========================================="
|
||||
echo "AirPlan V2 安装脚本测试"
|
||||
echo "=========================================="
|
||||
|
||||
# 测试1: 检查 Python 版本
|
||||
echo "[测试1] 检查 Python 版本..."
|
||||
python3 --version || { echo "错误: 需要 Python 3"; exit 1; }
|
||||
echo "✓ Python 版本检查通过"
|
||||
|
||||
# 测试2: 检查必要工具
|
||||
echo "[测试2] 检查必要工具..."
|
||||
command -v git >/dev/null 2>&1 || { echo "错误: 需要 git"; exit 1; }
|
||||
echo "✓ git 可用"
|
||||
|
||||
# 测试3: 创建测试 skills 目录
|
||||
echo "[测试3] 测试目录创建..."
|
||||
TEST_DIR=$(mktemp -d)
|
||||
mkdir -p "$TEST_DIR/test-skills"
|
||||
echo "✓ 目录创建成功: $TEST_DIR"
|
||||
|
||||
# 测试4: 模拟插件检查
|
||||
echo "[测试4] 模拟插件结构检查..."
|
||||
# 创建模拟的 plugin.json
|
||||
mkdir -p "$TEST_DIR/airplan-v2/.claude-plugin"
|
||||
cat > "$TEST_DIR/airplan-v2/.claude-plugin/plugin.json" << 'PLUGIN_JSON'
|
||||
{
|
||||
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
||||
"name": "airplan-v2",
|
||||
"version": "2.0.0"
|
||||
}
|
||||
PLUGIN_JSON
|
||||
|
||||
# 创建模拟的 SKILL.md
|
||||
mkdir -p "$TEST_DIR/airplan-v2/skills/airplan"
|
||||
cat > "$TEST_DIR/airplan-v2/skills/airplan/SKILL.md" << 'SKILL_MD'
|
||||
# AirPlan V2
|
||||
SKILL_MD
|
||||
|
||||
if [ ! -f "$TEST_DIR/airplan-v2/.claude-plugin/plugin.json" ]; then
|
||||
echo "错误: plugin.json 不存在"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ plugin.json 存在"
|
||||
|
||||
if [ ! -f "$TEST_DIR/airplan-v2/skills/airplan/SKILL.md" ]; then
|
||||
echo "错误: SKILL.md 不存在"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ SKILL.md 存在"
|
||||
|
||||
# 测试5: 检查依赖工具
|
||||
echo "[测试5] 检查依赖工具..."
|
||||
command -v xvfb-run >/dev/null 2>&1 && echo " - xvfb-run: ✓" || echo " - xvfb-run: ✗ (可选)"
|
||||
command -v ffmpeg >/dev/null 2>&1 && echo " - ffmpeg: ✓" || echo " - ffmpeg: ✗ (可选)"
|
||||
command -v cmake >/dev/null 2>&1 && echo " - cmake: ✓" || echo " - cmake: ✗ (可选)"
|
||||
|
||||
# 清理测试目录
|
||||
rm -rf "$TEST_DIR"
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "所有测试通过! ✓"
|
||||
echo "=========================================="
|
||||
Reference in New Issue
Block a user