@ai-zen/cli 1.0.0-alpha.3 → 1.0.0-alpha.4

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +1 -1
  3. package/README.zh.md +1 -1
  4. package/dist/index.js +5 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/tui/chat-session.d.ts +26 -45
  7. package/dist/tui/chat-session.d.ts.map +1 -1
  8. package/dist/tui/chat-session.js +51 -64
  9. package/dist/tui/chat-session.js.map +1 -1
  10. package/dist/tui/index.d.ts +1 -0
  11. package/dist/tui/index.d.ts.map +1 -1
  12. package/dist/tui/index.js +4 -4
  13. package/dist/tui/index.js.map +1 -1
  14. package/dist/tui/screens/chat-commands.d.ts +4 -2
  15. package/dist/tui/screens/chat-commands.d.ts.map +1 -1
  16. package/dist/tui/screens/chat-commands.js +5 -8
  17. package/dist/tui/screens/chat-commands.js.map +1 -1
  18. package/dist/tui/screens/chat.d.ts +0 -4
  19. package/dist/tui/screens/chat.d.ts.map +1 -1
  20. package/dist/tui/screens/chat.js +81 -61
  21. package/dist/tui/screens/chat.js.map +1 -1
  22. package/dist/tui/screens/frame-buffer.d.ts +47 -0
  23. package/dist/tui/screens/frame-buffer.d.ts.map +1 -0
  24. package/dist/tui/screens/frame-buffer.js +78 -0
  25. package/dist/tui/screens/frame-buffer.js.map +1 -0
  26. package/dist/tui/screens/index.d.ts +6 -6
  27. package/dist/tui/screens/index.d.ts.map +1 -1
  28. package/dist/tui/screens/index.js +5 -5
  29. package/dist/tui/screens/index.js.map +1 -1
  30. package/dist/tui/screens/layout.d.ts +5 -3
  31. package/dist/tui/screens/layout.d.ts.map +1 -1
  32. package/dist/tui/screens/layout.js +3 -8
  33. package/dist/tui/screens/layout.js.map +1 -1
  34. package/dist/tui/screens/lines.d.ts +2 -39
  35. package/dist/tui/screens/lines.d.ts.map +1 -1
  36. package/dist/tui/screens/lines.js +2 -65
  37. package/dist/tui/screens/lines.js.map +1 -1
  38. package/dist/tui/screens/messages-view.d.ts +10 -0
  39. package/dist/tui/screens/messages-view.d.ts.map +1 -0
  40. package/dist/tui/screens/messages-view.js +115 -0
  41. package/dist/tui/screens/messages-view.js.map +1 -0
  42. package/dist/tui/screens/notice.d.ts +32 -0
  43. package/dist/tui/screens/notice.d.ts.map +1 -0
  44. package/dist/tui/screens/notice.js +46 -0
  45. package/dist/tui/screens/notice.js.map +1 -0
  46. package/dist/tui/screens/render.d.ts +2 -4
  47. package/dist/tui/screens/render.d.ts.map +1 -1
  48. package/dist/tui/screens/render.js +2 -40
  49. package/dist/tui/screens/render.js.map +1 -1
  50. package/dist/tui/text.d.ts +5 -0
  51. package/dist/tui/text.d.ts.map +1 -1
  52. package/dist/tui/text.js +7 -0
  53. package/dist/tui/text.js.map +1 -1
  54. package/package.json +1 -1
  55. package/dist/tui/screens/state.d.ts +0 -30
  56. package/dist/tui/screens/state.d.ts.map +0 -1
  57. package/dist/tui/screens/state.js +0 -100
  58. package/dist/tui/screens/state.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## [1.0.0-alpha.4] - 2026-10-13
2
+
3
+ ### ♻️ 重构
4
+
5
+ - **TUI 渲染直接以 `agent.messages` 为唯一数据源** —— 移除 `ChatEvent` / `chatReducer` / `LiveAssistant` / `Block` / `messagesToBlocks` 等自定义中间模型。SDK 在流式期间会**实时更新 `agent.messages`**(`Agent.parseStreamData` 把每个 delta 增量写进当前那条 message),因此跨消息顺序(数组序)与单条 assistant 内部顺序(`思考 → 工具 → 正文`)天然保持,直接渲染即可,杜绝「第二套真相」的失真与维护负担。已完成消息的折行 / 高亮按「消息 + 列宽 + 内容签名」缓存(`cachedMessageToLines`),流式中那条靠内容签名自动失效。
6
+ - **notice / error 改为独立栏位** —— 系统级提示(命令反馈 / 迁移进度 / 报错)不再混入对话转录,也**绝不写进 `agent.messages`**(那会被 `formatHistory()` 原样发给模型、污染上下文);改在输入框上方的独立一行渲染(`src/tui/screens/notice.ts`)。
7
+
8
+ ### 🎯 优化
9
+
10
+ - **流式增量渲染**:Ink 开启 `incrementalRendering` —— 从「每帧 erase 整屏 + 重写整屏」(`createStandard`)切到「只重绘变化的行」(`createIncremental`),每帧输出量由 O(屏幕大小) 降到 O(变化量),SSH / 弱网下流式更稳。
11
+ - **流式合帧**(`src/tui/screens/frame-buffer.ts`):内容变更先攒入缓冲,按 60ms(约 16fps,低于 Ink 默认 30fps 输出节流)批量触发重渲染,把上屏频率从「每个 delta 一次」降到固定帧率。
12
+ - **渲染缓存**:长对话下历史消息的折行 / 高亮免于每帧重算,成本不再随对话增长而恶化。
13
+ - **思考与工具调用之间补一个空行**,排版更清晰。
14
+
15
+ ### ✅ 测试
16
+
17
+ - 新增 `frame-buffer.test.ts`、`notice.test.ts`;`screens.test.tsx` 重写为基于 `messageToLines` / `transcriptLines` / `computeChatLayout(transcript)`。
18
+ - `tsc` 零错误;全量单测 **16 文件 / 225 用例**通过;`npm run build` 通过。
19
+ - 真机(pty)验证:SSH / 弱网下流式稳定,长对话滚动流畅。
20
+
1
21
  ## [1.0.0-alpha.3] - 2026-10-13
2
22
 
3
23
  ### 💥 破坏性变更
package/README.md CHANGED
@@ -66,7 +66,7 @@ When run with no arguments on an interactive terminal, the CLI opens a full-scre
66
66
  ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═══╝
67
67
 
68
68
  AI workbench in your terminal
69
- v1.0.0-alpha.3 · sdk x · core y
69
+ v1.0.0-alpha.4 · sdk x · core y
70
70
  ```
71
71
 
72
72
  After the splash, you land **directly in the chat screen** (resuming the last session if there is one, otherwise starting a new conversation). The chat screen is **bottom-pinned**: a divider, the input line, and the status bar (model · agent · token usage · generating) always sit at the bottom of the terminal, while the conversation scrolls above them. While generating, the spinner replaces the input line.
package/README.zh.md CHANGED
@@ -66,7 +66,7 @@ ai --version
66
66
  ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═══╝
67
67
 
68
68
  终端里的 AI 协作台
69
- v1.0.0-alpha.3 · sdk x · core y
69
+ v1.0.0-alpha.4 · sdk x · core y
70
70
  ```
71
71
 
72
72
  启动界面结束后**直接进入对话界面**(若存在「上一轮会话」则自动续接,否则新建对话)。对话界面采用**底部固定**布局:分隔线、输入行与状态栏(模型 · Agent · token 用量 · 生成状态)始终贴在终端底部,对话内容在其上方滚动;生成中时输入行位置显示进度指示。
package/dist/index.js CHANGED
@@ -62,10 +62,13 @@ async function main() {
62
62
  save: invocation.save,
63
63
  });
64
64
  return;
65
- case "tui":
66
- // 无参数且均为 TTY:进入全屏交互界面(Ink)
65
+ case "tui": {
66
+ // 无参数且均为 TTY:进入全屏交互界面(Ink)。
67
+ // 流式统一走 Ink —— 由 `RENDER_OPTIONS.incrementalRendering`(只重绘变化的行)
68
+ // 压低输出量,SSH / 弱网下实测稳定。
67
69
  await runTui();
68
70
  return;
71
+ }
69
72
  }
70
73
  }
71
74
  main().catch((error) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;;;;;GAWG;AAEH,MAAM,SAAS,GAAG,oBAAoB,WAAW;;;;;;;;;;;;;;;;CAgBhD,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG;QACV,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACxC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;KAC3C,CAAC;IACF,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjE,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO;QAET,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;YACzC,OAAO;QAET,KAAK,MAAM;YACT,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,WAAW,EAAE,CAAC;iBACpD,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW;gBAAE,MAAM,aAAa,EAAE,CAAC;iBAC7D,CAAC;gBACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,OAAO;QAET,KAAK,OAAO;YACV,OAAO,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC;gBAChC,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;YACH,OAAO;QAET,KAAK,KAAK;YACR,2BAA2B;YAC3B,MAAM,MAAM,EAAE,CAAC;YACf,OAAO;IACX,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;;;;;GAWG;AAEH,MAAM,SAAS,GAAG,oBAAoB,WAAW;;;;;;;;;;;;;;;;CAgBhD,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG;QACV,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACxC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;KAC3C,CAAC;IACF,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjE,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO;QAET,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;YACzC,OAAO;QAET,KAAK,MAAM;YACT,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,WAAW,EAAE,CAAC;iBACpD,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW;gBAAE,MAAM,aAAa,EAAE,CAAC;iBAC7D,CAAC;gBACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,OAAO;QAET,KAAK,OAAO;YACV,OAAO,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC;gBAChC,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;YACH,OAAO;QAET,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,4BAA4B;YAC5B,gEAAgE;YAChE,uBAAuB;YACvB,MAAM,MAAM,EAAE,CAAC;YACf,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -1,46 +1,22 @@
1
1
  /**
2
- * TUI 对话会话 —— Agent 装配与结构化流式事件
2
+ * TUI 对话会话 —— Agent 装配 + 「内容变更」信号
3
3
  *
4
- * 与旧的行式渲染器(`src/conversation-runner.ts`)不同,这里把流式 delta
5
- * 翻译成**结构化事件**交给 React 层渲染,而非直接写 stdout,从而支持 Ink 的
6
- * 可控重绘(增量、无撕裂)。
4
+ * 渲染以 SDK 的 `agent.messages` 为**唯一数据源**:本模块不再把流式 delta 翻译成
5
+ * 自定义事件 / 中间模型(Block / LiveAssistant),只做两件事:
6
+ * 1. SDK 事件到达时通知上层「messages 变了,该重渲染了」;
7
+ * 2. 把系统级提示(notice / error)转发到独立通道(绝不写进 messages)。
7
8
  *
8
9
  * 本模块不依赖 React / Ink,可独立单测。
9
10
  */
10
11
  import { AgentNS } from "@ai-zen/agents-core";
11
- /** 流式事件:由 React 层消费并拼接成消息块 */
12
- export type ChatEvent = {
13
- type: "user";
14
- text: string;
15
- } | {
16
- type: "assistant-start";
17
- } | {
18
- type: "reasoning";
19
- text: string;
20
- } | {
21
- type: "content";
22
- text: string;
23
- } | {
24
- type: "tool";
25
- index: number;
26
- name?: string;
27
- args?: string;
28
- } | {
29
- type: "subagent-start";
30
- name: string;
31
- } | {
32
- type: "subagent-end";
33
- name: string;
34
- } | {
35
- type: "notice";
36
- text: string;
37
- } | {
38
- type: "error";
39
- text: string;
40
- } | {
41
- type: "done";
42
- };
43
- export type ChatEventHandler = (e: ChatEvent) => void;
12
+ import { stripCwdNote } from "./text.js";
13
+ /** 会话 → UI 的对外信号 */
14
+ export interface ChatSessionNotifier {
15
+ /** 转录可能已变化(内容以 `agent.messages` 为准);`immediate=true` 表示应立即上屏 */
16
+ onChange(immediate: boolean): void;
17
+ /** 系统级提示(notice / error),走独立栏位,绝不进 messages */
18
+ onNotice(text: string, tone: "info" | "error"): void;
19
+ }
44
20
  export interface ChatSessionOptions {
45
21
  modelId: string;
46
22
  agentId?: string;
@@ -50,8 +26,8 @@ export interface ChatSessionOptions {
50
26
  /** 自动迁移二次确认(由 Ink 层弹出确认框实现) */
51
27
  requestConfirm?: (question: string) => Promise<boolean>;
52
28
  }
53
- /** 去掉 CwdTrackerPlugin 追加在用户消息末尾的工作目录提示 */
54
- export declare function stripCwdNote(text: string): string;
29
+ /** 去掉 CwdTrackerPlugin 追加在用户消息末尾的工作目录提示(转发自 ./text.js) */
30
+ export { stripCwdNote };
55
31
  export declare class ChatSession {
56
32
  readonly modelId: string;
57
33
  readonly agentId: string;
@@ -61,16 +37,17 @@ export declare class ChatSession {
61
37
  private agent;
62
38
  private readonly ctx;
63
39
  private readonly migrationService;
64
- private readonly onEvent;
40
+ private readonly notifier;
65
41
  private readonly requestConfirm?;
66
42
  private readonly disposers;
67
43
  private constructor();
68
- /** 创建会话:装配 Agent、插件与流式事件 */
69
- static create(options: ChatSessionOptions, onEvent: ChatEventHandler): Promise<ChatSession>;
44
+ /** 创建会话:装配 Agent、插件与「变更信号」 */
45
+ static create(options: ChatSessionOptions, notifier: ChatSessionNotifier): Promise<ChatSession>;
46
+ /** 对话消息(唯一真相源) */
70
47
  get messages(): AgentNS.Message[];
71
48
  /** 最近一次响应的 token 用量 */
72
49
  get lastUsage(): AgentNS.Usage | undefined;
73
- /** 发送一条消息;事件通过 `onEvent` 持续回传;resolve 表示本轮结束 */
50
+ /** 发送一条消息;内容变化经 `notifier.onChange` 通知,`resolve` 表示本轮结束 */
74
51
  send(input: string): Promise<void>;
75
52
  /** 中止当前请求(Ctrl+C 语义:仅取消本轮,不退出) */
76
53
  abort(): void;
@@ -99,8 +76,12 @@ export declare class ChatSession {
99
76
  /** 释放事件监听(重建 Agent 时调用,避免监听器泄漏) */
100
77
  dispose(): void;
101
78
  private attach;
79
+ /**
80
+ * 订阅 SDK 事件,仅把它们当作「messages 可能已变化」的信号:
81
+ * - `chunk-parsed`(每片 delta 应用后):高频 → 走合帧(`immediate=false`);
82
+ * - `open` / `parsed` / `finally`:轮次边界 → 立即上屏;
83
+ * - `error`:转发到通知通道。
84
+ */
102
85
  private wire;
103
- /** 把流式 delta 翻译为结构化事件 */
104
- private emitDelta;
105
86
  }
106
87
  //# sourceMappingURL=chat-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/tui/chat-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/tui/chat-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAkB9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,oBAAoB;AACpB,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACzD;AAED,0DAA0D;AAC1D,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,qBAAa,WAAW;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,OAAO;IAkBP,8BAA8B;WACjB,MAAM,CACjB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC;IA8BvB,kBAAkB;IAClB,IAAI,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAEhC;IAED,uBAAuB;IACvB,IAAI,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAEzC;IAED,2DAA2D;IACrD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAIb;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoBrC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,qCAAqC;IAC/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,gDAAgD;IAChD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQjC,gBAAgB;IACV,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB7B,mCAAmC;IACnC,OAAO,IAAI,IAAI;YAMD,MAAM;IAmCpB;;;;;OAKG;IACH,OAAO,CAAC,IAAI;CA4Cb"}
@@ -1,9 +1,10 @@
1
1
  /**
2
- * TUI 对话会话 —— Agent 装配与结构化流式事件
2
+ * TUI 对话会话 —— Agent 装配 + 「内容变更」信号
3
3
  *
4
- * 与旧的行式渲染器(`src/conversation-runner.ts`)不同,这里把流式 delta
5
- * 翻译成**结构化事件**交给 React 层渲染,而非直接写 stdout,从而支持 Ink 的
6
- * 可控重绘(增量、无撕裂)。
4
+ * 渲染以 SDK 的 `agent.messages` 为**唯一数据源**:本模块不再把流式 delta 翻译成
5
+ * 自定义事件 / 中间模型(Block / LiveAssistant),只做两件事:
6
+ * 1. SDK 事件到达时通知上层「messages 变了,该重渲染了」;
7
+ * 2. 把系统级提示(notice / error)转发到独立通道(绝不写进 messages)。
7
8
  *
8
9
  * 本模块不依赖 React / Ink,可独立单测。
9
10
  */
@@ -18,10 +19,9 @@ import { AutoMigrateConfirmPlugin } from "../auto-migrate-confirm-plugin.js";
18
19
  import { createMigrationService } from "../migration-service.js";
19
20
  import { conversationRepository, generateConversationId } from "../conversation-repository.js";
20
21
  import { writeLastSession } from "../session-pointer.js";
21
- /** 去掉 CwdTrackerPlugin 追加在用户消息末尾的工作目录提示 */
22
- export function stripCwdNote(text) {
23
- return text.replace(/\n+(?:\[工作目录变更\]\n)?当前工作目录: [^\n]*$/, "");
24
- }
22
+ import { stripCwdNote } from "./text.js";
23
+ /** 去掉 CwdTrackerPlugin 追加在用户消息末尾的工作目录提示(转发自 ./text.js) */
24
+ export { stripCwdNote };
25
25
  export class ChatSession {
26
26
  modelId;
27
27
  agentId;
@@ -31,10 +31,10 @@ export class ChatSession {
31
31
  agent;
32
32
  ctx;
33
33
  migrationService;
34
- onEvent;
34
+ notifier;
35
35
  requestConfirm;
36
36
  disposers = [];
37
- constructor(migrationService, ctx, options, maxTokens, onEvent) {
37
+ constructor(migrationService, ctx, options, maxTokens, notifier) {
38
38
  this.migrationService = migrationService;
39
39
  this.ctx = ctx;
40
40
  this.modelId = options.modelId;
@@ -42,11 +42,11 @@ export class ChatSession {
42
42
  this.maxTokens = maxTokens;
43
43
  this.currentId = ctx.currentId || generateConversationId();
44
44
  this.currentName = ctx.currentName;
45
- this.onEvent = onEvent;
45
+ this.notifier = notifier;
46
46
  this.requestConfirm = options.requestConfirm;
47
47
  }
48
- /** 创建会话:装配 Agent、插件与流式事件 */
49
- static async create(options, onEvent) {
48
+ /** 创建会话:装配 Agent、插件与「变更信号」 */
49
+ static async create(options, notifier) {
50
50
  const config = await readConfig();
51
51
  const model = config.models.find((m) => m.id === options.modelId);
52
52
  const maxTokens = model?.maxContextTokens ??
@@ -63,15 +63,16 @@ export class ChatSession {
63
63
  running: true,
64
64
  };
65
65
  const migrationService = createMigrationService(ctx, {
66
- // 迁移进度/结果经 Ink 渲染为 notice 块,避免直接写 stdout 撕裂画面
67
- log: (text) => onEvent({ type: "notice", text }),
66
+ // 迁移进度/结果经通知通道渲染,避免直接写 stdout 撕裂画面
67
+ log: (text) => notifier.onNotice(text, "info"),
68
68
  });
69
69
  ctx.migrationService = migrationService;
70
- const session = new ChatSession(migrationService, ctx, options, maxTokens, onEvent);
70
+ const session = new ChatSession(migrationService, ctx, options, maxTokens, notifier);
71
71
  session.agent = agent;
72
72
  await session.attach(agent);
73
73
  return session;
74
74
  }
75
+ /** 对话消息(唯一真相源) */
75
76
  get messages() {
76
77
  return this.agent.messages;
77
78
  }
@@ -79,17 +80,16 @@ export class ChatSession {
79
80
  get lastUsage() {
80
81
  return this.agent.lastUsage;
81
82
  }
82
- /** 发送一条消息;事件通过 `onEvent` 持续回传;resolve 表示本轮结束 */
83
+ /** 发送一条消息;内容变化经 `notifier.onChange` 通知,`resolve` 表示本轮结束 */
83
84
  async send(input) {
84
- this.onEvent({ type: "user", text: input });
85
85
  try {
86
86
  await this.agent.send(input);
87
87
  }
88
88
  catch (error) {
89
- this.onEvent({ type: "error", text: error?.message ?? String(error) });
89
+ this.notifier.onNotice(error?.message ?? String(error), "error");
90
90
  }
91
91
  finally {
92
- this.onEvent({ type: "done" });
92
+ this.notifier.onChange(true);
93
93
  }
94
94
  }
95
95
  /** 中止当前请求(Ctrl+C 语义:仅取消本轮,不退出) */
@@ -117,6 +117,7 @@ export class ChatSession {
117
117
  this.currentName = this.currentId;
118
118
  this.ctx.currentName = this.currentName;
119
119
  await this.attach(agent);
120
+ this.notifier.onChange(true);
120
121
  return archivedId;
121
122
  }
122
123
  /**
@@ -137,6 +138,7 @@ export class ChatSession {
137
138
  this.agent = agent;
138
139
  this.ctx.agent = agent;
139
140
  await this.attach(agent);
141
+ this.notifier.onChange(true);
140
142
  }
141
143
  /** 手动任务迁移(/migrate):与自动迁移共用同一服务实例 */
142
144
  async migrate() {
@@ -147,6 +149,7 @@ export class ChatSession {
147
149
  // 迁移后服务会开启新会话,同步会话元信息
148
150
  this.currentName = this.ctx.currentName;
149
151
  this.currentId = this.ctx.currentId ?? generateConversationId();
152
+ this.notifier.onChange(true);
150
153
  }
151
154
  /** 撤回:删除索引 index 起的消息,返回被撤回的首条用户消息文本(用于预填输入) */
152
155
  rollbackTo(index) {
@@ -189,7 +192,7 @@ export class ChatSession {
189
192
  agentId: this.agentId,
190
193
  modelId: this.modelId,
191
194
  cwd: process.cwd(),
192
- onError: (text) => this.onEvent({ type: "notice", text }),
195
+ onError: (text) => this.notifier.onNotice(text, "info"),
193
196
  }));
194
197
  if (this.maxTokens && this.maxTokens > 0) {
195
198
  agent.use(new ContextGuardPlugin({ maxTokens: this.maxTokens }));
@@ -199,74 +202,58 @@ export class ChatSession {
199
202
  // TUI 下由 Ink 层提供确认通道
200
203
  shouldConfirm: () => Boolean(this.requestConfirm),
201
204
  confirm: (info) => this.requestConfirm(`上下文即将超限(${info.promptTokens}/${info.maxTokens} tokens),是否立即执行任务迁移?`),
202
- log: (text) => this.onEvent({ type: "notice", text }),
205
+ log: (text) => this.notifier.onNotice(text, "info"),
203
206
  }));
204
207
  agent.use(new SubAgentGuardInstallerPlugin({ maxTokens: this.maxTokens }));
205
208
  }
206
209
  this.wire(agent);
207
210
  await agent.init();
208
211
  }
212
+ /**
213
+ * 订阅 SDK 事件,仅把它们当作「messages 可能已变化」的信号:
214
+ * - `chunk-parsed`(每片 delta 应用后):高频 → 走合帧(`immediate=false`);
215
+ * - `open` / `parsed` / `finally`:轮次边界 → 立即上屏;
216
+ * - `error`:转发到通知通道。
217
+ */
209
218
  wire(agent) {
210
- const onOpen = () => this.onEvent({ type: "assistant-start" });
211
- const onChunk = (chunk) => this.emitDelta(chunk);
212
- const onError = (error) => this.onEvent({ type: "error", text: error?.message ?? String(error) });
219
+ const notify = (immediate) => this.notifier.onChange(immediate);
220
+ const onOpen = () => notify(true);
221
+ const onChunk = () => notify(false);
222
+ const onParsed = () => notify(true);
223
+ const onFinally = () => notify(true);
224
+ const onError = (error) => {
225
+ this.notifier.onNotice(error?.message ?? String(error), "error");
226
+ notify(true);
227
+ };
213
228
  const onSubStart = ({ subAgent, toolCallContext }) => {
214
229
  const name = toolCallContext?.tool_call?.function?.name || "子任务";
215
- this.onEvent({ type: "subagent-start", name });
230
+ this.notifier.onNotice(`🧩 子任务 ${name} 运行中…`, "info");
216
231
  subAgent.events.on("open", onOpen);
217
- subAgent.events.on("chunk", onChunk);
232
+ subAgent.events.on("chunk-parsed", onChunk);
218
233
  subAgent.events.on("error", onError);
234
+ notify(true);
219
235
  };
220
236
  const onSubEnd = ({ toolCallContext }) => {
221
237
  const name = toolCallContext?.tool_call?.function?.name || "子任务";
222
- this.onEvent({ type: "subagent-end", name });
238
+ this.notifier.onNotice(`✓ 子任务 ${name} 完成`, "info");
239
+ notify(true);
223
240
  };
224
241
  agent.events.on("open", onOpen);
225
- agent.events.on("chunk", onChunk);
242
+ agent.events.on("chunk-parsed", onChunk);
243
+ agent.events.on("parsed", onParsed);
244
+ agent.events.on("finally", onFinally);
226
245
  agent.events.on("error", onError);
227
246
  agent.events.on("sub-agent-start", onSubStart);
228
247
  agent.events.on("sub-agent-end", onSubEnd);
229
248
  this.disposers.push(() => {
230
249
  agent.events.off("open", onOpen);
231
- agent.events.off("chunk", onChunk);
250
+ agent.events.off("chunk-parsed", onChunk);
251
+ agent.events.off("parsed", onParsed);
252
+ agent.events.off("finally", onFinally);
232
253
  agent.events.off("error", onError);
233
254
  agent.events.off("sub-agent-start", onSubStart);
234
255
  agent.events.off("sub-agent-end", onSubEnd);
235
256
  });
236
257
  }
237
- /** 把流式 delta 翻译为结构化事件 */
238
- emitDelta(chunk) {
239
- const delta = chunk?.choices?.[0]?.delta;
240
- if (!delta)
241
- return;
242
- if (delta.reasoning_content) {
243
- this.onEvent({ type: "reasoning", text: delta.reasoning_content });
244
- }
245
- if (delta.content) {
246
- if (typeof delta.content === "string") {
247
- this.onEvent({ type: "content", text: delta.content });
248
- }
249
- else if (Array.isArray(delta.content)) {
250
- for (const part of delta.content) {
251
- if (part.type === "text" && part.text) {
252
- this.onEvent({ type: "content", text: part.text });
253
- }
254
- else if (part.type === "image_url") {
255
- this.onEvent({ type: "notice", text: `[图片: ${part.image_url.url}]` });
256
- }
257
- }
258
- }
259
- }
260
- if (delta.tool_calls) {
261
- for (const tc of delta.tool_calls) {
262
- this.onEvent({
263
- type: "tool",
264
- index: tc.index ?? 0,
265
- name: tc.function?.name,
266
- args: tc.function?.arguments,
267
- });
268
- }
269
- }
270
- }
271
258
  }
272
259
  //# sourceMappingURL=chat-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session.js","sourceRoot":"","sources":["../../src/tui/chat-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-session.js","sourceRoot":"","sources":["../../src/tui/chat-session.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@
25
25
  export declare const RENDER_OPTIONS: {
26
26
  readonly exitOnCtrlC: false;
27
27
  readonly alternateScreen: false;
28
+ readonly incrementalRendering: true;
28
29
  readonly kittyKeyboard: {
29
30
  readonly mode: "disabled";
30
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0CH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc;;;;;;CAIjB,CAAC;AAuLX,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0CH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAkLX,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C5C"}
package/dist/tui/index.js CHANGED
@@ -62,6 +62,9 @@ let activeInstance = null;
62
62
  export const RENDER_OPTIONS = {
63
63
  exitOnCtrlC: false,
64
64
  alternateScreen: false,
65
+ // 只重绘「变化的行」,而不是每帧擦除 + 重写整屏(Ink 默认 false,走 createStandard)。
66
+ // 流式高频下把每帧输出量从 O(屏幕大小) 降到 O(变化量),显著减轻 SSH 带宽 / 背压压力。
67
+ incrementalRendering: true,
65
68
  kittyKeyboard: { mode: "disabled" },
66
69
  };
67
70
  function mount(node) {
@@ -153,9 +156,8 @@ async function runChat(target) {
153
156
  let current = target;
154
157
  let messages = target.messages;
155
158
  let initialInput;
156
- let clearTranscript = false;
157
159
  while (true) {
158
- const result = await mount(_jsx(Chat, { modelId: current.modelId, agentId: current.agentId, messages: messages, conversationId: current.conversationId, conversationName: current.conversationName, initialInput: initialInput, clearTranscript: clearTranscript }));
160
+ const result = await mount(_jsx(Chat, { modelId: current.modelId, agentId: current.agentId, messages: messages, conversationId: current.conversationId, conversationName: current.conversationName, initialInput: initialInput }));
159
161
  if (result && typeof result === "object") {
160
162
  const value = result;
161
163
  if (value.load) {
@@ -168,13 +170,11 @@ async function runChat(target) {
168
170
  };
169
171
  messages = value.load.messages;
170
172
  initialInput = undefined;
171
- clearTranscript = false;
172
173
  continue;
173
174
  }
174
175
  if (value.restart) {
175
176
  messages = value.messages ?? messages;
176
177
  initialInput = value.initialInput;
177
- clearTranscript = Boolean(value.clearTranscript);
178
178
  continue;
179
179
  }
180
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.tsx"],"names":[],"mappings":"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"}
@@ -2,10 +2,12 @@ import { Dispatch, SetStateAction } from "react";
2
2
  import { SelectItem } from "../components.js";
3
3
  import { ChatSession } from "../chat-session.js";
4
4
  import { WizardStep } from "../config-wizard/index.js";
5
- import { ChatAction } from "./state.js";
6
5
  export interface ChatCommandHost {
7
6
  session: ChatSession;
8
- dispatch: Dispatch<ChatAction>;
7
+ /** 通知通道:命令反馈(保存 / 清除 / 迁移结果 …)走独立栏位,不进 messages */
8
+ notice: (text: string, tone?: "info" | "error") => void;
9
+ /** 清屏(保留上下文):把转录显示起点推到最新 */
10
+ clearTranscript: () => void;
9
11
  rows: number;
10
12
  exit: (arg?: any) => void;
11
13
  suspendTerminal: (fn: () => void | Promise<void>) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-commands.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/chat-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAMjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAI/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,EAAE,QAAQ,CACtB,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAC/G,CAAC;IACF,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1G,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiLhG"}
1
+ {"version":3,"file":"chat-commands.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/chat-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAMjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAI/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,mDAAmD;IACnD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IACxD,4BAA4B;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,EAAE,QAAQ,CACtB,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAC/G,CAAC;IACF,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1G,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiLhG"}
@@ -9,12 +9,9 @@ import { conversationRepository, listConversations } from "../../conversation-re
9
9
  import { formatShortTime } from "../../format-time.js";
10
10
  import { truncate } from "./render.js";
11
11
  export async function runCommand(name, raw, host) {
12
- const { session, dispatch, rows, exit, suspendTerminal, openWizard, openKeyEditor, doExit, setPickerState, setConfirmState, setInputText, } = host;
12
+ const { session, notice, clearTranscript, rows, exit, suspendTerminal, openWizard, openKeyEditor, doExit, setPickerState, setConfirmState, setInputText, } = host;
13
13
  const push = (text, tone = "info") => {
14
- if (tone === "error")
15
- dispatch({ type: "error", text });
16
- else
17
- dispatch({ type: "notice", text });
14
+ notice(text, tone);
18
15
  };
19
16
  switch (name) {
20
17
  case "config":
@@ -32,13 +29,13 @@ export async function runCommand(name, raw, host) {
32
29
  break;
33
30
  }
34
31
  case "clear":
35
- // 清屏但保留上下文:重挂载对话屏且不重建历史
36
- exit({ restart: true, messages: session.messages, clearTranscript: true });
32
+ // 清屏但保留上下文:仅把转录显示起点推到最新
33
+ clearTranscript();
37
34
  break;
38
35
  case "new": {
39
36
  // reset 会先归档当前对话(有内容才存),返回存档 id(无内容为 null)
40
37
  const archivedId = await session.reset();
41
- dispatch({ type: "clear" });
38
+ clearTranscript();
42
39
  push(archivedId ? `旧对话已存档:${archivedId}\n已开始新对话` : "已开始新对话");
43
40
  break;
44
41
  }