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

推荐订阅源

Martin Fowler
Martin Fowler
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
The Cloudflare Blog
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
C
Check Point Blog
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
V
V2EX
F
Fortinet All Blogs
B
Blog
大猫的无限游戏
大猫的无限游戏
N
Netflix TechBlog - Medium
B
Blog RSS Feed
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

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
refactor(cli): share gateway startup tracing · openclaw/o...
vincentkoc · 2026-06-23 · via Recent Commits to openclaw:main

@@ -50,6 +50,7 @@ import {

5050

shouldUseSecretsHelpFastPath,

5151

shouldUseSetupOnboardConfigureHelpFastPath,

5252

} from "./run-main-policy.js";

53+

import { createGatewayStartupTrace } from "./startup-trace.js";

5354

import { normalizeWindowsArgv } from "./windows-argv.js";

54555556

export {

@@ -66,8 +67,6 @@ export {

6667

shouldUseSetupOnboardConfigureHelpFastPath,

6768

} from "./run-main-policy.js";

686969-

type Awaitable<T> = T | Promise<T>;

70-7170

const CLI_PROXY_ENV_KEYS = [

7271

"HTTP_PROXY",

7372

"HTTPS_PROXY",

@@ -87,40 +86,6 @@ const loadProxyLifecycleModule = async () => await import("../infra/net/proxy/pr

8786

const loadCrestodianModule = async () => await import("../crestodian/crestodian.js");

8887

const loadProgressModule = async () => await import("./progress.js");

898890-

function createGatewayCliMainStartupTrace(argv: string[]) {

91-

// Startup trace is scoped to gateway invocations to avoid routine CLI stderr noise.

92-

const enabled =

93-

isTruthyEnvValue(process.env.OPENCLAW_GATEWAY_STARTUP_TRACE) &&

94-

argv.slice(2).includes("gateway");

95-

const started = performance.now();

96-

let last = started;

97-

const emit = (name: string, durationMs: number, totalMs: number) => {

98-

if (!enabled) {

99-

return;

100-

}

101-

process.stderr.write(

102-

`[gateway] startup trace: cli.main.${name} ${durationMs.toFixed(1)}ms total=${totalMs.toFixed(1)}ms\n`,

103-

);

104-

};

105-

return {

106-

mark(name: string) {

107-

const now = performance.now();

108-

emit(name, now - last, now - started);

109-

last = now;

110-

},

111-

async measure<T>(name: string, run: () => Awaitable<T>): Promise<T> {

112-

const before = performance.now();

113-

try {

114-

return await run();

115-

} finally {

116-

const now = performance.now();

117-

emit(name, now - before, now - started);

118-

last = now;

119-

}

120-

},

121-

};

122-

}

123-12489

function isRemoteAgentDispatchInvocation(argv: string[], primary: string | null): boolean {

12590

return primary === "agent" && !argv.includes("--local");

12691

}

@@ -177,7 +142,7 @@ function isGatewayRunInvocationArgv(argv: string[]): boolean {

177142178143

async function tryRunGatewayRunFastPath(

179144

argv: string[],

180-

startupTrace: ReturnType<typeof createGatewayCliMainStartupTrace>,

145+

startupTrace: ReturnType<typeof createGatewayStartupTrace>,

181146

): Promise<boolean> {

182147

if (!isGatewayRunFastPathArgv(argv)) {

183148

return false;

@@ -623,7 +588,7 @@ async function resolveUnownedCliPrimaryMessage(params: {

623588

}

624589625590

async function bootstrapCliProxyCaptureAndDispatcher(

626-

startupTrace: ReturnType<typeof createGatewayCliMainStartupTrace>,

591+

startupTrace: ReturnType<typeof createGatewayStartupTrace>,

627592

options: { ensureDispatcher?: boolean } = {},

628593

): Promise<void> {

629594

const [

@@ -644,7 +609,7 @@ async function bootstrapCliProxyCaptureAndDispatcher(

644609645610

export async function runCli(argv: string[] = process.argv) {

646611

const originalArgv = normalizeWindowsArgv(argv);

647-

const startupTrace = createGatewayCliMainStartupTrace(originalArgv);

612+

const startupTrace = createGatewayStartupTrace(originalArgv, "cli.main");

648613

const parsedContainer = parseCliContainerArgs(originalArgv);

649614

if (!parsedContainer.ok) {

650615

throw new Error(parsedContainer.error);