fix(agents): restore model-fetch info logs (#89648)

* fix(agents): restore model-fetch info logs

* docs(logging): document [model-fetch] default info-level visibility

[model-fetch] response metadata is always emitted at info level
regardless of OPENCLAW_DEBUG_MODEL_TRANSPORT, so users see basic
model transport hygiene (provider, API, model, status, latency)
without needing debug flags.

* docs(logging): clarify model-fetch start metadata visibility
This commit is contained in:
xiaobao-k8s
2026-06-23 01:02:16 +08:00
committed by GitHub
parent 8c8eb86fff
commit 5d892e484d
3 changed files with 46 additions and 2 deletions
+6
View File
@@ -210,6 +210,12 @@ These flags log through normal OpenClaw logging, so `openclaw logs --follow`
and the Control UI Logs tab show them. Without the flags, the same diagnostics
remain available at `debug` level.
`[model-fetch]` start and response metadata (provider, API, model, status,
latency, and request fields such as method, URL, timeout, proxy, and policy)
is always emitted at `info` level regardless of
`OPENCLAW_DEBUG_MODEL_TRANSPORT`, so basic model transport hygiene is visible
without debug flags.
### Trace correlation
File logs are JSONL. When a log call carries a valid diagnostic trace context,
+34
View File
@@ -0,0 +1,34 @@
import { describe, expect, it, vi } from "vitest";
import { emitModelTransportDebug } from "./model-transport-debug.js";
describe("emitModelTransportDebug", () => {
function createLogger() {
return {
info: vi.fn(),
debug: vi.fn(),
} as unknown as Parameters<typeof emitModelTransportDebug>[0];
}
it("emits model-fetch metadata at info level by default", () => {
const log = createLogger();
emitModelTransportDebug(
log,
"[model-fetch] response provider=openai api=chat model=gpt status=200 latencyMs=42",
);
expect(log.info).toHaveBeenCalledWith(
"[model-fetch] response provider=openai api=chat model=gpt status=200 latencyMs=42",
);
expect(log.debug).not.toHaveBeenCalled();
});
it("keeps non-model-fetch transport diagnostics at debug level by default", () => {
const log = createLogger();
emitModelTransportDebug(log, "[model-sse] event type=response.output_text.delta");
expect(log.debug).toHaveBeenCalledWith("[model-sse] event type=response.output_text.delta");
expect(log.info).not.toHaveBeenCalled();
});
});
+6 -2
View File
@@ -68,9 +68,13 @@ function isModelTransportDebugEnabled(env: ModelTransportDebugEnv = process.env)
);
}
/** Emits transport diagnostics at info level only when debug env explicitly enables them. */
function isModelFetchMetadataMessage(message: string): boolean {
return message.startsWith("[model-fetch]");
}
/** Emits model-fetch metadata at info level by default; other diagnostics require debug env. */
export function emitModelTransportDebug(log: SubsystemLogger, message: string): void {
if (isModelTransportDebugEnabled()) {
if (isModelFetchMetadataMessage(message) || isModelTransportDebugEnabled()) {
log.info(message);
return;
}