feat: добавить ai-opencode лаунчер (OpenCode Go + routatic-proxy)
- Новый лаунчер ai-opencode с routatic-proxy на 127.0.0.1:3456 - Автоустановка routatic-proxy под linux/darwin amd64/arm64 - Модели: deepseek-v4-pro (opus/sonnet), kimi-k2.6 (haiku) - AI_RESET_KEY, OPENCODE_GO_API_KEY env fallback, управление opencode_key - Документация: EFFORT_MAPPING.md, QUICK_START.md, README.md - Статус-проверка в setup.sh: ai-opencode, opencode_key, opencode.ai - Тесты: 4 новых теста для ai-opencode в test_fixes.sh Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ GPT_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gpt"/,/^GPTEOF/' "$SCRIPT")
|
||||
KIMI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-kimi"/,/^KIMIEOF/' "$SCRIPT")
|
||||
GLM_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-glm"/,/^GLMEOF/' "$SCRIPT")
|
||||
GEMINI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gemini"/,/^GEMINIEOF/' "$SCRIPT")
|
||||
OPENCODE_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-opencode"/,/^OPENCODEEOF/' "$SCRIPT")
|
||||
HELPERS_SECTION=$(awk '/^cat > "\$HELPERS_FILE"/,/^HELPEREOF/' "$SCRIPT")
|
||||
|
||||
# ── ai-gpt: auto-install codex ────────────────────────────────────────────
|
||||
@@ -192,6 +193,49 @@ test_android_skill_exists() {
|
||||
fi
|
||||
}
|
||||
|
||||
# ── ai-opencode: launches claude with routatic-proxy backend ──────────────────
|
||||
test_opencode_claude_launcher() {
|
||||
if echo "$OPENCODE_SECTION" | grep -q 'claude --dangerously-skip-permissions' \
|
||||
&& echo "$OPENCODE_SECTION" | grep -q 'ANTHROPIC_BASE_URL'; then
|
||||
ok "ai-opencode: launches claude with ANTHROPIC_BASE_URL set"
|
||||
else
|
||||
fail "ai-opencode: must launch claude with ANTHROPIC_BASE_URL"
|
||||
fi
|
||||
}
|
||||
|
||||
# ── ai-opencode: uses routatic-proxy (local proxy) ─────────────────────────────
|
||||
test_opencode_routatic_proxy() {
|
||||
if echo "$OPENCODE_SECTION" | grep -q 'routatic-proxy' \
|
||||
&& echo "$OPENCODE_SECTION" | grep -q '127.0.0.1:3456' \
|
||||
&& echo "$OPENCODE_SECTION" | grep -q 'ROUTATIC_PROXY_API_KEY'; then
|
||||
ok "ai-opencode: uses routatic-proxy on 127.0.0.1:3456"
|
||||
else
|
||||
fail "ai-opencode: must use routatic-proxy with local proxy and API key env"
|
||||
fi
|
||||
}
|
||||
|
||||
# ── ai-opencode: manages opencode_key ──────────────────────────────────────────
|
||||
test_opencode_key_management() {
|
||||
if echo "$OPENCODE_SECTION" | grep -q 'opencode_key' \
|
||||
&& echo "$OPENCODE_SECTION" | grep -q 'AI_RESET_KEY' \
|
||||
&& echo "$OPENCODE_SECTION" | grep -q 'OPENCODE_GO_API_KEY'; then
|
||||
ok "ai-opencode: opencode_key with AI_RESET_KEY and OPENCODE_GO_API_KEY env fallback"
|
||||
else
|
||||
fail "ai-opencode: must manage opencode_key with reset and env fallback"
|
||||
fi
|
||||
}
|
||||
|
||||
# ── ai-opencode: correct default models ────────────────────────────────────────
|
||||
test_opencode_models() {
|
||||
if echo "$OPENCODE_SECTION" | grep -q 'ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek-v4-pro"' \
|
||||
&& echo "$OPENCODE_SECTION" | grep -q 'ANTHROPIC_DEFAULT_HAIKU_MODEL="kimi-k2.6"' \
|
||||
&& echo "$OPENCODE_SECTION" | grep -q 'CLAUDE_CODE_DISABLE_1M_CONTEXT=1'; then
|
||||
ok "ai-opencode: correct default models (deepseek-v4-pro opus, kimi-k2.6 haiku)"
|
||||
else
|
||||
fail "ai-opencode: must have deepseek-v4-pro opus and kimi-k2.6 haiku"
|
||||
fi
|
||||
}
|
||||
|
||||
# ── run all tests ─────────────────────────────────────────────────────────────
|
||||
test_script_syntax
|
||||
test_gpt_autoinstall
|
||||
@@ -210,6 +254,10 @@ test_android_init_called
|
||||
test_android_symlink_to_bin_dir
|
||||
test_no_proxychains_for_android
|
||||
test_android_skill_exists
|
||||
test_opencode_claude_launcher
|
||||
test_opencode_routatic_proxy
|
||||
test_opencode_key_management
|
||||
test_opencode_models
|
||||
|
||||
echo ""
|
||||
echo "Results: $PASS passed, $FAIL failed"
|
||||
|
||||
Reference in New Issue
Block a user