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

推荐订阅源

Google DeepMind News
Google DeepMind News
C
Comments on: Blog
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
Martin Fowler
Martin Fowler
A
About on SuperTechFans
H
Help Net Security
美团技术团队
I
InfoQ
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
I
Intezer
Microsoft Azure Blog
Microsoft Azure Blog
T
ThreatConnect
The Register - Security
The Register - Security
Cisco Talos Blog
Cisco Talos Blog
V
Vulnerabilities – Threatpost
A
Arctic Wolf
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
C
CERT Recently Published Vulnerability Notes
P
Privacy & Cybersecurity Law Blog
T
Tenable Blog
爱范儿
爱范儿
F
Full Disclosure
L
Lohrmann on Cybersecurity
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
GbyAI
GbyAI
P
Privacy International News Feed
T
True Tiger Recordings
O
OpenAI News
MyScale Blog
MyScale Blog
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 叶小钗
Y
Y Combinator Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
N
News | PayPal Newsroom
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
Google Online Security Blog
Google Online Security Blog

Recent Commits to openclaw:main

Deprecate memory-specific embedding provider registration (#85072) · openclaw/openclaw@c9d4f7e fix(ci): bound real behavior proof API waits · openclaw/openclaw@4a8d89f fix(gateway): reject no-auth tailscale exposure · openclaw/openclaw@dc5954b fix(agents): avoid false Codex runtime live switches perf(gateway): trust current metadata lifecycle cache chore(release): update appcast for 2026.5.26 · openclaw/openclaw@c95b51f refactor: move channel message sdk compat into core · openclaw/openclaw@8e5183c ci(release): accept main full-validation proof · openclaw/openclaw@1e67af7 ci(release): harden postpublish verification · openclaw/openclaw@ef17bba fix(cli): reject malformed gateway timeouts · openclaw/openclaw@e61f175 fix(dev): bound issue labeler OpenAI waits fix(openai): normalize responses replay tool ids fix(status): keep default status fast path bounded · openclaw/openclaw@7121f67 feat(embeddings): add OpenAI-compatible core provider (#85269) · openclaw/openclaw@4d89e00 Make Telegram sendMessage actions durable (#87261) · openclaw/openclaw@f3fe48e fix(dev): bound gh-read API waits · openclaw/openclaw@5fb57b5 fix(vllm): wire configured thinking params · openclaw/openclaw@e153ece fix(agents): separate heartbeat runtime template (#85416) · openclaw/openclaw@75221e0 fix: require admin for node device approvals · openclaw/openclaw@517ce3d fix(qa): create Matrix mention progress target · openclaw/openclaw@983759b fix(dev): bound Claude usage debug fetches · openclaw/openclaw@d09eb43 fix(cli): validate message numeric options · openclaw/openclaw@5fdaf6b perf(gateway): cache current plugin metadata fingerprints · openclaw/openclaw@7efbaf7 fix(dev): bound realtime smoke HTTP waits · openclaw/openclaw@e2cebe8 fix(qa): accept Matrix tool error final races · openclaw/openclaw@a275ce8 fix(qa): cap Matrix readiness polling · openclaw/openclaw@099b0f8 fix(cli): reject loose webhook and directory numeric options · openclaw/openclaw@0889106 fix(cli): validate directory limits before resolution · openclaw/openclaw@513a223 fix(agents): keep runtime context before active user turns · openclaw/openclaw@0503853 fix(qa): stop Matrix phases after run timeout · openclaw/openclaw@f4b9d24 fix(agents): strip stale Anthropic thinking · openclaw/openclaw@66965f5 fix(doctor): validate bundled MCP tool schemas · openclaw/openclaw@a02fe52 fix(qa): kill timed out Matrix CLI runs · openclaw/openclaw@b8fc2f6 fix(dev): bound discord smoke waits · openclaw/openclaw@545ad7f chore(pixverse): publish as external plugin · openclaw/openclaw@5366209 feat(pixverse): add api region selection · openclaw/openclaw@b3083de feat(pixverse): add video generation provider · openclaw/openclaw@c183705 fix(qa): tolerate fast Matrix tool replies · openclaw/openclaw@a46e839 refactor: remove channel turn runtime aliases · openclaw/openclaw@6c37402 fix(test): bound qa otel receiver bodies · openclaw/openclaw@83ab0ba fix(lint): clean manifest registry installed checks · openclaw/openclaw@fd648ed fix(scripts): resolve npm package candidates through npm runner · openclaw/openclaw@7a7d9de fix(qa): hide Matrix tool progress marker in workspace · openclaw/openclaw@42f3550 fix(usage): forward cached token usage in chat completions (#82062) · openclaw/openclaw@12e5876 test(codex): align provider claim expectation · openclaw/openclaw@42387af perf(gateway): cache stable plugin index fingerprints · openclaw/openclaw@2babe03 fix(test): scan kitchen rpc readiness logs incrementally · openclaw/openclaw@1d4537a fix(test): fail startup bench on bad samples · openclaw/openclaw@8c6da93 fix(onboard): preserve agents.list and bindings on rerun · openclaw/openclaw@bbdff39 fix: send bare direct Anthropic model ids · openclaw/openclaw@aa0a290 fix(deepinfra): load all DeepInfra models when user wants to browse t… fix(package): honor dist package exclusions in inventory · openclaw/openclaw@296fbde fix(qa): harden Matrix tool progress scenario · openclaw/openclaw@32b3fb6 fix(package): match npm globstar exclusions · openclaw/openclaw@f4bcd61 fix: preserve channel runResolved mock compatibility · openclaw/openclaw@c89298f fix(test): bound config reload log polling · openclaw/openclaw@329dad2 fix(lint): preserve JSONL parse cause · openclaw/openclaw@d6949d5 test(e2e): preserve macos smoke entrypoint path · openclaw/openclaw@5eba765 fix(test): await mcp timeout cleanup · openclaw/openclaw@109ba23 fix(test): harden mcp channel ws timeout · openclaw/openclaw@a4a75a8 fix(test): harden gateway network ws timeout · openclaw/openclaw@e50b20f fix(agents/harness): validate forced plugin harness support before pi… · openclaw/openclaw@730ac1a fix(test): bound codex media path log polling · openclaw/openclaw@40a2600 test: align extension inbound context assertions · openclaw/openclaw@98c0ad8 fix(install): skip Homebrew until macOS packages need it · openclaw/openclaw@527b7c2 fix(ci): bound additional boundary checks · openclaw/openclaw@351aac9 fix(release): reject empty beta smoke runs · openclaw/openclaw@4dfc2cf fix(build): cap tsdown heap in containers · openclaw/openclaw@e8dde30 fix(docker): skip declarations in runtime packages · openclaw/openclaw@cc662ba fix(package): omit unpacked test helpers from inventory · openclaw/openclaw@6c42fea fix(crabbox): reinitialize invalid changed-gate git dirs · openclaw/openclaw@ecdc925 fix(lint): shard core lint checks · openclaw/openclaw@1ba4448 fix(lint): cap oxlint helper memory locally · openclaw/openclaw@8caa44f fix(lint): split source lint shards · openclaw/openclaw@158bc69 fix(crabbox): full-sync local sparse container runs · openclaw/openclaw@b3e3b1b fix(test): enable live cache script gates · openclaw/openclaw@72c6813 fix(test): reject unknown live media providers · openclaw/openclaw@51dd548 fix(cli): reject loose model and gateway numeric options · openclaw/openclaw@6b391ef refactor: centralize inbound supplemental context · openclaw/openclaw@1507a97 fix(test): reject empty gateway cpu runs · openclaw/openclaw@ad3d197 fix(test): fail empty plugin gauntlet runs · openclaw/openclaw@b460ee4 fix: load Claude CLI OAuth for PI auth profiles (#87167) · openclaw/openclaw@cc704ca fix(agents): ignore failed subagent placeholders fix(agents): report approval resolutions in bridge mode · openclaw/openclaw@88bbc5b fix(qa): keep fallback delivery on latest targets fix(agents): preserve bridge hook context · openclaw/openclaw@2c3190d fix(qa): close remaining mock qa e2e regressions · openclaw/openclaw@14198a1 fix(qa): isolate mock bridge hook state · openclaw/openclaw@35248be fix(qa): stabilize mock QA scenario contracts · openclaw/openclaw@81c1892 fix(agents): classify direct fallback targets by channel grammar · openclaw/openclaw@79f7b93 fix(qa): scope mock image prompts to latest turn · openclaw/openclaw@c2d059d fix(agents): suppress Write/Edit failed warning on response-timeout f… · openclaw/openclaw@7e702bb fix(cron): surface classified run failure causes · openclaw/openclaw@3104f36 fix(test): fail empty extension test requests · openclaw/openclaw@57b1c0b fix(cli): reject loose numeric options · openclaw/openclaw@c95d348 docs(providers/openai): clarify OpenAI Realtime Platform credits · openclaw/openclaw@717003a fix(codex): keep attempt watchdog for queued terminal turns · openclaw/openclaw@ca990f2 fix(qqbot): gate fallback approval buttons (#87154) · openclaw/openclaw@08a73db fix(test): fail explicit empty vitest runs · openclaw/openclaw@7615c31 ci: fall back from stale workflow dispatch refs · openclaw/openclaw@8d99037
fix(agents): honor OpenAI-compatible cache retention · openclaw/openclaw@3e351b7
steipete · 2026-05-27 · via Recent Commits to openclaw:main

@@ -30,6 +30,100 @@ describe("prompt cache retention", () => {

3030

).toBeUndefined();

3131

});

323233+

it("passes explicit cacheRetention through for openai-completions providers when supportsPromptCacheKey (issue #81281)", () => {

34+

// Regression: openai-completions providers with prefix-caching backends

35+

// (oMLX, llama.cpp, etc.) set compat.supportsPromptCacheKey: true and

36+

// cacheRetention: "long" but the wrapper was silently dropping the

37+

// user's explicit cacheRetention because the provider is neither in the

38+

// anthropic family nor google-eligible.

39+

expect(

40+

resolveCacheRetention(

41+

{ cacheRetention: "long" },

42+

"omlx-local",

43+

"openai-completions",

44+

"local_model",

45+

true,

46+

),

47+

).toBe("long");

48+

expect(

49+

resolveCacheRetention(

50+

{ cacheRetention: "short" },

51+

"omlx-local",

52+

"openai-completions",

53+

"local_model",

54+

true,

55+

),

56+

).toBe("short");

57+

expect(

58+

resolveCacheRetention(

59+

{ cacheRetention: "none" },

60+

"omlx-local",

61+

"openai-completions",

62+

"local_model",

63+

true,

64+

),

65+

).toBe("none");

66+

});

67+68+

it("does not honor explicit cacheRetention for openai-completions without supportsPromptCacheKey", () => {

69+

// Providers that route via openai-completions but do not advertise prompt

70+

// caching (e.g. amazon-bedrock proxying amazon.* nova models) must keep

71+

// the explicit cacheRetention from leaking into the outgoing payload.

72+

expect(

73+

resolveCacheRetention(

74+

{ cacheRetention: "long" },

75+

"amazon-bedrock",

76+

"openai-completions",

77+

"amazon.nova-micro-v1:0",

78+

),

79+

).toBeUndefined();

80+

expect(

81+

resolveCacheRetention(

82+

{ cacheRetention: "long" },

83+

"omlx-local",

84+

"openai-completions",

85+

"local_model",

86+

false,

87+

),

88+

).toBeUndefined();

89+

});

90+91+

it("returns undefined for openai-completions without explicit cacheRetention", () => {

92+

// Without an explicit user choice, openai-completions providers fall back

93+

// to the transport-level default ("short") rather than receiving a

94+

// wrapper-injected value.

95+

expect(

96+

resolveCacheRetention(undefined, "omlx-local", "openai-completions", "local_model", true),

97+

).toBeUndefined();

98+

expect(

99+

resolveCacheRetention({}, "omlx-local", "openai-completions", "local_model", true),

100+

).toBeUndefined();

101+

});

102+103+

it("does not map legacy cacheControlTtl for openai-completions prompt-cache-key providers", () => {

104+

// Legacy TTL aliases were Anthropic/Google semantics; OpenAI-compatible

105+

// completions providers need an explicit cacheRetention value before the

106+

// wrapper forwards retention to the transport.

107+

expect(

108+

resolveCacheRetention(

109+

{ cacheControlTtl: "1h" },

110+

"omlx-local",

111+

"openai-completions",

112+

"local_model",

113+

true,

114+

),

115+

).toBeUndefined();

116+

expect(

117+

resolveCacheRetention(

118+

{ cacheControlTtl: "5m" },

119+

"omlx-local",

120+

"openai-completions",

121+

"local_model",

122+

true,

123+

),

124+

).toBeUndefined();

125+

});

126+33127

it("identifies supported direct Google cache families", () => {

34128

expect(

35129

isGooglePromptCacheEligible({