@colinlu50/openclaw-lark-stream 260327.2.4 → 260327.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md CHANGED
@@ -4,23 +4,28 @@ English | [中文](./README.md)
4
4
 
5
5
  ![demo](./demo.gif)
6
6
 
7
- Based on the official [openclaw-lark](https://github.com/larksuite/openclaw-lark) plugin, with **real-time streaming output**, **reasoning display**, and **tool call indicators**.
7
+ Based on the official [openclaw-lark](https://github.com/larksuite/openclaw-lark) plugin, with **real-time streaming output** and **agent execution visibility**.
8
8
 
9
9
  ## ✨ What's Changed
10
10
 
11
11
  The official plugin delivers LLM block results all at once after completion. This version enables:
12
12
 
13
- - **Real-time streaming output** — each block's content is progressively appended to the streaming card as it's generated
13
+ - **Real-time streaming output** — each block's content is progressively appended to the Lark card as it's generated
14
14
  - **Group chat streaming** — streaming output works in group chats as well
15
- - **Reasoning display** — think content from reasoning models (DeepSeek-R1, Claude 3.7, etc.) streams live
16
- - **Tool call indicators** — when the agent calls a tool, the card shows the current tool name in real-time
17
- - **Process panel** — on completion, all reasoning blocks and tool calls are folded into a single expandable "Process" panel in chronological order
18
- - **Token usage** — the card footer shows input/output token counts and context window usage percentage by default
15
+ - **Agent execution visibility** — full transparency into the agent's reasoning and execution flow
16
+ - **Reasoning display** — think content from reasoning models (DeepSeek-R1, Claude 3.7, etc.) streams live
17
+ - **Tool call indicators** — when the agent calls a tool, the card shows the current tool name in real-time
18
+ - **Process panel** — on completion, all reasoning blocks and tool calls are collapsed into a single expandable panel in chronological order
19
+ - **Token usage** — the card footer shows input/output token counts and context window usage percentage by default
19
20
 
20
21
  ## 📢 News
21
22
 
22
- - **2026.3.27 v2** — Collapsed panels merged into a single "Process" panel; footer now shows token usage and context % by default
23
- - **2026.3.27 v1** — Compatible with OpenClaw >= 2026.3.22; added AskUserQuestion interactive tool; panels appear in chronological order; fixed card table limit error 230099
23
+ - **2026.3.27**
24
+ - Compatible with OpenClaw >= 2026.3.22
25
+ - Added AskUserQuestion interactive tool
26
+ - Reasoning blocks and tool calls merged into a single expandable panel in chronological order
27
+ - Footer now shows token usage and context window percentage by default
28
+ - Fixed card table limit error 230099
24
29
  - **2026.3.23** — First release with real-time streaming output and tool call indicators (for OpenClaw < 2026.3.22, use the `0322` branch)
25
30
 
26
31
  ## 📦 Installation
package/README.md CHANGED
@@ -4,23 +4,28 @@
4
4
 
5
5
  ![demo](./demo.gif)
6
6
 
7
- 基于官方 [openclaw-lark](https://github.com/larksuite/openclaw-lark) 插件,支持**实时流式输出**、**推理过程展示**和**工具调用状态**。
7
+ 基于官方 [openclaw-lark](https://github.com/larksuite/openclaw-lark) 插件,支持**实时流式输出**和 **Agent 执行过程可视化**。
8
8
 
9
9
  ## ✨ 改动说明
10
10
 
11
11
  官方插件在 LLM 生成完一个 block 后才一次性推送结果。本版本实现了:
12
12
 
13
- - **实时流式输出** — 每个 block 的内容在生成过程中逐步追加到流式卡片
13
+ - **实时流式输出** — 每个 block 的内容在生成过程中逐步追加到飞书卡片
14
14
  - **群聊流式输出** — 群聊中也可使用流式输出
15
- - **推理过程展示**推理模型(DeepSeek-R1、Claude 3.7 等)的 think 内容实时流出
16
- - **工具调用状态**agent 调用工具时,卡片顶部实时显示当前工具名称
17
- - **思考过程面板**完成后,所有推理块和工具调用按发生顺序折叠进一个「思考过程」可展开面板
18
- - **Token 用量展示** 卡片底部默认显示 input/output token 数和 context 使用百分比
15
+ - **Agent 执行过程可视化** 完整还原 agent 的推理与执行流程
16
+ - **推理过程展示**推理模型(DeepSeek-R1、Claude 3.7 等)的 think 内容实时流出
17
+ - **工具调用状态**agent 调用工具时,卡片顶部实时显示当前工具名称
18
+ - **思考过程面板**完成后,所有推理块和工具调用按发生顺序折叠进一个可展开面板
19
+ - **Token 用量展示** — 卡片底部默认显示 input/output token 数和 context 使用百分比
19
20
 
20
21
  ## 📢 News
21
22
 
22
- - **2026.3.27 v2** — 折叠面板合并为单个「思考过程」;底栏默认显示 token 用量和 context 使用率
23
- - **2026.3.27 v1** — 适配 OpenClaw >= 2026.3.22;新增 AskUserQuestion 交互式提问工具;推理块与工具调用面板按发生顺序排列;修复卡片表格超限错误 230099
23
+ - **2026.3.27**
24
+ - 适配 OpenClaw >= 2026.3.22
25
+ - 新增 AskUserQuestion 交互式提问工具
26
+ - 推理块与工具调用按发生顺序合并为单个可展开面板
27
+ - 底栏默认显示 token 用量和 context 使用百分比
28
+ - 修复卡片表格超限错误 230099
24
29
  - **2026.3.23** — 发布第一版,支持实时流式输出和工具调用状态展示(适配 OpenClaw < 2026.3.22,请切换到 `0322` 分支)
25
30
 
26
31
  ## 📦 安装
package/dist/index.js CHANGED
@@ -114832,16 +114832,15 @@ function formatFooterRuntimeSegments(params) {
114832
114832
  }
114833
114833
  }
114834
114834
  if (footer?.context && metrics) {
114835
- const freshTotal = metrics.totalTokensFresh === false ? void 0 : metrics.totalTokens;
114836
- const total = typeof freshTotal === "number" ? Math.max(0, freshTotal) : void 0;
114835
+ const used = typeof metrics.inputTokens === "number" ? Math.max(0, metrics.inputTokens) : void 0;
114837
114836
  const ctx = typeof metrics.contextTokens === "number" ? Math.max(0, metrics.contextTokens) : void 0;
114838
- if (total != null && ctx != null) {
114839
- const totalLabel = compactNumber(total);
114840
- const ctxLabel = compactNumber(ctx);
114841
- const pct = ctx > 0 ? Math.round(total / ctx * 100) : 0;
114837
+ if (used != null && ctx != null) {
114838
+ const pct = ctx > 0 ? Math.round(used / ctx * 100) : 0;
114842
114839
  if (verbose) {
114843
- zhParts.push(`\u4E0A\u4E0B\u6587 ${totalLabel}/${ctxLabel} (${pct}%)`);
114844
- enParts.push(`Context ${totalLabel}/${ctxLabel} (${pct}%)`);
114840
+ const usedLabel = compactNumber(used);
114841
+ const ctxLabel = compactNumber(ctx);
114842
+ zhParts.push(`\u4E0A\u4E0B\u6587 ${usedLabel}/${ctxLabel} (${pct}%)`);
114843
+ enParts.push(`Context ${usedLabel}/${ctxLabel} (${pct}%)`);
114845
114844
  } else {
114846
114845
  zhParts.push(`${pct}% ctx`);
114847
114846
  enParts.push(`${pct}% ctx`);
@@ -115923,6 +115922,7 @@ var init_streaming_card_controller = __esm({
115923
115922
  if (!this.shouldProceed("onToolStart")) return;
115924
115923
  const toolName = payload.name ?? "unknown";
115925
115924
  log17.debug("onToolStart", { toolName, phase: payload.phase });
115925
+ if (payload.phase === "update") return;
115926
115926
  this.commitReasoningEvent();
115927
115927
  this.reasoning.isReasoningPhase = false;
115928
115928
  this.completeRunningTools();