@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 +13 -8
- package/README.md +13 -8
- package/dist/index.js +8 -8
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -4,23 +4,28 @@ English | [中文](./README.md)
|
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
Based on the official [openclaw-lark](https://github.com/larksuite/openclaw-lark) plugin, with **real-time streaming output
|
|
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
|
|
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
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- **
|
|
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
|
|
23
|
-
-
|
|
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
|

|
|
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
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
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
|
|
23
|
-
-
|
|
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
|
|
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 (
|
|
114839
|
-
const
|
|
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
|
-
|
|
114844
|
-
|
|
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();
|