thread-master/scripts/debug-opencode-raw.sh

71 lines
2.2 KiB
Bash
Executable File
Raw Permalink 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.

#!/usr/bin/env bash
# 直接對比 OpenCode upstream 與本機 gateway 的原始 JSON/SSE方便排查空回應
#
# 用法:
# OPENCODE_TOKEN=sk-xxx ./scripts/debug-opencode-raw.sh
set -u
BASE_URL="${BASE_URL:-http://127.0.0.1:8890}"
OPENCODE_TOKEN="${OPENCODE_TOKEN:-}"
MODEL="${MODEL:-deepseek-v4-flash}"
MESSAGE="${MESSAGE:-Introduce yourself in one sentence.}"
if [[ -z "$OPENCODE_TOKEN" ]]; then
echo "OPENCODE_TOKEN is required"
exit 1
fi
require_cmd() {
command -v "$1" >/dev/null 2>&1 || { echo "missing command: $1"; exit 1; }
}
require_cmd curl
require_cmd jq
payload="$(jq -n \
--arg model "$MODEL" \
--arg message "$MESSAGE" \
'{
model: $model,
messages: [{role: "user", content: $message}],
max_tokens: 2048,
thinking: {type: "disabled"}
}')"
echo "=== OpenCode upstream (non-stream) ==="
curl -sS -m 120 -X POST "https://opencode.ai/zen/go/v1/chat/completions" \
-H "Authorization: Bearer ${OPENCODE_TOKEN}" \
-H "Content-Type: application/json" \
-d "$payload" | jq .
echo ""
echo "=== Local gateway (non-stream) ==="
curl -sS -m 120 -X POST "${BASE_URL}/api/v1/ai/chat" \
-H "Authorization: Bearer ${OPENCODE_TOKEN}" \
-H "Content-Type: application/json" \
-d "$(jq -n \
--arg provider "opencode-go" \
--arg model "$MODEL" \
--arg message "$MESSAGE" \
'{provider:$provider,model:$model,messages:[{role:"user",content:$message}],max_tokens:2048}')" | jq .
echo ""
echo "=== OpenCode upstream (stream, first 20 lines) ==="
curl -sS -N -m 120 -X POST "https://opencode.ai/zen/go/v1/chat/completions" \
-H "Authorization: Bearer ${OPENCODE_TOKEN}" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d "$(echo "$payload" | jq '.stream=true')" | head -n 20
echo ""
echo "=== Local gateway (stream, first 20 lines) ==="
curl -sS -N -m 120 -X POST "${BASE_URL}/api/v1/ai/chat/stream" \
-H "Authorization: Bearer ${OPENCODE_TOKEN}" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d "$(jq -n \
--arg provider "opencode-go" \
--arg model "$MODEL" \
--arg message "$MESSAGE" \
'{provider:$provider,model:$model,messages:[{role:"user",content:$message}],max_tokens:2048}')" | head -n 20