OpenMuse 聊天交互深度体验:发送即停止、消息队列与草稿保留的设计细节
OpenMuse 聊天交互深度体验发送即停止、消息队列与草稿保留的设计细节【免费下载链接】openmuseA personal agent with a browser, terminal, files, and work that keeps going built with CopilotKit and AG-UI.项目地址: https://gitcode.com/gh_mirrors/op/openmuseOpenMuse 是一个自带浏览器、终端和文件的个人智能体应用基于 CopilotKit 与 AG-UI 构建支持 iOS、Android 和 Web。这篇文章聚焦它聊天界面里三个不起眼却极影响体验的设计发送与停止共用同一个按钮、追问消息进入可见队列、点停止后草稿原样保留。为什么聊天输入框值得细看很多 AI 聊天应用只回答怎么发消息很少处理消息发出去之后怎么办。OpenMuse 在这几件事上给出了相当克制、可预期的答案适合任何做聊天交互的开发者参考场景OpenMuse 的做法智能体正在回复我想打断发送箭头原地变成停止方块一点即停智能体正在回复我有追问追问进入可见队列回复结束后按顺序自动发送我点了停止正在输入的草稿一字不丢某条回复中途失败队列暂停绝不悄悄重发由你决定重试完整交互设计说明见 docs/EXPERIENCE.md。发送按钮变停止按钮同一个位置两种状态聊天输入区是一个圆角输入胶囊左侧是附件按钮中间是多行输入框右侧是主操作按钮。按钮位置在整个回复过程中始终不动——智能体空闲时它是向上的发送箭头一旦开始回复箭头在同一位置变成实心停止方块结束后再切回箭头。这种设计的好处是你的大拇指不需要换位置打断回复的心智成本极低。按钮的可访问性标签也会从Send message同步变为Stop reply对屏幕阅读器同样友好。相关实现在 chat.tsxreplying状态为真时渲染Square停止否则渲染ArrowUp发送。Web 端还有个小细节——Enter直接发送ShiftEnter换行chat.tsx#L755-L767。消息队列回复还没说完追问已经排好队OpenMuse 遵循一次只跑一个对话回合的原则但输入框在你等待回复时从不锁定。这时你点发送消息不会被丢弃也不会触发并发请求而是进入一个可见的消息队列outbox输入框上方会出现Up next列表逐条展示排队中的追问每条右侧有X可随时移除当前回复结束后队列按顺序自动逐条发送发完一条再发下一条队列保存在打开中的应用里而非服务端收件箱所以提示语会提醒你发完前请保持应用开着。队列核心是一个不到 50 行的小类ConversationQueue源码在 conversation-queue.ts配合 conversation-run.ts 完成单回合执行。它的行为被三条测试严格约束conversation-queue.test.ts回复过程中排入的消息只发一次、按顺序发点停止会暂停队列而不是取消消息之后可恢复回复失败时队列进入暂停态——失败的那条消息已经进入对话记录绝不自动重发避免同一请求被悄悄执行两遍。草稿保留点停止不会丢字stop()的动作只有两步暂停队列、调用停止智能体chat.tsx#L308-L315——它从不触碰输入框里的草稿。也就是说你正在回复途中输入的新内容点停止后原封不动留在输入框停止只是中断本次回复不会取消已委派的服务端任务——后台的持久任务继续走自己的流程之后直接点发送新消息立即继续如果还有被暂停的排队消息则会出现Send queued messages按钮由你显式确认后再继续。新发送可直接继续、被暂停的旧队列需显式恢复——这条区分写得很细新意图不需要被旧事故拖延而旧事故不该自动替你冒险。如何上手体验这三个细节本地跑通后需要 Node 24 与 pnpm克隆仓库git clone https://gitcode.com/gh_mirrors/op/openmuse然后pnpm install并pnpm devpnpm dev:web打开 localhost:8081按 docs/DEMO.md 给出的中断自查步骤验证发送一条支持类提示词如Check out Hacker News for cool stuff等智能体开始回复回复途中继续输入一段追问观察发送按钮变成停止方块点击停止方块确认输入框里草稿还在继续输入并再发一条观察它进入Up next队列等本轮结束后看队列消息按顺序发出。演示视频38 秒移动端 / 42 秒桌面端完整展示了发送↔停止的按钮切换docs/DEMO.md。关键源码与文档索引 文件说明apps/mobile/src/chat.tsx聊天界面输入胶囊、发送/停止按钮、队列 UIapps/mobile/src/conversation-queue.ts消息队列核心入队、暂停、按序 flushapps/mobile/src/conversation-run.ts单回合执行与错误捕获apps/mobile/test/conversation-queue.test.ts队列行为三条核心测试docs/EXPERIENCE.md官方交互设计说明docs/DEMO.md演示录制细节与复现步骤这套发送即停止 可见队列 草稿保留 失败不静默重试的组合本质上是在回答同一个问题当 AI 的回复速度不可控时如何让用户始终握有确定感。对于正在打磨聊天体验的团队这套不到千行的实现是非常值得拆解的范本。✨【免费下载链接】openmuseA personal agent with a browser, terminal, files, and work that keeps going built with CopilotKit and AG-UI.项目地址: https://gitcode.com/gh_mirrors/op/openmuse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

读书太累?从认知负荷到高效阅读的完整方法指南

读书太累?从认知负荷到高效阅读的完整方法指南

你有没有过这种经历:翻开一本正经书没看几页,头就开始发沉,眼睛发酸,明明才读了两章,却像刚跑完八百米一样累。我特别理解这种“读书太累”的感觉,因为我自己就是从那个阶段一步一步爬出来的。今天这篇文章…

2026/10/1 16:05:33 阅读更多 →
GTM策略量化标准拆解:从漏斗、阈值到复盘落地

GTM策略量化标准拆解:从漏斗、阈值到复盘落地

简介:这是一份围绕产品GTM(Go-to-Market)策略与量化衡量标准整理的Word文档,适合产品经理、产品营销经理(PMM)及市场团队阅读,用于理解GTM与年度市场计划、Campaign的边界,并建立可落…

2026/10/1 16:05:33 阅读更多 →
Hello Agent Task05 学习笔记:Coze、Dify、FastGPT、n8n 实战与避坑指南

Hello Agent Task05 学习笔记:Coze、Dify、FastGPT、n8n 实战与避坑指南

1. 从“Hello Agent Task05”说起:这个学习笔记到底在折腾什么 第一次看到“Hello Agent Task05 学习笔记”这个标题,很多人会以为又是一篇流水账式的打卡记录。但我翻完一圈热词之后发现,它背后其实是一条非常典型的 Agent 学习路径&#xf…

2026/10/1 16:04:32 阅读更多 →

最新新闻

白盒测试报告不是填空题:从CAN硬件测试看结构化思维落地

白盒测试报告不是填空题:从CAN硬件测试看结构化思维落地

1. 这份模板不是“填空题”,而是白盒测试工程师的思维脚手架“白盒测试实验报告模板”——光看标题,很多人第一反应是:又一个要交差的文档格式?Word里套个表格,把代码覆盖率填进去,加几行“测试通过”就完事…

2026/10/1 19:01:57 阅读更多 →
响应时间:性能指标的最终裁决者——从原理到排查优化实战

响应时间:性能指标的最终裁决者——从原理到排查优化实战

半夜两点被值班电话叫醒,用户语气已经很急躁:“后台能登进去,但页面上所有的操作都像挂了,点一个按钮转圈十几秒。”我打开监控面板,第一件事看的就是性能指标里的响应时间曲线。别的指标都还能争辩两句——CPU高也许是…

2026/10/1 19:01:57 阅读更多 →
上下文工程实战:解决长对话中大模型失忆与上下文膨胀问题

上下文工程实战:解决长对话中大模型失忆与上下文膨胀问题

1. 当提示词开始失效:我在长对话里撞上的"失忆"问题 先说一个真实场景。几个月前我在做一个行业调研分析项目,为了让大模型帮我梳理一整条产业链,我在单次会话里陆续贴了几十份报告片段、访谈纪要、政策文件和历史对话结论。前二十…

2026/10/1 19:01:57 阅读更多 →
风格化渲染系统:从NPR管线到美术可编程的五层架构

风格化渲染系统:从NPR管线到美术可编程的五层架构

1. 风格化渲染不是“加滤镜”,而是重建视觉语法 “一个风格化渲染系统”——这七个字在图形学、游戏开发、影视后期甚至AIGC工具链里,早已不是新鲜词。但绝大多数人第一次接触它时,下意识反应是:“哦,就是给画面套个油…

2026/10/1 19:01:57 阅读更多 →
从零搭建AI工程能力:环境管理、模型推理优化与服务化部署实战

从零搭建AI工程能力:环境管理、模型推理优化与服务化部署实战

1. 从零搭建AI工程能力,为什么大多数人卡在第一步就放弃了 如果你最近在技术社区里频繁看到“ai-engineering-from-scratch”这个说法,不用怀疑,它不是什么新出的框架或者工具库,而是一种越来越多人认可的学习路径——从最底层开始…

2026/10/1 19:01:57 阅读更多 →
MCP实战:用AI构建Excel自动化处理服务

MCP实战:用AI构建Excel自动化处理服务

每天跟Excel打交道的朋友应该都有这种体会:处理报表本身不是最费时间的,费时间的是那些重复性的操作——打开表格、定位列、写公式、复制粘贴、再生成新表。尤其是当数据源有变动、格式不统一的时候,整个人都会烦躁起来。 我最近用MCP&#…

2026/10/1 19:00:57 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →