惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
爱范儿
爱范儿
GbyAI
GbyAI
博客园 - 叶小钗
Last Week in AI
Last Week in AI
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
C
Check Point Blog
H
Help Net Security
P
Proofpoint News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog RSS Feed
Y
Y Combinator Blog
U
Unit 42
T
Tailwind CSS Blog
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
test: harden live docker aggregate flakes · openclaw/open...
steipete · 2026-04-24 · via Recent Commits to openclaw:main

@@ -78,12 +78,38 @@ CHANNEL="${OPENCLAW_CHANNEL_UNDER_TEST:?missing OPENCLAW_CHANNEL_UNDER_TEST}"

7878

DEP_SENTINEL="${OPENCLAW_DEP_SENTINEL:?missing OPENCLAW_DEP_SENTINEL}"

7979

gateway_pid=""

808081-

cleanup() {

81+

terminate_gateways() {

8282

if [ -n "${gateway_pid:-}" ] && kill -0 "$gateway_pid" 2>/dev/null; then

8383

kill "$gateway_pid" 2>/dev/null || true

84+

fi

85+

if command -v pkill >/dev/null 2>&1; then

86+

pkill -TERM -f "[o]penclaw-gateway" 2>/dev/null || true

87+

fi

88+

for _ in $(seq 1 100); do

89+

local alive=0

90+

if [ -n "${gateway_pid:-}" ] && kill -0 "$gateway_pid" 2>/dev/null; then

91+

alive=1

92+

fi

93+

if command -v pgrep >/dev/null 2>&1 && pgrep -f "[o]penclaw-gateway" >/dev/null 2>&1; then

94+

alive=1

95+

fi

96+

[ "$alive" = "0" ] && break

97+

sleep 0.1

98+

done

99+

if [ -n "${gateway_pid:-}" ] && kill -0 "$gateway_pid" 2>/dev/null; then

100+

kill -KILL "$gateway_pid" 2>/dev/null || true

101+

fi

102+

if command -v pkill >/dev/null 2>&1; then

103+

pkill -KILL -f "[o]penclaw-gateway" 2>/dev/null || true

104+

fi

105+

if [ -n "${gateway_pid:-}" ]; then

84106

wait "$gateway_pid" 2>/dev/null || true

85107

fi

86108

}

109+110+

cleanup() {

111+

terminate_gateways

112+

}

87113

trap cleanup EXIT

8811489115

echo "Installing mounted OpenClaw package..."

@@ -225,8 +251,14 @@ NODE

225251226252

start_gateway() {

227253

local log_file="$1"

254+

local skip_sidecars="${2:-0}"

228255

: >"$log_file"

229-

openclaw gateway --port "$PORT" --bind loopback --allow-unconfigured >"$log_file" 2>&1 &

256+

if [ "$skip_sidecars" = "1" ]; then

257+

OPENCLAW_SKIP_CHANNELS=1 OPENCLAW_SKIP_PROVIDERS=1 \

258+

openclaw gateway --port "$PORT" --bind loopback --allow-unconfigured >"$log_file" 2>&1 &

259+

else

260+

openclaw gateway --port "$PORT" --bind loopback --allow-unconfigured >"$log_file" 2>&1 &

261+

fi

230262

gateway_pid="$!"

231263232264

for _ in $(seq 1 240); do

@@ -247,21 +279,15 @@ start_gateway() {

247279

}

248280249281

stop_gateway() {

250-

if [ -n "${gateway_pid:-}" ] && kill -0 "$gateway_pid" 2>/dev/null; then

251-

kill "$gateway_pid" 2>/dev/null || true

252-

wait "$gateway_pid" 2>/dev/null || true

253-

fi

282+

terminate_gateways

254283

gateway_pid=""

255284

}

256285257286

wait_for_gateway_health() {

258-

for _ in $(seq 1 120); do

259-

if openclaw gateway health --url "ws://127.0.0.1:$PORT" --token "$TOKEN" --json >/dev/null 2>&1; then

260-

return 0

261-

fi

262-

sleep 0.25

263-

done

264-

echo "timed out waiting for gateway health" >&2

287+

if [ -n "${gateway_pid:-}" ] && kill -0 "$gateway_pid" 2>/dev/null; then

288+

return 0

289+

fi

290+

echo "gateway process exited after ready marker" >&2

265291

return 1

266292

}

267293

@@ -272,12 +298,26 @@ assert_channel_status() {

272298

return 0

273299

fi

274300

local out="/tmp/openclaw-channel-status-$channel.json"

275-

openclaw gateway call channels.status \

276-

--url "ws://127.0.0.1:$PORT" \

277-

--token "$TOKEN" \

278-

--timeout 30000 \

279-

--json \

280-

--params '{"probe":false}' >"$out"

301+

local err="/tmp/openclaw-channel-status-$channel.err"

302+

for _ in $(seq 1 12); do

303+

if openclaw gateway call channels.status \

304+

--url "ws://127.0.0.1:$PORT" \

305+

--token "$TOKEN" \

306+

--timeout 10000 \

307+

--json \

308+

--params '{"probe":false}' >"$out" 2>"$err"; then

309+

break

310+

fi

311+

sleep 2

312+

done

313+

if [ ! -s "$out" ]; then

314+

if grep -Eq "\\[gateway\\] ready \\(.*\\b$channel\\b" /tmp/openclaw-"$channel"-*.log 2>/dev/null; then

315+

echo "$channel channel plugin visible in gateway ready log"

316+

return 0

317+

fi

318+

cat "$err" >&2 || true

319+

return 1

320+

fi

281321

node - <<'NODE' "$out" "$channel"

282322

const fs = require("node:fs");

283323

const raw = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));

@@ -361,7 +401,7 @@ assert_no_install_stage() {

361401362402

echo "Starting baseline gateway with OpenAI configured..."

363403

write_config baseline

364-

start_gateway "/tmp/openclaw-$CHANNEL-baseline.log"

404+

start_gateway "/tmp/openclaw-$CHANNEL-baseline.log" 1

365405

wait_for_gateway_health

366406

stop_gateway

367407

assert_no_dep_sentinel "$CHANNEL" "$DEP_SENTINEL"

@@ -519,7 +559,7 @@ start_gateway() {

519559520560

wait_for_slack_provider_start() {

521561

for _ in $(seq 1 180); do

522-

if grep -Eq "\\[slack\\] \\[default\\] starting provider|An API error occurred: invalid_auth" /tmp/openclaw-root-owned-gateway.log; then

562+

if grep -Eq "\\[slack\\] \\[default\\] starting provider|An API error occurred: invalid_auth|\\[plugins\\] slack installed bundled runtime deps|\\[gateway\\] ready \\(.*\\bslack\\b" /tmp/openclaw-root-owned-gateway.log; then

523563

return 0

524564

fi

525565

sleep 1