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

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
Engineering at Meta
Engineering at Meta
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
H
Hackread – Cybersecurity News, Data Breaches, AI and More
WordPress大学
WordPress大学
博客园_首页
美团技术团队
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
J
Java Code Geeks
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog
雷峰网
雷峰网
爱范儿
爱范儿

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
fix(ci): speed up release validation live probes · opencl...
steipete · 2026-04-29 · via Recent Commits to openclaw:main
Original file line numberDiff line numberDiff line change

@@ -1866,6 +1866,8 @@ async function runInstalledAgentTurn(params) {

18661866

sessionId,

18671867

"--message",

18681868

"Reply with exact ASCII text OK only.",

1869+

"--thinking",

1870+

"minimal",

18691871

"--json",

18701872

],

18711873

cwd: params.cwd,

@@ -2623,6 +2625,8 @@ async function runAgentTurn(params) {

26232625

sessionId,

26242626

"--message",

26252627

"Reply with exact ASCII text OK only.",

2628+

"--thinking",

2629+

"minimal",

26262630

"--json",

26272631

],

26282632

logPath: params.logPath,

Original file line numberDiff line numberDiff line change

@@ -8,20 +8,23 @@ function tomlString(value: string): string {

88

export function buildCiSafeCodexConfig(params: {

99

projectPath: string;

1010

approvalPolicy?: string;

11+

modelReasoningEffort?: string;

1112

sandboxMode?: string;

1213

}): string {

1314

if (!params.projectPath || typeof params.projectPath !== "string") {

1415

throw new Error("projectPath is required.");

1516

}

1617

const resolvedProjectPath = path.resolve(params.projectPath);

1718

const approvalPolicy = params.approvalPolicy ?? "never";

19+

const modelReasoningEffort = params.modelReasoningEffort ?? "low";

1820

const sandboxMode = params.sandboxMode ?? "workspace-write";

1921

return [

2022

"# Generated for Codex CI runs.",

2123

"# Keep the checked-out repo trusted while avoiding maintainer-local",

2224

"# provider/profile overrides that do not exist on CI runners.",

2325

`approval_policy = ${tomlString(approvalPolicy)}`,

2426

`sandbox_mode = ${tomlString(sandboxMode)}`,

27+

`model_reasoning_effort = ${tomlString(modelReasoningEffort)}`,

2528

"",

2629

`[projects.${tomlString(resolvedProjectPath)}]`,

2730

'trust_level = "trusted"',

@@ -33,6 +36,7 @@ export async function writeCiSafeCodexConfig(params: {

3336

outputPath: string;

3437

projectPath: string;

3538

approvalPolicy?: string;

39+

modelReasoningEffort?: string;

3640

sandboxMode?: string;

3741

}): Promise<string> {

3842

if (!params.outputPath || typeof params.outputPath !== "string") {

Original file line numberDiff line numberDiff line change

@@ -988,6 +988,7 @@ async function agentCommandInternal(

988988

runId,

989989

stream: evt.stream,

990990

data: evt.data ?? {},

991+

...(evt.sessionKey ? { sessionKey: evt.sessionKey } : {}),

991992

});

992993

}

993994

if (

Original file line numberDiff line numberDiff line change

@@ -255,7 +255,11 @@ export function runAgentAttempt(params: {

255255

skillsSnapshot: ReturnType<typeof buildWorkspaceSkillSnapshot> | undefined;

256256

resolvedVerboseLevel: VerboseLevel | undefined;

257257

agentDir: string;

258-

onAgentEvent: (evt: { stream: string; data?: Record<string, unknown> }) => void;

258+

onAgentEvent: (evt: {

259+

stream: string;

260+

data?: Record<string, unknown>;

261+

sessionKey?: string;

262+

}) => void;

259263

authProfileProvider: string;

260264

sessionStore?: Record<string, SessionEntry>;

261265

storePath?: string;

Original file line numberDiff line numberDiff line change

@@ -140,7 +140,11 @@ export type RunEmbeddedPiAgentParams = {

140140

onReasoningStream?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise<void>;

141141

onReasoningEnd?: () => void | Promise<void>;

142142

onToolResult?: (payload: ReplyPayload) => void | Promise<void>;

143-

onAgentEvent?: (evt: { stream: string; data: Record<string, unknown> }) => void;

143+

onAgentEvent?: (evt: {

144+

stream: string;

145+

data: Record<string, unknown>;

146+

sessionKey?: string;

147+

}) => void;

144148

lane?: string;

145149

enqueue?: CommandQueueEnqueueFn;

146150

extraSystemPrompt?: string;

Original file line numberDiff line numberDiff line change

@@ -31,7 +31,11 @@ export type SubscribeEmbeddedPiSessionParams = {

3131

blockReplyChunking?: BlockReplyChunking;

3232

onPartialReply?: (payload: { text?: string; mediaUrls?: string[] }) => void | Promise<void>;

3333

onAssistantMessageStart?: () => void | Promise<void>;

34-

onAgentEvent?: (evt: { stream: string; data: Record<string, unknown> }) => void | Promise<void>;

34+

onAgentEvent?: (evt: {

35+

stream: string;

36+

data: Record<string, unknown>;

37+

sessionKey?: string;

38+

}) => void | Promise<void>;

3539

/** Best-effort hook invoked immediately before the terminal lifecycle event is emitted. */

3640

onBeforeLifecycleTerminal?: () => void | Promise<void>;

3741

enforceFinalTag?: boolean;

Original file line numberDiff line numberDiff line change

@@ -203,6 +203,7 @@ type EmbeddedAgentParams = {

203203

onAgentEvent?: (payload: {

204204

stream: string;

205205

data: Record<string, unknown>;

206+

sessionKey?: string;

206207

}) => Promise<void> | void;

207208

};

208209

@@ -1147,6 +1148,7 @@ describe("runAgentTurnWithFallback", () => {

11471148

state.runEmbeddedPiAgentMock.mockImplementationOnce(async (params: EmbeddedAgentParams) => {

11481149

await params.onAgentEvent?.({

11491150

stream: "codex_app_server.guardian",

1151+

sessionKey: "agent:main:subagent:codex-child",

11501152

data: {

11511153

phase: "blocked",

11521154

message: "command requires approval",

@@ -1184,6 +1186,7 @@ describe("runAgentTurnWithFallback", () => {

11841186

expect(emitAgentEvent).toHaveBeenCalledWith({

11851187

runId: "run-codex",

11861188

stream: "codex_app_server.guardian",

1189+

sessionKey: "agent:main:subagent:codex-child",

11871190

data: {

11881191

phase: "blocked",

11891192

message: "command requires approval",

Original file line numberDiff line numberDiff line change

@@ -1410,6 +1410,7 @@ export async function runAgentTurnWithFallback(params: {

14101410

runId,

14111411

stream: evt.stream,

14121412

data: evt.data,

1413+

...(evt.sessionKey ? { sessionKey: evt.sessionKey } : {}),

14131414

});

14141415

}

14151416

// Signal run start only after the embedded agent emits real activity.

Original file line numberDiff line numberDiff line change

@@ -336,6 +336,7 @@ export function createFollowupRunner(params: {

336336

runId,

337337

stream: evt.stream,

338338

data: evt.data,

339+

...(evt.sessionKey ? { sessionKey: evt.sessionKey } : {}),

339340

});

340341

}

341342

if (evt.stream !== "compaction") {

Original file line numberDiff line numberDiff line change

@@ -525,7 +525,6 @@ async function readSpawnedChildRow(params: {

525525

"sessions.list",

526526

{

527527

spawnedBy: params.parentSessionKey,

528-

includeLastMessage: true,

529528

limit: 20,

530529

},

531530

{ timeoutMs: 10_000 },

@@ -539,6 +538,13 @@ async function readSpawnedChildRow(params: {

539538

.find((entry): entry is Record<string, unknown> => entry?.key === params.childSessionKey);

540539

}

541540
541+

function isActiveCodexSubagentRow(row: Record<string, unknown> | undefined): boolean {

542+

if (!row) {

543+

return false;

544+

}

545+

return row.hasActiveSubagentRun === true || row.subagentRunState === "active";

546+

}

547+
542548

async function waitForCodexSubagentStarted(params: {

543549

childSessionKey: string;

544550

client: GatewayClient;

@@ -555,14 +561,12 @@ async function waitForCodexSubagentStarted(params: {

555561

client: params.client,

556562

parentSessionKey: params.parentSessionKey,

557563

});

558-

if (

559-

lastRow &&

560-

params.events.some(

561-

(event) =>

562-

event.sessionKey === params.childSessionKey &&

563-

event.stream === "codex_app_server.lifecycle",

564-

)

565-

) {

564+

const hasLifecycleEvent = params.events.some(

565+

(event) =>

566+

event.sessionKey === params.childSessionKey &&

567+

event.stream === "codex_app_server.lifecycle",

568+

);

569+

if (lastRow && (hasLifecycleEvent || isActiveCodexSubagentRow(lastRow))) {

566570

return lastRow;

567571

}

568572

} catch (error) {