88 KiB
88 KiB
Workbench PRD
1. 文档定位
- 本文档是 workbench 用户可见功能的产品规格来源,描述目标、范围、术语、交互、状态、边界和验收标准。
- workbench 的用户可见行为、流程、反馈或阻塞逻辑发生变化时,必须同步更新本文。
- 后续实现、测试、评审和 AI 最终汇报都应引用本文中的需求编号与验收编号。
2. 产品目标
- 用户通过对话让 AI 完成搜索、分析、回答、整理和文档处理等任务。
- 用户可以把本地资料作为上下文,让 AI 优先据此完成检索、分析、回答和受支持文件处理。
- 让 workbench 成为“发起任务、查看过程、处理中断、查看修改的文件并按需回退、继续执行”的主工作台。
- workbench 应把任务推进到完成;无法完成时明确说明原因、限制或所需条件。
3. 产品原则
- 本地资料是重要上下文,但不是唯一能力边界;未显式选择资料时,AI 仍可完成通用任务。
- workbench 的发送前提是先绑定可用工作区;可用工作区指当前已选择工作区且该工作区已设置工作文件地址。是否再显式插入
@本地目录、文件或网页资料,是在此基础上的可选上下文控制。 - 当用户显式绑定工作区或插入
@参考资料时,AI 应优先基于这些范围完成任务,而不是忽略用户给出的约束;工作区既包含本地资料,也包含该工作区下的网页资料。 - workbench 不只展示问答过程,还要交付可消费结果,或给出明确失败信息。
- 用户可见能力边界必须明确可见,尤其是哪些资料可检索、哪些格式可直接写回并回退、哪些情况只能查看或分析。
4. 范围
- 包含会话管理。
- 包含 composer 输入、发送、取消与模式切换。
- 包含智能模式下 AI 推进偏好的选择与本机恢复。
- 包含附件拖放和智能模式下执行权限的选择与会话恢复。
- 包含
@参考资料 token 的插入与维护。 - 包含 AI 运行中的审批、搜索模式提示与上下文压缩过程提示。
- 包含右侧内容面板中的搜索结果、文档查看与修改的文件回退入口。
- 包含基于本地资料和网页资料的上下文使用。
- 定时任务的产品规格见
doc/prd/scheduled-task.md(ST-*);Workbench 仅提供入口与会话侧消费。 - 不包含设置页中的资料配置逻辑。
- 不包含视觉风格与基础控件样式定义。
- 不包含 AI 工具协议、operation 矩阵、结果信封或 graph / prompt 细节(见
doc/ai-harness/**与doc/test-plan/ai-test.md)。
5. 当前能力边界
- workbench 可使用当前工作区内已导入的本地资料和网页资料作为任务上下文。
- 当前本地知识库可索引文件类型为
.pdf、.doc、.docx、.md、.markdown、.txt、.xlsx、.xlsm、.xltx、.xltm。每个文件索引时都会前置一个「文件名锚点」内容块,保证按文件名可被知识库搜索命中;空文本文件不产生正文内容,但保留文件名锚点。Excel 只索引文件名、文档标题与工作表名等元数据,不索引任何单元格内容,单元格数据仍由 Excel 专用工具按工作区路径处理。.doc只读,不支持直接编辑。 - 未显式选择参考资料时,智能模式仍可处理通用任务。
- 显式选择目录、文件或网页资料后,任务应优先使用这些资料。只绑定工作区时,默认使用工作区内全部已导入资料;资料不足时,智能模式可用模型通用知识补充通用部分。
- 当前可由 workbench 直接写回并支持回退的受支持文件类型包括
docx、pptx、xlsx、生成的png、jpg、jpeg、webp图片,以及 Markdown、TXT、配置文件和代码等 UTF-8 普通文本文件;普通文本支持创建、完整改写、唯一文本编辑和全部精确匹配替换。Excel 工具可读取xlsx、xlsm、xltx、xltm,但只允许创建和编辑xlsx,避免写回时丢失宏或模板信息。 - 用户可在右侧面板对真实本地 Markdown(所见即所得)与普通 UTF-8 文本(纯文本)做应用内手动编辑并保存,见
WB-EDIT-001;应用内手动编辑不生成修改记录、不进入回退体系。 - 当前通过 composer 附件进入对话上下文的文件不限扩展名,只要是可以选中的文件即可作为附件;
+选择和拖放文件保留源文件绝对路径,粘贴文件保存副本到当前工作区。附件不自动预解析,只把名称与路径交给 AI 后续自行处理。AI 工具侧仍有各自格式边界(如doc只读、pptx可交给 PPT 工具读取和编辑、Excel 工具只写xlsx),无法处理的文件会在 AI 工具层报错。 - 其他格式不保证直接写回和回退。AI 可以在工作区和审批边界内尝试处理,但不属于受支持文件能力范围。
- 终端执行只允许当前平台安全指令集直接运行;一条 terminal 命令被拆分后的每段都命中安全指令集时可直接执行,任一段未命中则必须先经用户手动批准。安全指令集只决定是否可直接执行,不决定执行模式。
- 搜索模式只检索当前工作区下可检索的已导入资料;
@候选仍可展示当前工作区下的全部本地目录和文件,但未索引的本地目录或文件不能产生纯搜索结果,部分可检索目录只覆盖其已索引子文件。 - 涉及本地执行、命令、脚本或文件修改的请求,必须先具备工作区绑定;
@参考资料不能替代工作区绑定。 - 搜索、文件读取和执行结果必须服务后续回答、结论或文件产物,不能只停留在过程展示中。
6. 术语
- 会话:一条独立的聊天上下文。
- 参考资料:通过
@插入的目录、文件或网页资料 token。 - 工作区绑定:当前独立选中的工作区,用于提供本地运行根目录与默认知识库范围(包括本地资料与该工作区下的网页资料)。
- 搜索模式:只执行本地检索,不启动 AI 运行。
- 智能模式:启动 AI 运行,允许产生阻塞、审批、文件直接写回与回退入口。
- 受支持文件:当前已具备直接写回与回退能力的文件类型;当前包括
docx、pptx、xlsx、生成的 PNG、JPEG、WebP 图片和 UTF-8 普通文本文件。 - 目标文件:用户要求新建受支持文件时,AI 写工具直接创建的工作区文件路径。
- 直接写回:AI 写工具将最终 docx、pptx、xlsx、生成图片或普通文本结果原子写入源文件或创建目标文件的流程;工具成功即代表正式路径已可读取,run 收尾不再提交文件。
- 修改记录:一次 AI run 中由受控文件工具直接写回,或由某条 terminal 命令前后差异识别出的创建、更新、删除或重命名记录;提供打开文件、适用格式的审核模式与回退本次修改入口。
- 回退本次修改:基于写回前 checkpoint 恢复文件;新建文件回退时删除目标文件,若文件在 AI 写回后又被修改,需提示用户确认会丢失后续修改。
- 内部引用链接:assistant markdown 中的
ncurator://ref链接。kind=reference表示证据引用,kind=normal表示普通资源链接,resourceType=file/web表示资源类型。证据引用在最终交付生成后由 Main 检查一次可访问性,并携带accessStatus=accessible/unavailable;历史证据缺少该字段时按不可用处理。可用证据可点击,不可用证据显示为弱化文本;普通资源链接不包含accessStatus。 - AI 推进偏好:智能模式下用户对资料使用边界的附加约束,界面选项包括“默认”“本地资料·宽松”“本地资料·严谨”。当前“本地资料”范围包含当前工作区知识库资料、工作区文件和显式参考资料。宽松模式优先使用这些资料,资料不足时允许补充模型知识或外部网页;严谨模式只能把这些资料作为事实依据,资料不足时必须明确说明,不得把模型知识、外部搜索或浏览器结果伪装成资料内事实。
- 执行权限:智能模式下对本次运行是否等待工具审批的选择,独立于 AI 推进偏好。选项为“审核”和“完全访问”。
7. 需求规则
- 需求编号使用
WB-<模块>-<三位序号>。 - 验收编号使用
WB-<模块>-<三位序号>-AC<序号>。 - 需求编号稳定后不因措辞微调而重排;只有功能被废弃时才标记为废弃。
- 定时任务编号与验收见
doc/prd/scheduled-task.md。
8. 需求明细
8.1 核心能力与约束
WB-CORE-001 本地资料是可选上下文,不是唯一前提
- 系统行为:workbench 发送前要求先绑定工作区;在此基础上,即使用户未显式选择任何本地参考资料,AI 仍可执行不依赖本地文档的通用任务;当存在本地参考资料时,可将其作为任务上下文使用。
- 验收:
WB-CORE-001-AC1用户已绑定工作区但未选择任何本地参考资料时,智能模式仍可正常发起不依赖本地文档的任务。WB-CORE-001-AC2系统不会把“没有显式本地参考资料”误表现为“workbench 不可用”。
WB-CORE-002 用户显式选择的参考资料或工作区默认范围必须影响执行
- 系统行为:当用户插入
@参考资料后,后续搜索、分析和执行应优先基于这些显式范围收敛;当用户只绑定工作区而未显式选择参考资料时,搜索与 AI 默认收口到当前工作区全部已导入资料。 - 验收:
WB-CORE-002-AC1搜索模式下,显式参考资料或工作区默认范围会直接影响检索结果。WB-CORE-002-AC2智能模式下,系统不会忽略用户已经绑定的工作区或@参考资料;已选资料作为优先缩圈候选,但不自动变成唯一可搜索范围。
WB-CORE-003 当前受支持文件的直接写回能力边界必须明确
- 系统行为:workbench 明确区分“可直接写回并支持回退的受支持文件”和“可由 AI 自行尝试处理但不提供同等保证能力的其他任务”;当前受支持文件类型包括
docx、pptx、xlsx、生成的png、jpg、jpeg、webp图片和 UTF-8 普通文本文件。xlsm、xltx、xltm只读,不属于可直接写回范围。 - 验收:
WB-CORE-003-AC1当前支持直接写回与回退的受支持文件类型列表明确可见,包括docx、pptx、xlsx、PNG、JPEG、WebP 图片的修改和新建,以及 Markdown、TXT、配置文件和代码等 UTF-8 普通文本文件。WB-CORE-003-AC2不在当前受支持文件类型列表中的资料不会被伪装成可进入同一直接写回与回退流程的编辑或创建目标。
WB-CORE-004 资料优先级受 AI 推进偏好约束
- 系统行为:默认或宽松偏好下,当用户已绑定工作区或插入参考资料时,系统优先基于这些资料完成任务;仅绑定工作区时,默认使用该工作区全部已导入资料作为知识范围。资料不足时,默认或宽松偏好允许补充模型通用知识或外部网页信息,但不能忽略或违背用户已给定的资料。严谨偏好下,只允许把当前工作区与显式参考资料作为事实依据;资料不足时应明确说明缺口,不得使用模型知识、
web_search或browser_use的外部内容补足事实。 - 验收:
WB-CORE-004-AC1用户已绑定工作区默认范围或显式参考资料时,问答或受支持文件结果不会脱离这些资料另起一套无关内容。WB-CORE-004-AC2默认或宽松偏好下,资料不足以覆盖通用部分时,系统仍可补充模型通用知识或外部网页信息,并明确区分资料内事实与补充信息。WB-CORE-004-AC3严谨偏好下,资料不足时系统明确说明资料缺口,不使用工作区和显式参考资料之外的信息补足事实。
WB-CORE-005 任务过程中的中间结果必须服务于后续结果
- 系统行为:当任务执行过程中产生搜索结果、文件读取结果、执行结果或其他中间信息后,后续 assistant 回答、分析结论和文件产物应实际使用这些信息继续推进用户诉求;若当前中间结果不足以支撑继续完成,系统应明确说明限制,而不是伪造后续内容。
- 验收:
WB-CORE-005-AC1任务过程中产生的中间结果,会体现在后续用户可见回答、结论或文件产物中,而不是只表现为“执行过某些步骤”。WB-CORE-005-AC2当前中间结果不足或执行失败时,assistant 会明确说明为什么无法继续完成、缺少什么条件或当前能确认到什么范围,而不是编造结论或文档内容。WB-CORE-005-AC3用户可见输出优先围绕用户原始诉求组织;若引用中间结果,应使用用户能理解的表达,而不是暴露内部工具或过程标签。
WB-CORE-006 用户诉求应被推进到完成或明确失败
- 系统行为:当用户已提供足够上下文且当前能力允许时,workbench 应以“最小可靠返回 × 最少连续决策轮次”持续推进用户诉求直到完成:只读取当前决策所需范围,避免全量或重复读取,独立调用尽量同轮发起,同类批量能力不拆轮。若当前无法完成,也应明确返回失败原因、限制信息或下一步所需条件,而不是停留在搜索结果、工具调用或过程提示等中间过程。
- 验收:
WB-CORE-006-AC1用户诉求可完成时,系统会把任务推进到可消费结果、明确产物或可确认的下一步动作,而不是停留在中间态。WB-CORE-006-AC2用户诉求当前无法完成时,系统会明确说明失败原因、限制信息或下一步所需条件,而不是无声中断或只留下过程信息。WB-CORE-006-AC3最终收口默认直接围绕用户显式提出的问题组织;若同时需要说明产物、依据或限制,也应使用用户可理解的语言表达,而不是依赖内部标识、tool 名或固定章节标题。WB-CORE-006-AC4简单任务不强制创建 plan;复杂或多依赖任务才维护 plan,不为汇报进度单独更新。目标满足且必要检查通过后可直接交付。
WB-CORE-007 网页信息可用于任务推进
- 系统行为:默认或宽松偏好允许 AI 通过后台
web_search搜索网页、读取指定网页正文,并在需要登录或人工操作时使用browser_use打开右侧内置浏览器继续任务;严谨偏好不得把外部网页作为资料内事实依据。web_search是 Human 图后台工具,结果只回模型与过程层,不得自动展开右侧search_list面板,也不得替代browser_use的可见浏览器交互。 - 验收:
WB-CORE-007-AC1用户要求查找公开网页信息时,AI 可搜索并读取搜索结果或用户给出的 URL,再用所得内容完成回答或产物。WB-CORE-007-AC2网页搜索、读取或浏览失败时,系统明确说明失败边界,不伪造网页内容。WB-CORE-007-AC3严谨偏好下,外部网页能力不会绕过资料范围限制。WB-CORE-007-AC4AI 调用web_search时,Workbench 不得因工具结果自动打开右侧「搜索结果」列表;过程层可展示“搜索网页 / 抓取网页”等状态,但右侧面板保持原状,除非用户处于 Composer 搜索模式或 AI 触发browser_use。WB-CORE-007-AC5web_search的外网抓取在后台 headless CDP host 中完成,用户不得看到带窗框的独立浏览器窗口或主界面被网页内容遮挡。WB-CORE-007-AC6web_searchfetch 默认走 Crawl4AI;抓取超时或失败时可降级为 HTTP 正文提取,以保证任务能返回可读正文或明确失败,而不是无限挂起。
WB-CORE-008 Workbench 窗口层与业务内容分层
- 系统行为:Windows Workbench 的原生窗口控制层独立位于业务内容上方;空会话拖动区、侧栏入口和业务内容不互相遮挡。非 Windows 平台保留页面顶部拖动区。
- 验收:
WB-CORE-008-AC1空会话仍提供可命中的 44px 拖动区。WB-CORE-008-AC2Windows 原生控制层为独立 36px 区域,业务内容从其下方开始。WB-CORE-008-AC3Windows 侧栏切换按钮保持no-drag且与原生控制按钮对齐。
8.2 会话管理
WB-SESSION-001 无历史会话时先展示可输入草稿态
- 系统行为:页面初始化时拉取会话列表。列表为空时展示可输入的新对话草稿态;进入页面、点击新对话、选择工作区或添加附件都不创建会话,第一条消息发送时才创建。
- 验收:
WB-SESSION-001-AC1首次进入且没有历史会话时,界面提供可输入、可选工作区的新对话草稿态,而不是不可操作空白页。WB-SESSION-001-AC2第一条消息发送前,不因进入页面、点击新对话、选择工作区或添加附件而创建真实会话记录。WB-SESSION-001-AC3第一条消息发送成功后,系统创建真实会话,并以该消息前 20 个字符作为标题。
WB-SESSION-002 切换会话时恢复目标会话状态并隔离上一会话运行态
- 系统行为:切换会话后,主区原子加载目标会话的消息、运行 snapshot 和 UI 状态。加载完成前保留原画面并展示切换态,不先闪成空白。完成后恢复目标会话自己的输入草稿、
@范围、附件、模式、AI 推进偏好、执行权限、模型、工作区、右侧标签和面板展开状态。上一会话的运行态和 UI 状态不得泄漏到目标会话,但目标会话自身的 active run 与 pending approval 必须可继续操作。 - 验收:
WB-SESSION-002-AC1点击其他会话后,消息区展示目标会话的历史消息。WB-SESSION-002-AC2切换加载完成后恢复目标会话自己的输入和右侧面板,不保留上一会话的搜索结果、修改面板或运行中阻塞提示;加载过程中主消息区不先闪成空白态。WB-SESSION-002-AC3目标会话存在正在运行或最近完成的 AI run 时,切换回来后能看到已持久化的过程流、当前 partial answer 或最终回答;正在运行的 run 可继续停止。WB-SESSION-002-AC4目标会话存在等待审批的 AI run 时,切换回来后审批卡片仍可继续提交。WB-SESSION-002-AC5会话列表中存在running或waiting_approvalrun 的会话显示“任务运行中”标记;运行完成、失败或取消后标记消失,且不会错误显示到其他会话。
WB-SESSION-003 首条用户消息驱动标题更新
- 系统行为:新会话创建时,以第一条用户消息的前 20 个字符生成标题;之后发送消息不再自动改名。
- 验收:
WB-SESSION-003-AC1第一条用户消息发送后,新创建会话的标题为该消息前 20 个字符。WB-SESSION-003-AC2之后继续发送消息时,不会再次自动改写已有标题。
WB-SESSION-004 删除会话后保持可继续操作
- 系统行为:删除会话后刷新列表;若删除的是当前会话,则先清空当前选中,再按最新列表回落到第一条;列表为空时回到不落库的新对话草稿态。
- 验收:
WB-SESSION-004-AC1删除成功后,该会话不再出现在列表中。WB-SESSION-004-AC2删除当前会话后,页面仍保持可继续聊天,而不是落到不可操作状态。
WB-SESSION-005 同一会话里的续做保持任务主线
- 系统行为:用户在同一会话内基于上一轮结果继续提出局部修改、补写或 refinement 请求时,系统继续沿用当前会话上下文、上一轮产物和有效文件/回退入口,不把续做误当成全新无关任务;若用户明显切换到新的目标对象或新的交付物,系统可在保留历史上下文的前提下按新任务主线处理。
- 验收:
WB-SESSION-005-AC1续做请求发出后,系统会复用上一轮相关产物或上下文,而不是丢失已有任务主线。WB-SESSION-005-AC2续做完成后的结果体现的是对上一轮结果的继续修改或补充,而不是简单重复旧输出或重新开题。
WB-SESSION-006 用户消息复制与编辑
- 系统行为:用户消息支持复制纯文本;没有任务运行时,最新一条用户消息支持编辑。编辑会撤回该消息及其后的 assistant 结果,并把原文字、参考资料和附件恢复到输入区,等待用户修改后重新发送。
- 验收:
WB-SESSION-006-AC1复制操作写入消息的可读文本,并给出成功或失败反馈。WB-SESSION-006-AC2只有最新用户消息且当前没有运行中任务时显示编辑入口。WB-SESSION-006-AC3编辑成功后,目标消息及后续回复从会话中撤回,原输入、参考资料和附件恢复为草稿。WB-SESSION-006-AC4撤回失败时恢复原消息和原草稿,不留下半完成状态。
WB-SESSION-007 同一会话内恢复被中断任务
- 系统行为:智能模式任务因用户主动停止、网络错误、请求超时、应用进程中断、输出截断、达到运行上限或未知异常而没有正常完成时,历史消息日志保持不变。用户之后在同一会话发送消息时,系统从日志投影“最新压缩摘要 + checkpoint 后历史”,补齐悬空工具结果,再把新 user 消息追加一次继续推进。每条历史 user 保留当轮工作区、参考资料和附件配置;新 user 只使用 Composer 当前配置。计划与已学习技能均从消息日志恢复,不存在独立恢复快照。重启只标记中断,不自动重新调用模型。
- 验收:
WB-SESSION-007-AC1用户停止、网络错误、请求超时、进程中断、输出截断、达到运行上限和未知异常后,下一条消息可只靠消息日志继续(含计划与已学习技能)。WB-SESSION-007-AC2恢复后的消息数组只包含一次压缩摘要与 checkpoint 后历史,并把用户新语句作为尾部 user 消息追加一次;新语句不会改写历史任务或历史配置。WB-SESSION-007-AC3同一会话连续多次中断和恢复后仍保留完整任务主线,原始任务始终保留在记录首条 user,不把历史任务递归嵌套为新的原始任务。WB-SESSION-007-AC4切换会话或重启应用后,原会话日志仍可投影;其他会话不能读取该日志。WB-SESSION-007-AC5编辑并重新发送最后一条用户消息时,只删除该消息、关联 assistant、run 与该 run 的日志记录,其他历史不变。WB-SESSION-007-AC6正常完成清空计划展示但不删除历史日志;删除会话级联删除其日志。WB-SESSION-007-AC7达到运行上限时显示“已达到运行上限,可继续对话推进”,并允许在同一会话继续恢复。
WB-SESSION-008 会话界面状态独立持久化
- 系统行为:每个真实会话都在 SQLite 保存独立的 Composer 和右侧资源工作台快照;未发送的新对话使用独立
__draft__快照,首次发送创建真实会话时与浏览器标签一起事务提升。正常切换、离开页面和退出应用前强制保存,重启后恢复最后活动会话。异步 AI、搜索和浏览器事件必须按sessionId / ownerId更新所属会话,不能覆盖当前其他会话。 - 验收:
WB-SESSION-008-AC1A/B 会话可分别保存并恢复工作区、模式、AI 推进偏好、执行权限、主模型、输入文本、内容节点、引用、附件和附件桶,反复切换互不串联。旧快照缺少执行权限时按“审核”恢复。WB-SESSION-008-AC2A/B 会话可分别保存并恢复搜索结果、资源标签、活动标签和面板展开状态;后台返回只更新事件所属会话。WB-SESSION-008-AC3正常退出并使用同一用户目录重启后,恢复最后活动会话及其完整 UI 状态;异常崩溃最多丢失最后一个输入防抖窗口。WB-SESSION-008-AC4未发送草稿不会创建真实会话;首次发送时草稿 UI 状态和__draft__浏览器标签在同一事务中转移到新会话。WB-SESSION-008-AC5删除会话时同步删除其 UI 快照和浏览器标签;删除当前会话后按现有规则回落并更新最后活动会话。WB-SESSION-008-AC6模型、引用或附件失效时清理或回退到可用状态并保存修复后的快照;文件预览路径失效时保留标签并展示不可用状态。
8.3 Composer 输入与发送
WB-COMPOSER-001 发送前置条件
- 系统行为:只有当前存在会话、已绑定可用工作区、输入裁剪后非空且未处于发送中时,发送按钮才可执行;发送按钮因前置条件不满足而不可执行时,用户可通过 hover 查看具体原因提示。
- 验收:
WB-COMPOSER-001-AC1纯空白输入不会触发发送。WB-COMPOSER-001-AC2未完成工作区绑定或发送中时,不会重复触发发送。WB-COMPOSER-001-AC3发送按钮不可执行时,hover 可见禁用原因。
WB-COMPOSER-002 键盘行为
- 系统行为:
Enter发送,Shift + Enter插入换行;中文等输入法组词期间不应被输入区同步、光标恢复或候选刷新打断。 - 验收:
WB-COMPOSER-002-AC1按Enter后触发当前模式对应的发送逻辑。WB-COMPOSER-002-AC2按Shift + Enter后,输入区保留内容并新增换行,不触发发送。WB-COMPOSER-002-AC3使用中文输入法快速输入时,输入区不会中断组词并遗留未确认的英文拼音字符。
WB-COMPOSER-003 智能模式发送路径
- 系统行为:智能模式发送时,renderer 只调用提交接口;Main 侧统一校验会话、输入、模型、工作区与
@范围,并在启动 AI 前创建用户消息、assistant 占位消息和 AI run 记录。AI 运行中的事件先写入会话消息记录(chat_session_message_log)作为唯一真相源,再更新 run / assistant message 投影并广播给 renderer;renderer 通过 session snapshot 中的runs恢复已完成 / 进行中的展示投影(从消息记录按seq投影重建过程流),通过activeRuns继续运行中或等待审批的交互状态,并结合实时事件展示思考层、决策层、执行层、学习层、压缩层、总结层与最终 markdown 输出。输入区模式选项中该模式展示为“大聪明”,但内部模式语义仍是智能模式。 - 验收:
WB-COMPOSER-003-AC1智能模式发送后,主区先可见用户消息与 assistant 占位消息。WB-COMPOSER-003-AC2AI 运行成功启动后,assistant 过程流通过事件逐步追加更新,而不是一次性静态替换。WB-COMPOSER-003-AC3assistant 占位回复在最终输出前展示“让俺想想”并带有流动视觉反馈;当后端 thinking 过程事件到达时,本地占位被替换为该 run 的 thinking 过程组,不重复展示;当出现“正在重试”过程组时,必须隐藏“让俺想想”占位,避免两个等待状态同时出现。WB-COMPOSER-003-AC4assistant turn 中 brain 最终输出始终位于过程流下方,并按 markdown 渲染;等待 AI 返回最终输出时先展示总结层“基本完成了,让俺收尾下吧”,首个 markdown token 或完成事件到达后隐藏该等待层;证据引用链接与普通链接视觉区分,内部文件链接打开右侧文件预览,内部网页链接使用系统浏览器打开。WB-COMPOSER-003-AC5决策层只展示面向用户的短摘要,不得展示模型原始长篇推理;决策层出现时,当前思考层必须立即隐藏,即使下一步执行正等待审批。WB-COMPOSER-003-AC6过程流使用用户可理解的分层文案,不直接暴露内部 tool 名或底层事件名;同一轮执行中的多个工具调用合并为一个执行层 header,展开后每个工具按其入参生成一句自然语言说明。WB-COMPOSER-003-AC7AI 输出中切到 Settings 或触发 renderer 重新挂载后,回到 Workbench 能通过会话消息记录投影恢复过程流、partial answer、最终回答或等待审批状态。WB-COMPOSER-003-AC8brain 负责在最终交付 markdown 中生成证据引用(名称、地址、资源类型);最终交付生成后、回传 renderer 前,Main 对引用地址并行去重检查并写入证据专用的accessStatus。可访问引用保留文件或网页链接交互;不可访问引用不得删除,必须使用与可访问引用相同的强调色降低透明度,并显示为无资源图标、无悬浮反馈、普通鼠标且不可点击的文本。缺少accessStatus的证据按不可访问处理,普通资源链接不使用该字段;renderer 渲染和用户点击时均不再次检查可访问性。WB-COMPOSER-003-AC9terminal 审批要求表示命令正在等待用户决定,不属于执行失败;用户未允许时命令状态为未执行且不得产生 terminal step。命令启动后自然退出时,无论退出码是否为零,都属于执行完成并保留真实退出码供 brain 判断;只有终端执行器、Shell 或会话在执行期间异常时才显示“执行终端指令失败”。用户主动停止单独记录为已取消;正常中断后终端回到 idle,强制终止进程树后终端进入 closed。
WB-COMPOSER-004 搜索模式发送路径
- 系统行为:搜索模式发送时,不启动 AI 运行;renderer 只调用提交接口,Main 侧创建用户消息、执行现有搜索,并创建一条已完成的 assistant 结果摘要消息,右侧进入搜索结果态;输入区模式选项中该模式展示为“没头脑”,但内部模式语义仍是搜索模式。
- 验收:
WB-COMPOSER-004-AC1搜索模式发送后,不启动 AI 运行流程。WB-COMPOSER-004-AC2搜索提交期间发送按钮保持发送中状态,避免重复提交。WB-COMPOSER-004-AC3搜索成功后,主区展示用户消息和 completed assistant 结果摘要,右侧内容面板展示命中列表和命中详情。
WB-COMPOSER-005 发送前必须先绑定工作区
- 系统行为:workbench 的发送前必须已有可用工作区绑定;可用工作区绑定指当前已选择工作区且该工作区已设置工作文件地址。当工作区列表为空、绑定失效、当前尚未完成工作区选择或所选工作区未设置工作文件地址时,发送按钮保持不可执行,并在 composer 附近提示用户先完成工作区设置。
- 验收:
WB-COMPOSER-005-AC1无可用工作区绑定时不会直接启动 AI 运行或纯搜索,发送按钮保持不可执行。WB-COMPOSER-005-AC2未选择工作区时,提示会明确要求先选择工作区;已选择工作区但未设置工作文件地址时,提示会明确要求前往设置页完成目录绑定;未显式插入@参考资料时,后续默认使用当前工作区全部已导入资料作为默认检索范围。
WB-COMPOSER-006 AI 运行取消
- 系统行为:智能模式在当前任务仍在运行时,composer 不展示独立取消按钮;底部发送按钮切换为停止图标,点击后直接中止当前 run。若当前 run 正在等待审批,停止也必须释放审批等待并结束本次 run。
- 验收:
WB-COMPOSER-006-AC1运行中发送按钮切换为停止图标,页面不再显示独立“取消”按钮。WB-COMPOSER-006-AC2点击停止图标后,当前运行结束并给出已取消反馈。WB-COMPOSER-006-AC3当前运行卡在审批等待时,点击停止图标也会结束本次 run,而不是继续等待审批提交。
WB-COMPOSER-007 模型、工作区、AI 推进偏好与执行权限选择
- 系统行为:输入区底部展示当前模式和主模型。模型列表行只保留服务商图标、模型名和选中勾,不使用 Tooltip、眼睛或价格图标;鼠标悬浮或键盘聚焦模型时,在列表右侧展示说明、能力和“较低 / 适中 / 较高”价格档位,空间不足时翻到左侧。视觉能力属于预设模型元数据;自定义模型只展示配置名、模型 ID 和“能力与价格信息未提供”。其余工作区、推进偏好、执行权限、会话快照和回退规则保持现有契约。
- 验收:
WB-COMPOSER-007-AC1模型选择展开后展示预设模型区与底部「自定义模型」入口;进入自定义模型视图后为原服务商分组面板效果,可按模型名称搜索候选。WB-COMPOSER-007-AC2预设模型平铺展示且不出现分组标题;列表行只含服务商图标、模型名和选中勾。WB-COMPOSER-007-AC3悬浮或键盘聚焦模型时显示可左右翻转的信息侧栏;预设模型展示说明、能力和“较低 / 适中 / 较高”价格档位,自定义模型不猜测信息。WB-COMPOSER-007-AC4选中预设模型后输入框展示服务商图标与模型名,选中自定义模型后展示模型名;会话快照存储configId + modelName。WB-COMPOSER-007-AC5用户切换模式、AI 推进偏好、执行权限、模型或工作区后,切回该会话或重启应用时恢复该会话自己的 SQLite 快照。WB-COMPOSER-007-AC6当会话快照中的工作区或模型已失效时,系统自动清理或回退到当前可用候选,并保存修复后的快照。WB-COMPOSER-007-AC7模型选择和工作区选择入口都有可识别图标,而不是只展示纯文本。WB-COMPOSER-007-AC8输入区模式入口展示“大聪明 / 没头脑”,该展示文案不改变智能模式与搜索模式的内部行为。WB-COMPOSER-007-AC9智能模式下可选择默认、本地资料宽松和本地资料严谨三种推进偏好;本地资料入口通过二级菜单选择宽松或严谨。WB-COMPOSER-007-AC10切换到搜索模式后 AI 推进偏好入口隐藏;切回智能模式后保留此前选择。WB-COMPOSER-007-AC11发送智能任务时,当前 AI 推进偏好会进入 Main 侧 AI run 上下文并影响资料使用边界。WB-COMPOSER-007-AC12新会话默认“审核”;发送时的执行权限写入本次 AI run,发送后改变 Composer 选择不得影响已启动的 run。
WB-COMPOSER-013 主模型图片输入
- 系统行为:不单独配置视觉模型。AI 调用内置
read_image后,图片直接加入当前主模型的下一次多模态请求;主模型不支持图片时展示 provider 原始错误。 - 验收:
WB-COMPOSER-013-AC1模型选择器不展示独立视觉模型或图片能力图标;预设模型是否支持视觉理解只在统一模型信息侧栏中说明。WB-COMPOSER-013-AC2用户附件和@图片只向 AI 提供路径,不在发送前自动识别。WB-COMPOSER-013-AC3图片路径和元数据可持久化,Base64 不得进入 SQLite 会话数据。WB-COMPOSER-013-AC4本地图片由read_image生成运行时缓存,HTTP(S)@图片保留原地址;运行时文件丢失后允许显示不可用占位。
WB-COMPOSER-014 流式回答、Thought 与计划进度
- 系统行为:回答内容分片到达后立即在最终回答位置按 Markdown 渲染;一旦进入工具执行,同一草稿转为紧凑 Thought。自动重试前清空上一尝试草稿。正常结束且无工具调用时原位成为最终回答;有工具调用时继续沿用现有聚合、展开详情和红色失败 UI,聊天区不直接展示工具原始结果。Composer 正中上方展示当前计划的环形进度,hover、focus 或点击显示 Todo 浮层。
- 验收:
WB-COMPOSER-014-AC1多段内容在任务完成前逐段 Markdown 渲染,切换会话再回来可恢复当前草稿。WB-COMPOSER-014-AC2有工具调用的内容成为 Thought;无工具且正常结束的内容成为最终回答。未确认结束前不会提前收尾。WB-COMPOSER-014-AC3自动重试不会重复拼接上一尝试;输出被截断时显示可继续错误,已确认的半截回答进入日志,网络中断草稿不进入后续对话上下文。WB-COMPOSER-014-AC4有计划时显示环形进度;Todo 浮层支持鼠标和键盘,正常完成后短动画隐藏,中断后保留。WB-COMPOSER-014-AC5工具调用聚合、展开详情和红色失败效果不变,聊天区不直接展示工具原始结果。
WB-COMPOSER-011 使用帮助入口
- 系统行为:Workbench 左侧栏底部在设置入口旁展示使用帮助按钮,点击后通过系统默认浏览器打开国内官网中文使用手册
https://www.guanzhangai.cn/zh/manual。 - 验收:
WB-COMPOSER-011-AC1使用帮助按钮可见,具有“查看使用帮助”的可访问名称和说明。WB-COMPOSER-011-AC2点击使用帮助按钮后,系统打开官方中文使用手册,不改变当前会话和输入草稿。
WB-COMPOSER-012 应用更新入口
- 系统行为:应用更新入口位于 Workbench 左侧栏底部、使用帮助入口旁。发现新版本后显示“更新”,下载时显示进度,下载完成后显示“重启更新”;设置页不重复提供更新入口。
- 验收:
WB-COMPOSER-012-AC1没有可用更新时不显示更新入口;发现更新后入口可见。WB-COMPOSER-012-AC2用户主动点击后才开始下载,下载中显示进度且失败后可重试。WB-COMPOSER-012-AC3下载完成后可立即重启或稍后处理,稍后处理时入口保留为“重启更新”。WB-COMPOSER-012-AC4当前应用检测到本机 SQLite schema version 更高时,不初始化 Workbench 和其他业务服务,只显示独立升级恢复页,并明确展示检测版本与当前支持版本。WB-COMPOSER-012-AC5升级恢复页自动检查更新,按状态提供检查、下载、进度、失败重试和重启安装;始终保留官网中文下载页入口与退出入口,更新失败或不可用时不能绕过进入业务界面。页面不展示底层更新错误,统一使用可理解的中文失败提示。
WB-COMPOSER-008 上下文用量提示
- 系统行为:智能模式输入区展示当前会话上下文 token 用量圆圈,显示当前已估算 token、默认最大上下文 token 与占比;该用量在切换会话和 human run 完成后刷新。
- 验收:
WB-COMPOSER-008-AC1智能模式下输入区可见上下文用量圆圈,hover 或辅助文本可读到已用 token 与最大 token。WB-COMPOSER-008-AC2human run 完成后,用量圆圈会基于最新会话消息与 session memory 刷新。
WB-COMPOSER-009 消息流布局
- 系统行为:workbench 消息区不展示用户与 assistant 头像;assistant 回复以左对齐内容流展示,过程流没有独立标题或左侧竖线,且与最终 brain 输出共用消息 rail;最终 markdown 输出直接位于内容流中;用户消息使用右对齐紧凑气泡。空会话时输入区位于主工作区中部;存在消息后输入区固定在主区底部,只允许消息区独立滚动,右侧面板展开或折叠不得改变输入区定位。过程流按真实时间展示决策层与过程层:思考层和总结层是临时等待层,执行层、学习层、压缩层和决策层累计保留;执行层 header 默认折叠,hover 时显示展开箭头并提升文字颜色,展开后每个工具调用展示一句自然语言说明。
- 验收:
WB-COMPOSER-009-AC1用户与 assistant 消息不展示头像或头像占位。WB-COMPOSER-009-AC2assistant 过程流和最终输出左边缘与底部 composer 内容 rail 对齐。WB-COMPOSER-009-AC3assistant 最终 markdown 输出默认无独立背景卡片,保持在过程流下方。WB-COMPOSER-009-AC4用户消息以右对齐紧凑气泡展示。WB-COMPOSER-009-AC5执行层 header 按真实发生顺序将同一轮工具调用合成为一句自然语言,最多展示三类动作,正常动作使用“并”连接,后续动作失败时使用“但”连接,不使用逗号分隔;超过三类时收敛为“正在执行 n 项操作”或“已完成 n 项操作”。例如“已操作浏览器 3 次并等待 1 秒”“已搜索网页但读取网页失败”。header 只展示一个图标;单一工具类型使用对应语义图标,混合工具使用流程图标。WB-COMPOSER-009-AC6展开后的工具句子使用“动作 + 对象”的完整自然语言,不重复运行状态,不使用冒号。示例:docx_read_outline展示“查看文档 xx 的结构”;docx_read_nodes展示“读取文档 xx 范围”;text_file_read展示“读取文件 xx”;terminal_run展示“执行命令 xxxx”;web_search search / fetch分别展示“搜索网页 query”“抓取网页 url”;browser_use navigate / observe / extract / act分别补充“打开网页 / 查看页面并 / 从页面中 / 在页面上”的动作语义。WB-COMPOSER-009-AC7文件名、query、命令、URL 和技能名不使用粗体或冒号强调,保持正常字重;可以通过文字颜色表达层级。WB-COMPOSER-009-AC8学习步骤使用技能通用名称展示,例如docx 阅读器、docx 编辑器、资料查阅器、命令执行器;运行中展示“正在学习 xx 技能”,完成后展示“已学会 xx 技能”。WB-COMPOSER-009-AC9执行层 header、学习层和压缩层展示对应图标;浏览器、等待、网页读取、网页搜索、图片识别、知识库、文件和终端使用不同语义图标。展开后的每条工具句子不展示图标,也不渲染前置小圆点或“AI 思路”类图标。WB-COMPOSER-009-AC10决策层、执行层、学习层、压缩层、总结层按事件时间顺序累计展示;决策层不折叠,执行层默认折叠。WB-COMPOSER-009-AC11空会话输入区保持居中;存在消息后消息区为唯一纵向滚动容器,输入区固定在主区底部且不被消息内容向下推出窗口。WB-COMPOSER-009-AC12“正在 / 已检索知识库”只来自真实搜索提交或 AI 实际调用知识库工具;新建干净智能会话、仅切换模式时不得凭空出现该过程文案。
WB-COMPOSER-010 附件保存与传递规则
- 系统行为:用户通过
+或拖入中间聊天区添加本地文件时,附件记录其源文件绝对路径,不复制文件;粘贴文件因不保证有稳定源路径,保存到当前工作区的<workspace>/.ncurator/runtime/assets/<assetBucketId>/。assetBucketId是当前输入草稿生成的 UUID,和会话 ID 解耦,添加附件不会提前创建新会话。文件拖入中间聊天区时显示透明覆盖层“松开以添加文件”,拖离或放下后消失;覆盖层不覆盖左侧栏、顶部栏或右侧资源面板。发送给 AI 的附件上下文只包含顺序、名称和路径。 - 验收:
WB-COMPOSER-010-AC1未绑定可用工作区时,不允许添加附件,并提示先选择工作区或完成目录绑定。WB-COMPOSER-010-AC2已绑定工作区后,+和拖放文件保留源文件绝对路径;粘贴文件保存到<workspace>/.ncurator/runtime/assets/<assetBucketId>/;三种方式均不会提前创建真实会话。WB-COMPOSER-010-AC3附件不限文件扩展名,任何可被文件选择器选中的普通文件都可以添加;不因扩展名提示不支持或拒绝加入附件列表。文件内容是否可被 AI 工具处理由 AI 工具层自行判断。WB-COMPOSER-010-AC4发送给 AI 的附件上下文只包含顺序、名称和路径,不包含发送前预解析摘要。WB-COMPOSER-010-AC5拖放仅接受文件;文件夹不处理。大小提示、附件卡片和移除逻辑与+、粘贴一致。
8.4 模式切换
WB-MODE-001 模式切换不切页面
- 系统行为:智能和搜索共用同一页面骨架与同一输入区,切换模式不跳转页面,也不替换成第二套输入组件。
- 验收:
WB-MODE-001-AC1切换模式后,当前输入内容仍保留。WB-MODE-001-AC2切换模式后,后续发送逻辑立即按新模式执行。
WB-MODE-002 搜索模式下无可检索资料时不执行搜索
- 系统行为:搜索模式下若已显式选择参考资料,但这些范围中没有任何可检索资料,或仅绑定工作区但该工作区下没有任何已导入且可检索资料,则不允许执行纯搜索。
- 验收:
WB-MODE-002-AC1当前搜索范围内没有任何可检索资料时,搜索不会执行。WB-MODE-002-AC2用户会收到“当前搜索范围没有已索引资料,无法执行纯搜索”的明确提示。
8.5 @ 参考资料
WB-SCOPE-001 @ 候选来源规则
- 系统行为:输入
@后,根据当前关键字和当前工作区返回目录、文件和网页资料候选。每次进入新的@候选状态时,系统读取当前工作区的真实本地目录树和当前网页资料列表;本地索引只补充索引状态,不决定候选是否出现。打开后的本轮输入只过滤这份快照,不重复扫描目录。正常发送前用户必须先完成工作区绑定,因此候选基于当前工作区返回全部本地目录、本地文件和网页资料;候选浮层按“文件”和“网页”两组展示,本地目录归入“文件”组并通过目录图标区分,右侧只展示索引状态。若工作区尚未就绪,则不开放发送,并提示先完成工作区绑定。 - 验收:
WB-SCOPE-001-AC1未完成工作区绑定时,不返回其他工作区的本地目录或文件,也不会把未绑定工作区时的资料选择当作正常发送路径暴露给用户。WB-SCOPE-001-AC2选中工作区后,候选中同时可出现本地目录、本地文件和网页资料;候选覆盖当前工作区下的全部本地目录和文件,且只展示“文件”和“网页”两组,目录位于“文件”组内并通过图标识别。WB-SCOPE-001-AC3在上一次索引或候选打开后新增、修改或删除本地文件时,下一次打开@必须反映真实目录;新增或变更但未索引的文件仍可选择,并显示“未索引”。
WB-SCOPE-002 @ 插入与删除规则
- 系统行为:候选可通过键盘或鼠标插入为内联 token;目录、文件和网页资料都可作为合法 token 插入;输入区支持多个已插入 token 共存;token 使用无边框的紧凑图标加名称样式展示。目录、网页、PDF、DOCX、PPT/PPTX 使用各自的专属样式;Markdown、TXT 和其他文件统一使用普通文件样式。文字与图标保持同色。按
Backspace可移除参考资料;发送后,用户消息中保留本轮参考资料 token 回显,样式与输入区 token 保持一致。 - 验收:
WB-SCOPE-002-AC1目录、文件或网页资料插入成功后,参考资料以 token 形式保留在输入流中,并进入后续发送参数。WB-SCOPE-002-AC2输入区支持多个已插入 token 共存,而不是后插入覆盖前一个范围。WB-SCOPE-002-AC3删除 token 后,对应范围不再参与后续发送。WB-SCOPE-002-AC4发送后,用户消息仍展示本轮@参考资料 token,用户可从消息中看见当时选择的资料范围。WB-SCOPE-002-AC5目录、网页、PDF、DOCX、PPT/PPTX 使用专属样式;Markdown、TXT 和其他扩展名不得伪装成专属类型,统一使用普通文件样式。
WB-SCOPE-003 重复与跨工作区范围清理
- 系统行为:已插入的参考资料不重复出现在候选中;切换工作区后,属于旧工作区的目录、文件和网页资料 token 全部自动清理。
- 验收:
WB-SCOPE-003-AC1同一范围不会被连续重复插入。WB-SCOPE-003-AC2切换工作区后,旧工作区的目录、文件和网页资料 token 都不再保留。
WB-SCOPE-004 空候选提示
- 系统行为:若当前没有可插入范围,系统按上下文给出明确提示。
- 验收:
WB-SCOPE-004-AC1工作区尚未完成绑定时,提示“请先选择工作区”。WB-SCOPE-004-AC2已选工作区但没有匹配项时,提示“当前工作区中没有匹配项”。
8.6 AI 运行中的阻塞与提示
WB-BLOCKER-001 审批阻塞
- 系统行为:审核权限下,AI 运行收到批量审批事件后,在输入框上方展示紧贴 composer 的审批卡片;卡片一次只展示当前一条审批项,用户可通过上下切换浏览整批,并且必须先完成整批审核后系统才会继续决策是否执行。审批卡片不展示内部策略原因,命令文本与同意/拒绝图标按钮左右排列,指导输入框与提交按钮同排展示;审批不自动超时,必须等待用户明确操作或运行被取消/关闭。完全访问权限下,统一审批入口直接批准该 run 的所有审批项,不创建等待审批状态、不发送审批事件、不展示审批卡片。完全访问只跳过审批,不绕过工作区绑定、命令安全限制、取消、工作区内文件变更记录或其他运行时保护。
- 验收:
WB-BLOCKER-001-AC1同一批次全部选择“同意”后,当前运行恢复加载态,并按原 serial 顺序继续执行该批对应命令。WB-BLOCKER-001-AC2只要批次中任一项被“拒绝”或填写“告诉馆长该怎么做”,本批命令一条都不会执行,系统回到后续 AI 决策收口。WB-BLOCKER-001-AC3审批卡片第三个选项不使用独立按钮;输入框非空即视为“告诉馆长该怎么做”。WB-BLOCKER-001-AC4用户不操作审批卡片时,审批不会因固定超时时间自动失败。WB-BLOCKER-001-AC5完全访问 run 的审批项会自动通过且继续执行,不产生waiting_approval、审批事件或审批卡片。
WB-BLOCKER-002 搜索模式部分可检索目录 warning
- 系统行为:搜索模式下未索引的本地目录或文件可以作为
@候选被选择,但不会产生纯搜索结果;当搜索范围包含部分可检索目录时,界面提示搜索只覆盖其已索引子文件。智能模式直接进入 AI 运行,不展示索引耗时 warning。 - 验收:
WB-BLOCKER-002-AC1智能模式下,未完全索引参考资料不额外展示耗时 warning。WB-BLOCKER-002-AC2搜索模式下明确说明部分可检索目录只覆盖其已索引子文件。
WB-BLOCKER-003 上下文压缩过程提示
- 系统行为:当 AI 运行触发上下文压缩时,后端通过
assistant_process_group_started派发 compaction 过程组,assistant turn 展示“东西太多了,让俺整理下”;压缩完成后通过assistant_process_group_completed更新为“呼,终于整理好了,累死俺了”。 - 验收:
WB-BLOCKER-003-AC1收到 compaction 类型的assistant_process_group_started事件后,当前 assistant turn 中出现运行中的上下文整理过程组。WB-BLOCKER-003-AC2收到 compaction 类型的assistant_process_group_completed事件后,该过程组更新为完成态并展示完成文案。
8.7 右侧内容面板
WB-PANEL-001 面板状态切换
- 系统行为:右侧资源工作台默认折叠,折叠时不渲染面板 shell、不占主内容宽度,只在窗口右边缘保留展开按钮。资源工作台拥有独立于对话区的 44px 顶部标签栏和 44px 上下文工具栏;资源 Tab 支持文件和多个内置浏览器。顶部标签栏不使用底部边线,资源 Tab 溢出时支持触控板或鼠标滚轮横向滚动,激活 Tab 自动滚动到可见位置。搜索列表是临时内容,不创建 Tab。同一会话内继续发送消息时不清空已打开资源;切换会话时恢复目标会话自己的 Tab、活动内容和展开状态。
- 验收:
WB-PANEL-001-AC1打开文件时新增并激活对应资源 Tab;再次打开同一路径文件时切换并更新已有 Tab,不重复创建;从“打开文件”选择器选中文件后,选择器 Tab 被该文件 Tab 原位替换,不残留空的选择器 Tab;用户每次新增浏览器都会创建独立浏览器 Tab。WB-PANEL-001-AC2普通文件预览和同一文件的修改 diff 共用一个文件 Tab,后打开的状态成为该 Tab 当前内容,不产生两个同路径 Tab。WB-PANEL-001-AC3关闭活动 Tab 后由相邻 Tab 接管;关闭最后一个 Tab 后显示空面板;关闭非活动 Tab 不改变当前内容。WB-PANEL-001-AC4Tab 尾部+菜单只提供“文件”和“浏览器”;“文件”创建工作区文件选择标签且不弹系统文件选择器,“浏览器”创建新的空白浏览器标签;两个入口使用同色线性图标。WB-PANEL-001-AC5切换会话后恢复目标会话自己的资源标签、活动标签、浏览器导航历史和面板展开状态;目标会话没有已打开资源时恢复其搜索结果或空态。恢复过程中的异步数据刷新(如审核记录加载)只更新内容,不得把折叠态的面板重新展开;折叠期间刷新完成后,用户展开时直接看到最新内容。WB-PANEL-001-AC6展开态的折叠按钮位于右侧标签栏末端;折叠态只在窗口右边缘保留展开按钮。Windows 使用独立 36px 原生标题栏覆盖层,业务内容从该层下方开始;原生拖动区域只覆盖无交互空白区,资源标签、地址栏、侧栏切换、折叠入口和所有按钮均使用no-drag且不得被拖拽命中层覆盖。WB-PANEL-001-AC7资源 Tab 横向溢出后,鼠标纵向滚轮可转换为横向滚动;点击或新增活动 Tab 时,该 Tab 自动进入可见范围。WB-PANEL-001-AC8页面首次进入、新建会话和切换会话后,右侧 shell 不存在于布局中;点击文件、修改记录、搜索结果、浏览器入口或展开按钮后,以约 200ms 的宽度和位移动画滑入。折叠时先播放滑出动画,结束后再卸载并释放宽度。WB-PANEL-001-AC9折叠态展开按钮位于主标题栏右侧,展开后立即隐藏;展开和折叠按钮不得使用会撑大页面滚动范围的 portal tooltip,悬浮后页面不得出现额外横纵滚动条。WB-PANEL-001-AC10面板展开时宽度随窗口等比变化(约占窗口宽度 48%),拉宽窗口时面板与对话区同步变宽;折叠时宽度归零、多余宽度归对话区。
WB-PANEL-002 搜索结果打开规则
- 系统行为:搜索模式下右侧固定展示搜索列表与命中摘要;网页结果使用系统浏览器打开,本地结果在右侧切换为文件预览态,并提供返回按钮回到搜索列表;结果项整行本身不可点击,也不保留持续选中高亮,只有操作图标可触发动作。
- 验收:
WB-PANEL-002-AC1点击网页结果的打开图标时,不进入本地文档预览,而是调用系统浏览器打开;点击网页结果正文区域本身无动作。WB-PANEL-002-AC2点击本地结果的预览图标时,右侧进入文件预览态;点击返回按钮后恢复原搜索列表,结果项不显示持续选中态,且点击正文区域本身无动作。
WB-PANEL-003 文档查看与修改文件衔接
- 系统行为:文件预览态与修改文件工作区共用 44px 紧凑头部,但主体使用不同渲染组件;头部使用“工作区 > 目录 > 文件”面包屑。支持差异渲染的修改文件在面包屑旁展示当前模式 Tag:“审核”表示展示修改差异,“预览”表示展示修改后的干净文件;Tag 旁的切换图标负责在两种模式间切换。差异数量、修改状态和回退按钮只在审核模式展示,预览模式不得展示
+N -N、“已回退 / 已删除”或回退按钮。右侧工具栏不再保留旧模式切换按钮;“打开方式”组合按钮展示操作系统为当前文件注册的默认应用名称和图标,下拉展示操作系统返回的其他关联应用,并在列表底部使用分割线隔开放置纯文字“打开所在文件夹”。文件列表入口使用文件夹图标;普通预览和修改文件工作区中的文件列表从工具栏底部开始贴右悬浮,不挤压预览宽度,也不得覆盖工具栏交互。点击面板外部、按 Escape 或选择文件后关闭悬浮列表。“打开文件”初始空页面继续使用常驻文件列表。文件列表提供“全部 / 本次运行改动”切换:“全部”按目录懒加载,点击任何文件只打开正常预览;“本次运行改动”只聚合当前打开修改记录所属 run 的文件变化,点击后才打开该文件的审核模式。 - 验收:
WB-PANEL-003-AC1普通文件打开后,右侧除轻量工具条外全部用于文件预览;工具条提供系统打开方式,并通过其下拉菜单中的“打开所在文件夹”定位文件,不单独展示定位按钮。WB-PANEL-003-AC2同一轮 AI 修改存在多个文件时,用户点击不同修改入口会打开或切换到对应文件 Tab;每个文件 Tab 只展示当前文件的记录和预览。WB-PANEL-003-AC3PDF 搜索命中打开预览时,预览应保留整份 PDF 可滚动内容,并自动定位到命中 chunk 对应页,而不是只显示该页内容。WB-PANEL-003-AC4Markdown 使用专用预览;.txt、.log、代码、JSON、HTML 等严格 UTF-8 文件使用纯文本预览;解码失败的二进制文件不得误进纯文本渲染。WB-PANEL-003-AC5打开普通文本修改记录时使用独立文本 diff:每行只显示一个有效行号,删除行取旧行号,其余行取新行号;hunk 间以“N 行未修改”紧凑展示。WB-PANEL-003-AC6“N 行未修改”可点击展开真实未修改内容;展开数据来自修改时保存的不可变修改后行,不依赖之后可能变化的磁盘文件。WB-PANEL-003-AC7“全部”列表可标记当前会话内状态为applied的 AI 修改,但点击后仍只打开正常文件预览;可计算行数时显示+N -N,否则显示“已改”。WB-PANEL-003-AC8“本次运行改动”默认每个逻辑文件只显示一次,展示修改次数;文件恢复到本次运行基线后不再显示,删除文件仍保留修改入口。WB-PANEL-003-AC9同一文件存在多个 Run 修改批次时,默认展示最新批次;工具栏下拉使用用户请求摘要和时间切换历史批次,不展示内部 Run ID,也不把多个 Run 强制合成一份累计 Diff。WB-PANEL-003-AC10当前文件在“全部”和“本次运行改动”中都使用稳定浅灰选中态,并在切换后自动进入可见范围。WB-PANEL-003-AC11assistant turn 的“修改的文件”列表使用工作区/目录/文件路径;右侧文件预览工具栏继续使用工作区 > 目录 > 文件面包屑。WB-PANEL-003-AC12文本 Diff 行背景至少覆盖整个可见画布宽度;长行产生横向滚动时,新增、删除和上下文背景应延伸到完整可滚动宽度,不得在文件列表前留下无意义白块。WB-PANEL-003-AC13从修改文件入口进入修改文件工作区时,工作区文件列表默认关闭;用户点击文件夹图标后,列表从 44px 工具栏底部开始贴右悬浮并默认进入“本次运行改动”。悬浮层不得改变预览宽度或覆盖工具栏,点击外部、按 Escape 或选择文件后关闭。点击文件总分类或其历史记录时,必须按所选记录重新进入默认模式;未回退记录进入审核模式,已回退记录进入预览模式,即使所选记录 ID 与当前记录相同也必须执行重置。WB-PANEL-003-AC14当前修改记录同时具备修改后快照和差异内容时,面包屑旁展示“审核 / 预览”模式 Tag 及切换图标;docx、pptx、xlsx和普通 UTF-8 文本文件均支持该切换。普通文本的预览模式使用修改后快照并按文件扩展名渲染 Markdown 或纯文本,审核模式使用结构化文本 Diff;xlsx的预览模式展示正式工作簿,审核模式展示带单元格边框标记的工作簿。修改记录默认进入审核模式;切入预览或回退后,差异数量、修改状态和回退按钮全部隐藏。WB-PANEL-003-AC15macOS 使用 Launch Services,Windows 使用 Shell Association Handler 查询当前文件的默认应用和其他关联应用;默认应用始终排在下拉首项并标记“默认”。Renderer 只接收不透明应用 ID、名称和图标,不能提交任意应用路径;同一应用重复注册时必须去重,查询失败时仍保留系统默认打开的降级能力。WB-PANEL-003-AC16文件工具栏不单独展示“打开所在文件夹”按钮;该入口继续放在打开系统应用的下拉列表底部。工作区文件列表使用独立文件夹图标,收起时为透明按钮,展开后保持浅灰背景、边框和圆角,收起后选中样式立即消失。WB-PANEL-003-AC17没有专用 Diff 的 terminal 命令记录不得统一显示“没有专用预览稿”:重命名展示修改前后文件名并说明内容未变化,内容修改说明暂不支持应用内差异,新建、删除、预览失败和已回退分别展示对应状态。WB-PANEL-003-AC18右侧处于预览模式且展示真实本地文件时,必须监听当前激活文件的外部修改;路径不区分工作区根目录、子目录或<workspace>/.ncurator/runtime/assets/,范围覆盖所有当前支持应用内预览的文件类型,而非只限文本:PDF、DOCX、PPTX、XLSX/XLSM/XLTX/XLTM、PNG/JPG/JPEG/GIF/WebP/BMP/SVG、Markdown,以及严格 UTF-8 的 TXT、LOG、代码、JSON、HTML 等文件。检测到外部保存后自动读取最新磁盘内容并提示“检测到当前文件被外部修改,已自动刷新”。切换文件、关闭 Tab 或切换到审核模式后停止旧监听,窗口重新获得焦点或恢复可见时补检查;AI Run 执行期间及结束后短暂保护期内的写入只刷新不提示。审核 / Diff 模式使用固定快照,不监听或刷新源文件;修改记录切换到预览模式时必须展示并监听record.path的真实当前文件,而不是修改时快照。WB-PANEL-003-AC19任意受支持文件类型的 AI 修改记录处于applied状态时,通过系统默认应用或指定关联应用打开成功后,提示“如果外部应用仍显示旧内容,请关闭该文档后重新打开。”;该提示不按 TXT、DOCX、PPTX 或 XLSX 等扩展名区分。普通文件、失败记录、已回退记录和打开失败场景不得显示该提示。WB-PANEL-003-AC20DOCX、PPTX、XLSX、图片和普通文本专用工具已通过写入校验与前后 checksum 证明文件有效变化时,保存修改记录时立即保留该状态和快照;不得因目标位于.ncurator/runtime/assets而将成功记录改为失败。只有明确确认前后内容相同时才按无有效变化处理,不展示修改入口或固定错误条,仅临时提示“本次未检测到文件内容变化”。WB-PANEL-003-AC21DOCX 已有表格中的单元格文字或格式变化必须进入 Review Docx;内容替换在对应单元格内显示旧内容红色和新内容绿色,纯格式变化只高亮对应单元格,未变单元格不得被整表标记。变更数量按最终净变化单元格统计,修改后回读必须返回所属表格的真实内容。
WB-PANEL-004 内置浏览器面板
- 系统行为:每个浏览器 Tab 对应独立 Electron
WebContentsView,全部视图共享持久分区persist:ncurator-browser。该面板只服务用户手动开标签和browser_use;web_search的外网抓取使用独立隐藏 CDP host,不得复用或污染本面板。浏览器 Runtime、界面 Presentation 和 AI Automation 相互独立:切换文件、折叠右侧栏或切换会话时,只从主窗口显示树移除 View,不关闭webContents,不改变 AI 的 CDP target;重新显示时挂载同一个 View 并展示后台操作后的实时最终状态。浏览器导航栏提供后退、前进、刷新/停止、URL 输入、输入框内“前往”按钮和更多操作;浏览器更多菜单及新增标签页菜单使用主窗口原生子窗口承载自绘内容,覆盖在浏览器上方且不隐藏浏览器。 - 验收:
WB-PANEL-004-AC1收到 AI 浏览器面板事件后,右侧显示事件指定的浏览器 Tab;面板动画期间不逐帧缩放原生 View,动画结束后按最终 bounds 一次挂载并与正文视口对齐。WB-PANEL-004-AC2AI 通过browser_use的navigate动作传入 URL 时,右侧内置浏览器先导航到该 URL;extract / observe / act只作用于当前页面、不会跳转,需要切换页面时先调用navigate。WB-PANEL-004-AC3切换到文件 Tab、收起面板或切换会话时,浏览器 View 从主窗口显示树移除,不使用窗口外坐标停放;webContents、页面 JS、网络请求、Cookie、滚动位置、表单和 SPA 状态继续存在。WB-PANEL-004-AC4AI 浏览器任务完成后,assistant 最终输出应使用浏览器操作获得的结果完成用户诉求,右侧浏览器面板状态与最终回答形成可理解的任务闭环。WB-PANEL-004-AC5多个浏览器标签可以打开相同 URL;Stagehand 必须按浏览器 Tab 对应的 CDP targetId 精确选择页面,不得按 URL 猜测或串页。WB-PANEL-004-AC6浏览器标签共享 Cookie、登录态、LocalStorage、IndexedDB、Service Worker 和 HTTP 缓存;除非用户主动清除浏览数据,应用不得自动清空持久分区。WB-PANEL-004-AC7新增标签页和浏览器更多菜单使用无边框原生子窗口显示在浏览器上方;菜单打开期间浏览器保持原尺寸和可见状态,点击外部、按 Escape、主窗口移动或切换 Tab 时关闭菜单。WB-PANEL-004-AC8浏览器更多菜单的缩小、百分比、放大必须位于同一行且都可点击;缩放操作不关闭菜单,百分比可恢复 100%,系统浏览器打开入口位于分割线下一行。WB-PANEL-004-AC9地址为空时“前往”按钮禁用;地址非空时点击按钮或按 Enter 都导航到相同目标,按钮 tooltip 与无障碍名称均为“前往”。WB-PANEL-004-AC10内置浏览器自动化不得依赖固定 CDP 端口;旧端口9333或其他本地端口已被占用时,应用仍应正常启动并通过随机回环端口完成浏览器任务。WB-PANEL-004-AC11AI 在浏览器未显示时仍可按原 targetId 连续执行 observe、act、extract 和导航;恢复后必须直接显示 AI 操作后的最新网址、页面内容、滚动位置和表单状态,恢复前后webContents.id不变。WB-PANEL-004-AC12后台浏览器在应用运行期间不得自动销毁;仅应用退出、用户主动关闭浏览器 Tab 或删除所属会话时销毁。应用重启后按会话恢复标签顺序、URL、导航历史和缩放并按需重新创建;不承诺恢复页面 JS、内存滚动状态或未提交表单。
8.8 直接写回与回退
WB-APPLY-001 打开 AI 修改记录后的默认选中逻辑
- 系统行为:从 assistant turn 打开修改记录时,自动展开右侧面板并打开或激活对应文件 Tab,但工作区文件列表默认保持关闭;用户手动打开文件列表后默认进入“本次运行改动”,并选中当前文件。同一路径只保留一个文件 Tab。Docx 工具修改使用 Review Docx,普通文本记录使用结构化文本 diff。
- 验收:
WB-APPLY-001-AC1成功打开修改记录后,界面立即可见当前文件面包屑;若记录存在审核内容则默认进入审核模式并展示回退入口,切到预览模式后隐藏回退入口和差异信息。WB-APPLY-001-AC2在同一轮多文件场景下,点击哪个修改文件入口,右侧就加载该文件记录,而不是空白态或自动跳到其他文件。WB-APPLY-001-AC3用户点击 assistant turn 中的本轮“修改的文件”入口后,右侧应进入修改的文件工作区,并默认加载该入口对应的本轮修改记录。
WB-APPLY-002 AI 修改完成后直接写回
- 系统行为:受支持
docx、pptx、xlsx、图片生成和普通文本写任务完成后直接写回源文件或创建目标文件,并生成修改记录。普通文本支持创建、整篇改写、唯一片段编辑和全文精确替换;任一校验失败时不产生部分写入。各格式写入细节由 AI tool / live 回归覆盖(见doc/ai-harness/tool-design.md)。 - 验收:
WB-APPLY-002-AC1修改现有docx后,源文件立即变为 AI 最终净稿,assistant turn 展示本轮「修改的文件」入口。WB-APPLY-002-AC2新建docx后,目标文件立即存在,assistant turn 展示本轮「修改的文件」入口。WB-APPLY-002-AC3创建或修改普通文本文件后,目标文件立即更新并生成修改记录;运行期间不展示修改入口,收到run_completed / run_failed / run_cancelled后 assistant turn 才展示本轮「修改的文件」,右侧可查看由真实写入前后内容计算的文本 diff。answer_completed不视为 run 已结束。WB-APPLY-002-AC4普通文本edit的每个oldText必须唯一且互不重叠;replaceAll替换一个oldText的全部非重叠精确匹配;失败时文件保持原样。WB-APPLY-002-AC5同一次 AI Run 对同一个 pptx 的多次编辑只生成一条修改记录;PPT Diff 固定比较本 Run 第一次接触文件时的状态和 Run 完成后的最终状态。WB-APPLY-002-AC6创建或修改xlsx后,正式路径立即包含最终净工作簿并生成一条修改记录;同一次 AI Run 对同一路径连续编辑时保持首次写入前基线,不重复生成记录。WB-APPLY-002-AC7生成 PNG、JPEG 或 WebP 图片后,正式路径立即包含可读取图片并生成一条修改记录;同一次 AI Run 对同一路径再次生成时自动更新并保持首次写入前基线。
WB-TERMINAL-001 终端执行
- 系统行为:智能模式可通过终端在当前工作区执行命令;长命令可在运行中让出控制权并由后续读取续接;命令遵守审批与安全策略。绝对路径可访问工作区外文件,但工作区外变更不进入修改记录与回退。涉及数据计算、对账、统计等数值处理时,须通过终端真实执行计算,不得仅靠模型推算后直接写出结论文件。终端工具协议与并发/游标细节由 AI tool 回归覆盖。
- 验收:
WB-TERMINAL-001-AC3删除会话、取消所属 run 或退出应用不会遗留进程。WB-TERMINAL-001-AC4terminal 命令继续遵守审批与其他安全策略;不能访问其他会话的终端。WB-TERMINAL-001-AC7AI 涉及数据计算、对账、统计、求和、对比等数值处理时,必须通过 terminal 执行真实计算;计算结果由终端命令产出,对应变化按 terminal 修改记录处理。
WB-APPLY-003 回退本次 AI 修改
- 系统行为:受控文件工具写回工作区内文件时立即保存本次 run 的修改记录、有效变更校验和所需快照;terminal 每条命令执行前保存工作区基线,命令最终结束或失败后计算该命令窗口内的新增、修改、删除和重命名。终端记录归入发起命令的 run。不同 terminal 命令并发重叠时允许同一变化在多个 run 中重复记录;系统不加锁、不推断唯一归属。AI 可以读写工作区外绝对路径,但这些变更不进入当前修改记录与回退能力。AI 或用户在没有受控工具写回和 terminal 命令窗口时产生的外部变化不归入任何 AI Run。基线内容按 SHA-256 保存;文本 Diff 根据不可变的修改前后内容生成并缓存。回退使用修改前对象,不反向计算 Diff。
- 验收:
WB-APPLY-003-AC1未发生后续修改时,回退恢复写回前 checkpoint,记录状态变为reverted。WB-APPLY-003-AC2新建文件回退时删除 AI 新建目标文件。WB-APPLY-003-AC3回退成功后,右侧修改的文件工作区应刷新记录状态;普通文本历史 diff 继续保留并标记“已回退”或“已删除”,避免丢失本次修改记录。WB-APPLY-003-AC4终端通过 Shell、Python、Node 或其他程序造成的文件变化均由 Run 结束扫描捕获;终端修改的文本可生成普通行级 Diff,终端直接修改的 Docx 等二进制文件只提供修改前/修改后版本,不伪造语义审阅标记。WB-APPLY-003-AC5Docx 工具修改保存 before 和 Review Docx;Review Docx 继续由现有 Docx Renderer 渲染并保留段落、表格、图片、字体和页面结构。WB-APPLY-003-AC6PPT 修改记录使用 Diff Manifest v4,在审核模式提供固定的修改前后页面快照;旧 v3 记录明确提示格式过期,正式 PPT 不受影响。Excel 专用工具修改xlsx时在审核模式提供单元格边框标记,并可切换到预览模式。终端产生的二进制文件变化只提供修改前/修改后版本,不显示模式切换;终端产生的 UTF-8 文本变化按普通文本规则处理。WB-APPLY-003-AC7图片生成记录直接预览最终图片并提供回退,不显示不存在的图片 Diff;更新图片回退后恢复首次生成前的文件,新建图片回退后删除目标文件。WB-APPLY-003-AC8Docx Review 只展示本次 Run 初始文档到最终净稿的净变化;同一原始节点连续修改只显示一次原始红色版本和一次最终绿色版本,中间稿不得出现,改回原内容不产生修改记录;本轮新增节点只显示最终仍存在的绿色版本,新增后删除不产生净变化。WB-APPLY-003-AC9专用写工具的成功记录以工具原子写入结果、checkpoint 和前后 checksum 为权威依据;通用扫描匹配到同一路径时可补充快照,未匹配时不得否定已被校验的真实写入。
WB-APPLY-004 后续修改后的强制回退
- 系统行为:若回退时检测到当前文件与 AI 写回后的 checksum 不一致,先提示用户该文件已被后续修改,继续回退会丢失这些内容;用户确认后仍允许强制回退。
- 验收:
WB-APPLY-004-AC1点击任何可回退记录时先展示统一确认框“回退这次修改?”,说明文件将恢复到这次修改发生前的状态;用户确认后才发起回退。WB-APPLY-004-AC2检测到后续修改时,在统一确认之后继续展示“仍然回退这次修改?”风险确认;用户确认强制回退后,系统恢复 checkpoint 或删除新建文件。WB-APPLY-004-AC3强制回退完成后,右侧修改的文件工作区应刷新为最新记录状态,并让用户能确认回退已经生效。
WB-APPLY-005 同一轮多个修改记录入口保留
- 系统行为:同一轮任务若实际修改多个文件,assistant turn 保留本轮全部修改入口;点击入口后打开或切换到对应文件 Tab。每个入口直接展示该文件本次真实修改与删除数量,无需点击即可见,切换会话后依然保持。文件入口超过 3 个时列表默认折叠,只展示前 3 个,底部提供“显示剩余 N 个文件”展开入口,展开后该入口变为“收起文件”;头部总数始终展示完整数量。Assistant 最终回答只在修改文件区域展示文件入口。
- 验收:
WB-APPLY-005-AC1同一轮任务生成的多个修改记录都会出现在同一 assistant turn 的修改的文件列表中。WB-APPLY-005-AC2点击不同修改记录入口时,右侧会加载对应修改记录;有 diff 预览的记录展示对应预览稿,而不是按源文件跳到最新轮次。WB-APPLY-005-AC3同一轮多文件修改的全部入口保留在 assistant turn 列表中,不因切换当前文件而丢失其他文件的检查或回退入口。WB-APPLY-005-AC4修改记录入口未点击时即展示真实非零的修改/删除数量;切换会话再切回后不点击仍保持真实数量,不重置为 0。WB-APPLY-005-AC5文件入口超过 3 个时默认只展示前 3 个,列表底部展示“显示剩余 N 个文件”(N 为剩余数量);点击后展示全部入口,底部入口变为“收起文件”,再次点击恢复折叠;头部文件总数不受折叠影响。
8.9 PPT 创建、编辑与审核模式
WB-PPT-001 AI 创建和编辑 PPT
- 系统行为:AI 可通过 PPT 读写能力创建和编辑 pptx;写回成功后正式文件立即可读,同一次任务对同一路径聚合为一条修改记录。页面与元素级写入细节由 AI tool 回归覆盖。
- 验收:
WB-PPT-001-AC1AI 可自行新建 pptx,不依赖用户点击新建入口。WB-PPT-001-AC2新建演示文稿或插入页面时,单次调用只允许一张页面的元素规格,不接受页面数组或 HTML。WB-PPT-001-AC3文本、形状、线条、图片、表格、图表和公式按支持类型转换,不把整页默认导出为截图。WB-PPT-001-AC4AI 可继续编辑已有页面和元素。WB-PPT-001-AC5公式由 LaTeX 渲染为 SVG;公式整体可移动和缩放,内部字符为只读内容。WB-PPT-001-AC9一次编辑失败时,正式文件保持调用前状态。WB-PPT-001-AC10编辑返回成功时,其他程序已经可以读取最终 pptx。
WB-PPT-002 PPT 单页左右审核模式
- 系统行为:用户打开 pptx 修改记录后,主区域左侧显示当前页修改前画面,右侧显示同一页修改后画面;最右侧显示缩略图。点击缩略图或滚动时左右同步切页。主区域支持滚轮缩放与拖拽平移;未操作时底部居中显示「滚轮缩放 / 拖拽平移」轻提示,用户执行任一缩放或拖拽操作后永久隐藏。审核内容严格来自同一 Run 首个 baseline 与最终 PPT 的净变化;SVG 只用于展示,不决定变化语义。
- 验收:
WB-PPT-002-AC1主区域按左侧修改前、右侧修改后一次各显示一页。WB-PPT-002-AC2缩略图支持只看变化页和查看全部页两种图标模式,默认只看变化页。WB-PPT-002-AC3新增、修改、移动页使用绿色标记,整页删除使用红色标记,不显示“修改几页”等文字差异说明;已有页面只删除内部元素时,该页仍按修改显示绿色。WB-PPT-002-AC4新增页左侧为空;删除页右侧为空。WB-PPT-002-AC5点击缩略图或滚动后,左右主区域与当前缩略图保持同步。WB-PPT-002-AC6+N统计最终保留的新增、修改和移动单位,-N统计最终保留的删除单位。新增整页为+1、删除整页为-1、移动整页为+1,整页增删不重复统计内部元素。WB-PPT-002-AC7已有页面内新增元素为+1、删除元素为-1、修改或移动元素为+1;同一元素同时修改内容、样式、位置、大小或层级只计一次。页面移动并修改两个元素时为+3。WB-PPT-002-AC8插入或删除页面造成的自然页码变化不算移动;元素增删或置顶造成其他元素层级编号自然变化时,也不得把其他元素误算为修改。WB-PPT-002-AC9A→B→A、移动后移回、新增后删除等零净变化不生成记录;原元素修改后删除只计-1,新页面继续修改仍只计+1。WB-PPT-002-AC10审核模式使用固定 Diff 快照,预览模式使用干净的正式 PPT;正式文件不得包含 Diff 标记,回退按修改前 bytes 恢复。WB-PPT-002-AC11主区域滚轮缩放与拖拽平移可用;未操作时底部居中展示「滚轮缩放 / 拖拽平移」提示,用户执行任一缩放或拖拽操作后该提示永久隐藏。
8.10 Excel 读取、编辑与审核模式
WB-EXCEL-001 AI 读取和编辑 Excel
- 系统行为:AI 可通过 Excel 读写能力读取工作簿并创建或编辑
xlsx;读取支持xlsx、xlsm、xltx、xltm,写入只支持xlsx。Excel 不进入本地知识库单元格内容索引,只索引文件名、文档标题与工作表名等元数据。产品侧 Diff / 修改记录 / 回退由系统维护。读写 type 与字段契约由 AI tool 回归覆盖。 - 验收:
WB-EXCEL-001-AC3单次编辑失败时不产生部分写入;文件在连续编辑之间被外部修改时拒绝覆盖并提示冲突;无实际变化时不生成修改记录。WB-EXCEL-001-AC4xlsm、xltx、xltm可以读取但不能写回;拒绝写入时源文件保持不变,并明确说明是为了避免丢失宏或模板信息。WB-EXCEL-001-AC5Excel 创建或编辑成功后,正式文件中的值与公式可被其他程序立即读取,正式文件不包含审核模式使用的红绿边框。WB-EXCEL-001-AC6新建工作簿只包含显式创建的 Sheet,不自动生成Sheet1;最终至少保留一个 Sheet,删除最后一个 Sheet 必须失败。WB-EXCEL-001-AC7新增已存在的 Sheet、删除不存在的 Sheet、重命名到已存在名称都必须失败,且不写入部分结果。
WB-EXCEL-002 Excel 单网格审核模式
- 系统行为:用户打开普通 Excel 文件或
xlsx修改记录后,前端使用成熟的 Univer 工作簿组件分别预览正式 XLSX 和 Diff XLSX,不自行解析 OOXML 生成 HTML 表格。Excel 预览是只读预览:不允许编辑单元格内容,但允许切换工作表、滚动、缩放和拖动列宽查看内容。Diff 只展示本次 Run 首个 baseline 到最终工作簿的净变化;操作记录只用于识别 Sheet 和行的结构身份,不直接累加为最终差异。新增和修改单元格使用绿色中等粗细边框,删除或清空的单元格在 Diff XLSX 中保留修改前值并使用红色中等粗细边框。用户不使用 PPT 的修改前/修改后左右画面对比。 - 验收:
WB-EXCEL-002-AC1预览模式展示正式净工作簿,审核模式展示基于首次写入前基线生成的差异工作簿;两者均为只读预览,且均可切换工作表、滚动、缩放和拖动列宽。WB-EXCEL-002-AC2新增和修改单元格显示绿色中等粗细边框,删除或清空的单元格显示红色中等粗细边框并保留修改前值;未变化单元格不增加差异边框,正式工作簿也不带差异边框。WB-EXCEL-002-AC3同一 AI Run 对同一路径连续编辑后只保留一条有效修改记录,差异始终相对该 Run 首次写入前基线计算。WB-EXCEL-002-AC4回退已有xlsx时恢复写入前原始 bytes;回退新建xlsx时删除目标文件,修改记录状态同步更新。WB-EXCEL-002-AC5Diff XLSX 中新增 Sheet 的标签为绿色,删除 Sheet 以修改前完整内容恢复到 Diff XLSX 的原位置并将标签标为红色;恢复内容包括单元格值、样式、行高、列宽和合并单元格;正式 XLSX 不带这些差异标记。WB-EXCEL-002-AC6暂不定义移动 Sheet 位置的 Excel diff action;如果未来新增move_sheet,需要单独定义差异语义。WB-EXCEL-002-AC7插入或删除行时按逻辑行对齐生成联合预览:新增行只标绿最终新增内容,删除行在原逻辑位置保留旧内容并标红;其他仅因插入或删除而改变地址的原有行不得产生红绿边框,预览末尾不得生成重复行。WB-EXCEL-002-AC8同一 Run 中单元格、行或 Sheet 被多次修改时只保留最终净变化;改回 baseline、插入后删除、新增 Sheet 后删除均不产生红绿标记或变更计数;原始 Sheet 多次重命名只保留最终名称和一次重命名状态,不复制整张 Sheet 作为删除加新增。
8.11 图片生成
WB-IMAGE-001 AI 生成图片
- 系统行为:AI 通过
image-generation技能调用image_generate,以 SVG 内容作为内部绘制输入,根据目标路径扩展名生成 PNG、JPEG 或 WebP 图片。SVG 不作为额外用户产物写入工作区。 - 验收:
WB-IMAGE-001-AC1image_generate只接收outputPath和svg,输出格式由.png、.jpg、.jpeg或.webp扩展名决定。WB-IMAGE-001-AC2工具成功后只交付目标图片文件,assistant turn 展示该图片的修改入口,右侧面板可直接预览。WB-IMAGE-001-AC3目标路径已存在时自动更新;目标不存在时自动创建,不要求 AI 额外声明 action、format 或 overwrite。WB-IMAGE-001-AC4SVG 无法安全解析、渲染或编码,或输出格式不受支持时,工具返回错误且目标文件保持调用前状态;工作区外绝对路径可以写入,但不提供修改记录或回退。
8.12 应用内文本编辑
WB-EDIT-001 Markdown 与普通文本应用内即时渲染编辑
- 系统行为:右侧面板打开真实本地
.md/.markdown文件时,使用即时渲染(IR)编辑方式——文件内容渲染为排版预览,点击任意位置直接编辑文字;光标进入链接、加粗、行内代码等 markdown 语法元素时,该元素局部露出 markdown 源可编辑。标题元素前不展示 H1/H2 等标题级别标签(Vditor 默认::before标签)与#/##等标题源标记,标题不加额外装饰(无下划线),保持沉浸式排版;编辑区始终撑满右侧面板,不出现右侧灰色残留。编辑器不展示任何操作按钮、工具栏或交互栏,用户打开即可直接编辑。打开.txt及其他严格 UTF-8 普通文本(如.log、.json、代码、配置文件、无扩展名文本)时,使用与纯文本预览一致的纯文本编辑框直接编辑;纯文本内容(编辑态与只读预览态)每行前显示行号,行号随内容同步滚动。AI 修改记录的审核/预览态、预览弹窗以及 PDF/DOCX/PPTX/XLSX/图片等其他格式保持只读。 - 保存:不做显式保存按钮与"未保存"提示;每次内容变更后防抖(约 400ms)自动原子写入磁盘(
write-text-file,临时文件 + rename),并对内容做 UTF-8 合法性校验;纯文本保存时保留原文件的换行符风格(CRLF/LF)与 UTF-8 BOM。自动保存为纯覆盖,不做冲突提示。 - 外部修改:磁盘内容与编辑器最后成功写入的内容一致时不响应;空闲(无未保存改动)时检测到外部修改自动重载最新磁盘内容;编辑中存在未保存改动时不打断编辑,下一次自动保存覆盖外部内容。
- 范围边界:应用内编辑不生成 AI 修改记录、不进入回退体系;不限定只能编辑已绑定工作区内的文件,任意本地真实文件均可编辑。
- 验收:
WB-EDIT-001-AC1打开真实.md文件后直接进入即时渲染编辑态,无工具栏/操作按钮;点击任意位置光标落下,输入内容实时渲染并反映在编辑区。WB-EDIT-001-AC2光标进入链接等 markdown 语法元素时,该元素局部露出 markdown 源可编辑;离开后恢复渲染态。WB-EDIT-001-AC3打开.txt、.json、代码等严格 UTF-8 文本后直接进入纯文本编辑框,输入与保存内容一致,不出现 markdown 化改写。WB-EDIT-001-AC4编辑后无需点击保存,约 400ms 内自动落盘,磁盘内容更新为编辑结果;界面不展示保存按钮或"未保存"标记。WB-EDIT-001-AC5空闲时外部保存文件自动重载最新内容;编辑中存在未保存改动时外部保存被下次自动保存覆盖,不弹出冲突提示。WB-EDIT-001-AC6纯文本文件保存后保留原换行符风格(CRLF/LF)与 UTF-8 BOM。WB-EDIT-001-AC7AI 修改记录审核/预览态与预览弹窗中的 Markdown 仍为只读渲染,不进入编辑态。WB-EDIT-001-AC8应用内编辑保存不产生 AI 修改记录。WB-EDIT-001-AC9打开.md后编辑区撑满右侧面板(无右侧灰色残留);标题前不显示 H1/H2 等标题级别标签与#/##等标题源标记,标题无下划线等额外装饰;拉宽窗口后页面不白屏、编辑态保持。WB-EDIT-001-AC10纯文本内容(编辑态与只读预览态)每行前显示从 1 开始递增的行号,行号随内容滚动同步对齐。
8.13 定时任务
定时任务的入口、配置、启用与到点触发见 doc/prd/scheduled-task.md(ST-*)。Workbench 会话列表与「可用工作区」前置条件仍适用。
9. 非目标
- 不定义设置页中的工作空间、网页资料或模型配置行为。
- 不定义按钮尺寸、颜色 token、面板圆角等视觉风格。
- 不定义 AI 内部节点实现、prompt 结构、工具路由或工具 operation / schema / 结果信封细节。