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

推荐订阅源

The Register - Security
The Register - Security
美团技术团队
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
S
Securelist
T
Tor Project blog
GbyAI
GbyAI
L
LINUX DO - 热门话题
V
Visual Studio Blog
AWS News Blog
AWS News Blog
The Cloudflare Blog
腾讯CDC
K
Kaspersky official blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recorded Future
Recorded Future
李成银的技术随笔
W
WeLiveSecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
M
Microsoft Research Blog - Microsoft Research
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Schneier on Security
Schneier on Security
B
Blog
IT之家
IT之家
爱范儿
爱范儿
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
NISL@THU
NISL@THU
J
Java Code Geeks
博客园 - 聂微东
T
The Exploit Database - CXSecurity.com
Cyberwarzone
Cyberwarzone
博客园 - 叶小钗
MyScale Blog
MyScale Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Project Zero
Project Zero
F
Future of Privacy Forum
D
Darknet – Hacking Tools, Hacker News & Cyber Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Hacker News: Ask HN
Hacker News: Ask HN
D
Docker
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
V
Vulnerabilities – Threatpost

Recent Commits to openclaw:main

fix(agents): cap heartbeat context hint fallback · openclaw/openclaw@04061bc perf(cli): cache stable subcommand help (#84786) · openclaw/openclaw@f39f56a fix(ollama): preserve tool call ids [AI-assisted] (#84855) · openclaw/openclaw@2000227 fix: align remaining copyright notice · openclaw/openclaw@f43e83c fix(config): append numeric bound hints to ceiling/floor validation e… · openclaw/openclaw@8a8f9dc fix(qa): enable private self-check runtime · openclaw/openclaw@0fb1de5 fix(diffs): replace iconMarkup string with ToolbarIconName enum to el… · openclaw/openclaw@b7f9bf5 fix: update mac copyright owner fix(agents): normalize openapi tool schemas · openclaw/openclaw@ec67290 fix(memory): stop recall tracking when dreaming is disabled · openclaw/openclaw@c89632b fix(diagnostics-otel): suppress exporter rejection crashes (#84881) perf: speed up secrets and nodes help startup (#84818) · openclaw/openclaw@233765b docs: add PDF timeout changelog · openclaw/openclaw@e3b77d6 fix(pdf): bound remote body reads [Fix] Reject slow node event sends (#84387) fix(doctor): detect Codex bwrap namespace denials · openclaw/openclaw@43c6c26 fix(update): prune stale local bundled plugin shadows · openclaw/openclaw@4a360ac ci: add live Codex plugin release check · openclaw/openclaw@3eb2d64 fix(slack): suppress reasoning reply payloads (#84322) chore: update vite · openclaw/openclaw@ec7495c chore: update dependencies · openclaw/openclaw@ec10d12 fix(config): validate browser sandbox bind sources [AI] (#84799) · openclaw/openclaw@3cc8b2a doctor: constrain legacy plugin cleanup paths [AI] (#84801) Fix Telegram isolated polling stall watchdog (#84861) · openclaw/openclaw@40db92f ci(release): keep non-waiting clawhub publish best effort ci(release): preserve direct repair publishes · openclaw/openclaw@0604d25 fix(docker): keep prune store warmup before offline stage · openclaw/openclaw@1e8d966 fix(docker): keep runtime prune offline · openclaw/openclaw@a329b9e ci(release): streamline beta publish verification · openclaw/openclaw@1c5fda1 ci(release): keep focused validation reruns independent · openclaw/openclaw@624d920 ci(release): require resolved target before child dispatch · openclaw/openclaw@2fd02c2 [Fix] Keep node systemd tokens out of unit files (#84815) refactor(whatsapp): use async fs-safe credential checks · openclaw/openclaw@9ec9fbf fix: reject symlinked whatsapp creds · openclaw/openclaw@194f078 fix(whatsapp): guard credential atomic writes fix(doctor): clear stale runtime override pins (#84221) fix(agents): disable pi-coding-agent auto-retry to prevent tool call … fix(trajectory): tolerate partial skill snapshot entries in support c… · openclaw/openclaw@c9b6a8b fix(ui): widen settings personal card · openclaw/openclaw@3156d94 fix(agents): log pre-prompt compaction fits decisions (#84676) · openclaw/openclaw@79be940 fix(memory-core): allow bounded dreaming session cleanup (#84802) · openclaw/openclaw@0671a2a perf(cli): lazy-load agents actions for help (#84483) · openclaw/openclaw@168f8a7 Skip empty sherpa structured transcripts (#84667) · openclaw/openclaw@46030f5 feat: support git and local skill installs (#84793) · openclaw/openclaw@c031274 Policy: add tool metadata conformance (#80056) fix(doctor): warn when sandbox hides MCP tools (#84742) · openclaw/openclaw@6745fe8 perf(cli): speed up onboarding help startup (#84488) · openclaw/openclaw@2c0c9c9 perf: isolate doctor core check tests (#84493) · openclaw/openclaw@2585249 feat(tasks): explain stale-running maintenance decisions (#84691) · openclaw/openclaw@3d3cf96 fix(minimax): stop advertising music duration control (#84765)
chore(死代码):删除重复的辅助函数 · openclaw/openclaw@88c49f9
vincentkoc · 2026-05-21 · via Recent Commits to openclaw:main

@@ -68,36 +68,41 @@ async function flushMicrotasks(): Promise<void> {

6868

await Promise.resolve();

6969

}

707071+

function createAgentWithSession(query: ManualAsyncIterator) {

72+

const agent = new ClaudeAcpAgent({

73+

sessionUpdate: vi.fn(),

74+

extNotification: vi.fn(),

75+

} as unknown as ConstructorParameters<typeof ClaudeAcpAgent>[0]);

76+

agent.sessions["session-1"] = {

77+

cancelled: false,

78+

accumulatedUsage: {

79+

inputTokens: 0,

80+

outputTokens: 0,

81+

cachedReadTokens: 0,

82+

cachedWriteTokens: 0,

83+

},

84+

contextWindowSize: 200_000,

85+

cwd: "/tmp",

86+

emitRawSDKMessages: false,

87+

input: {

88+

push: vi.fn(),

89+

end: vi.fn(),

90+

},

91+

nextPendingOrder: 0,

92+

pendingMessages: new Map(),

93+

promptRunning: false,

94+

query,

95+

settingsManager: {

96+

dispose: vi.fn(),

97+

},

98+

} as unknown as (typeof agent.sessions)[string];

99+

return agent;

100+

}

101+71102

describe("patched claude-agent-acp completion", () => {

72103

it("does not resolve a prompt on idle before the result message", async () => {

73104

const query = new ManualAsyncIterator();

74-

const agent = new ClaudeAcpAgent({

75-

sessionUpdate: vi.fn(),

76-

extNotification: vi.fn(),

77-

} as unknown as ConstructorParameters<typeof ClaudeAcpAgent>[0]);

78-

agent.sessions["session-1"] = {

79-

cancelled: false,

80-

accumulatedUsage: {

81-

inputTokens: 0,

82-

outputTokens: 0,

83-

cachedReadTokens: 0,

84-

cachedWriteTokens: 0,

85-

},

86-

contextWindowSize: 200_000,

87-

cwd: "/tmp",

88-

emitRawSDKMessages: false,

89-

input: {

90-

push: vi.fn(),

91-

end: vi.fn(),

92-

},

93-

nextPendingOrder: 0,

94-

pendingMessages: new Map(),

95-

promptRunning: false,

96-

query,

97-

settingsManager: {

98-

dispose: vi.fn(),

99-

},

100-

} as unknown as (typeof agent.sessions)[string];

105+

const agent = createAgentWithSession(query);

101106102107

let resolved = false;

103108

const promptPromise = agent

@@ -127,33 +132,7 @@ describe("patched claude-agent-acp completion", () => {

127132128133

it("does not resolve a prompt after a task-notification result goes idle", async () => {

129134

const query = new ManualAsyncIterator();

130-

const agent = new ClaudeAcpAgent({

131-

sessionUpdate: vi.fn(),

132-

extNotification: vi.fn(),

133-

} as unknown as ConstructorParameters<typeof ClaudeAcpAgent>[0]);

134-

agent.sessions["session-1"] = {

135-

cancelled: false,

136-

accumulatedUsage: {

137-

inputTokens: 0,

138-

outputTokens: 0,

139-

cachedReadTokens: 0,

140-

cachedWriteTokens: 0,

141-

},

142-

contextWindowSize: 200_000,

143-

cwd: "/tmp",

144-

emitRawSDKMessages: false,

145-

input: {

146-

push: vi.fn(),

147-

end: vi.fn(),

148-

},

149-

nextPendingOrder: 0,

150-

pendingMessages: new Map(),

151-

promptRunning: false,

152-

query,

153-

settingsManager: {

154-

dispose: vi.fn(),

155-

},

156-

} as unknown as (typeof agent.sessions)[string];

135+

const agent = createAgentWithSession(query);

157136158137

let resolved = false;

159138

const promptPromise = agent