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

推荐订阅源

Recent Announcements
Recent Announcements
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 司徒正美
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
小众软件
小众软件
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
A
About on SuperTechFans
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
B
Blog RSS Feed
G
Google Developers Blog
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)

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
chore(deadcode): inline auto-reply display wrappers · ope...
vincentkoc · 2026-06-20 · via Recent Commits to openclaw:main
Original file line numberDiff line numberDiff line change

@@ -4,34 +4,24 @@ import type { ReplyPayload } from "../types.js";

44
55

export type CompactionNoticePhase = "start" | "end" | "incomplete" | "skipped";

66
7+

const COMPACTION_NOTICE_TEXT: Record<CompactionNoticePhase, string> = {

8+

start: "🧹 Compacting context...",

9+

end: "🧹 Compaction complete",

10+

incomplete: "🧹 Compaction incomplete",

11+

skipped: "🧹 Compaction not needed",

12+

};

13+
714

export function shouldNotifyUserAboutCompaction(cfg?: OpenClawConfig): boolean {

815

return cfg?.agents?.defaults?.compaction?.notifyUser === true;

916

}

1017
11-

export function formatCompactionNoticeText(phase: CompactionNoticePhase): string {

12-

switch (phase) {

13-

case "start":

14-

return "🧹 Compacting context...";

15-

case "end":

16-

return "🧹 Compaction complete";

17-

case "incomplete":

18-

return "🧹 Compaction incomplete";

19-

case "skipped":

20-

return "🧹 Compaction not needed";

21-

default: {

22-

phase satisfies never;

23-

throw new Error("unknown compaction notice phase");

24-

}

25-

}

26-

}

27-
2818

export function createCompactionNoticePayload(params: {

2919

phase: CompactionNoticePhase;

3020

currentMessageId?: string;

3121

applyReplyToMode?: (payload: ReplyPayload) => ReplyPayload;

3222

}): ReplyPayload {

3323

const payload: ReplyPayload = {

34-

text: formatCompactionNoticeText(params.phase),

24+

text: COMPACTION_NOTICE_TEXT[params.phase],

3525

...(params.currentMessageId ? { replyToId: params.currentMessageId } : {}),

3626

replyToCurrent: true,

3727

isCompactionNotice: true,

Original file line numberDiff line numberDiff line change

@@ -2,7 +2,7 @@

22

import path from "node:path";

33

import { describe, expect, it } from "vitest";

44

import { withEnv } from "../test-utils/env.js";

5-

import { formatToolAggregate, shortenMeta } from "./tool-meta.js";

5+

import { formatToolAggregate } from "./tool-meta.js";

66
77

// Use path.resolve so inputs match the resolved HOME on every platform.

88

const home = path.resolve("/Users/test");

@@ -12,12 +12,14 @@ function withHome<T>(run: () => T): T {

1212

}

1313
1414

describe("tool meta formatting", () => {

15-

it("shortens meta strings with optional colon suffix", () => {

15+

it("shortens home paths with optional colon suffix", () => {

1616

withHome(() => {

17-

expect(shortenMeta(`${home}/a.txt`)).toBe("~/a.txt");

18-

expect(shortenMeta(`${home}/a.txt:12`)).toBe("~/a.txt:12");

19-

expect(shortenMeta(`cd ${home}/dir && ls`)).toBe("cd ~/dir && ls");

20-

expect(shortenMeta("")).toBe("");

17+

expect(formatToolAggregate("fs", [`${home}/a.txt`])).toContain("~/a.txt");

18+

expect(formatToolAggregate("fs", [`${home}/a.txt:12`])).toContain("~/a.txt:12");

19+

expect(formatToolAggregate("exec", [`cd ${home}/dir && ls`])).toContain(

20+

"cd ~/dir && ls",

21+

);

22+

expect(formatToolAggregate("fs", [""])).toBe("🧩 Fs");

2123

});

2224

});

2325
Original file line numberDiff line numberDiff line change

@@ -7,21 +7,13 @@ type ToolAggregateOptions = {

77

markdown?: boolean;

88

};

99
10-

/** Shortens user-home paths inside arbitrary tool metadata. */

11-

export function shortenMeta(meta: string): string {

12-

if (!meta) {

13-

return meta;

14-

}

15-

return shortenHomeInString(meta);

16-

}

17-
1810

/** Formats one grouped tool-progress label from a tool name and metadata entries. */

1911

export function formatToolAggregate(

2012

toolName?: string,

2113

metas?: string[],

2214

options?: ToolAggregateOptions,

2315

): string {

24-

const filtered = (metas ?? []).filter(Boolean).map(shortenMeta);

16+

const filtered = (metas ?? []).filter(Boolean).map(shortenHomeInString);

2517

const display = resolveToolDisplay({ name: toolName });

2618

const normalizedToolName = normalizeLowercaseStringOrEmpty(toolName);

2719

const compactCommandSummary =