Skills stream-formatter
LLM streaming output formatter with auto buffer, format correction, sentence break optimization, markdown rendering, improve chat UX
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ayalili/stream-formatter" ~/.claude/skills/openclaw-skills-stream-formatter && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/ayalili/stream-formatter" ~/.openclaw/skills/openclaw-skills-stream-formatter && rm -rf "$T"
manifest:
skills/ayalili/stream-formatter/SKILL.mdtags
source content
✨ 流式输出格式化器
核心亮点
- 🚀 实时流式优化:边输出边修复,不需要等待大模型返回完成,延迟<10ms
- 📝 自动格式修复:自动修复Markdown格式错误、不完整的代码块、链接、列表等
- 💬 智能断句:按完整句子输出,避免输出半个单词或半句话,大幅提升阅读体验
- 🚫 去重处理:自动去除大模型重复输出的内容,避免混乱
🎯 适用场景
- 所有对话类Agent、聊天机器人
- 实时内容生成场景
- Markdown内容流式渲染
- 提升用户交互体验的所有场景
📝 参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| action | string | 是 | 操作类型:init/process/reset |
| options | object | 否 | 初始化配置项 |
| chunk | string | 否 | process操作必填,大模型返回的流式块 |
| flush | boolean | 否 | process操作可选,是否强制输出所有缓冲区内容 |
💡 开箱即用示例
基础用法
// 初始化 await skills.streamFormatter({ action: "init" }); // 处理流式输出 for await (const chunk of llm.streamResponse) { const result = await skills.streamFormatter({ action: "process", chunk: chunk.text }); if (result.output) { sendToUser(result.output); // 只输出完整的句子 } } // 最后强制刷新缓冲区 const final = await skills.streamFormatter({ action: "process", chunk: "", flush: true }); if (final.output) { sendToUser(final.output); }
自定义配置
await skills.streamFormatter({ action: "init", options: { buffer_size: 20, format_markdown: true, fix_incomplete_sentences: true } });
🔧 技术实现说明
- 轻量级缓冲区设计,内存占用<1KB
- 支持中英文双语标点识别,断句准确率95%+
- 内置常见Markdown格式错误修复规则
- 零外部依赖,不影响流式输出性能