提交内容:将 roundtable 的流式消息拆分为文本与 think 推理,支持思考内容以 <think> 形式内联渲染,解决仅返回 reasoning token 时的内容空洞问题。新增 stream-reasoning 工具与单元测试,保证 reasoning 首包到正文的闭合行为稳定。 交互与预览修正:write_file/str_replace 工具的沙箱打开策略改为更接近实时席位行为,不再因为文件后缀限制阻塞临时脚本写入可视化;通过新增 streaming-artifacts 工具统一处理可预览路径、最终交付产物过滤与目录快照比对,支持 bash/脚本直接落盘场景在流式阶段自动发现新增文档。 体验细节:步骤面板文件卡片从工具路径与最终 artifact 统一收敛,避免 read_file 点击误触发;自动滚动逻辑新增布局高度抖动识别,防止模型推理渲染导致的误判向上滚动。
22 lines
661 B
TypeScript
22 lines
661 B
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { createInlineReasoningDeltaFormatter } from "./stream-reasoning";
|
|
|
|
test("provider reasoning chunks form one live think block before answer content", () => {
|
|
const format = createInlineReasoningDeltaFormatter();
|
|
|
|
assert.equal(
|
|
format({ id: "msg-1", reasoning: "先检查约束", content: "" }),
|
|
"<think>先检查约束",
|
|
);
|
|
assert.equal(
|
|
format({ id: "msg-1", reasoning: ",再组织答案", content: "" }),
|
|
",再组织答案",
|
|
);
|
|
assert.equal(
|
|
format({ id: "msg-1", reasoning: "", content: "最终结论" }),
|
|
"</think>最终结论",
|
|
);
|
|
});
|