全部文档

操作助手「快捷一句」动态排序机制

操作助手面板底部的三个快捷一句按钮(点击后会切换到对应模块并发送一条预设提问)不应长期固定不变,而应随用户当前所在模块、是否已选工作区以及近期在助手里的对话内容变化,优先展示更可能下一步会点的入口。

来源 docs/core-mechanisms/工作区帮助快捷一句.md

目标

操作助手面板底部的三个快捷一句按钮(点击后会切换到对应模块并发送一条预设提问)不应长期固定不变,而应随用户当前所在模块是否已选工作区以及近期在助手里的对话内容变化,优先展示更可能下一步会点的入口。

用户侧感受:同一产品里,助手「猜你想接着做什么」会跟着场景变;实现上仍是本地、可解释的排序,而非黑盒模型。

信号与打分(可解释)

实现集中在 client/web/src/workspaceHelpQuickActions.ts,函数 pickWorkspaceHelpQuickActions(ctx, limit)

输入上下文 WorkspaceHelpQuickContext

字段含义
activeModule当前主界面模块(与左侧控制台一致)
hasWorkspace是否已选择工作区
messages操作助手内近期对话(取末尾若干条参与关键词匹配)

候选池中每条候选累加分数后排序,取前 limit 条(默认 3),且同一 nav 只出现一次

当前使用的特征大类:

  1. 模块互补

根据 activeModule 查表 MODULE_COMPLEMENT,对「更可能作为下一步」的其它模块加分;对当前模块对应候选略减分(用户已在该屏,优先推相邻任务)。

  1. 无工作区可达性

canWorkspaceHelpNavigate 一致:未选工作区时仅允许 chat / workspace / im / me。候选在打分前会先过滤,避免出现无法导航的芯片。

  1. 关键词命中

将近期消息拼成一段文本(小写),用多组正则匹配「工作区 / 技能 / 账号 / 助手 / 对话」等意图词,对对应 nav 加权。

  1. 会话深度

用户发言轮次较多时,略提高「接着对话」类候选权重,便于连续追问。

  1. 业务先验

例如:无工作区时略抬高与工作区创建相关的候选;有工作区时略抬高与技能相关的候选(具体数值见源码常量)。

同分情况下按固定 TIE_ORDER 稳定排序,避免界面抖动。

候选池与文案

候选在源码数组 CANDIDATES 中维护,每条包含 idnav、以及 label / prompt(可为函数,按 hasWorkspace 等切换,例如无工作区时「先建工作区」类文案)。

当前 nav 覆盖:workspacemeskillsagentsworkflowsappsimchat(另有模块类型 scheduled / cs 参与互补打分,候选池本身不含这两项)。未选工作区时仅允许 chat / workspace / im / me。实际展示条数由过滤与排序决定。

前端接入点

  • 排序与过滤pickWorkspaceHelpQuickActions()
  • 消费组件client/web/src/WorkspaceHelpWidget.tsx

使用 useMemo 依赖 activeModulehasWorkspacemessages,在面板内对话变化时重算三个按钮。

  • 传入当前模块client/web/src/App.tsxactiveModule 作为 props 传入 WorkspaceHelpWidget

扩展与替换(预测服务化)

若后续要接入服务端排序小模型

  1. 保持 WorkspaceHelpWidget 只依赖「得到最多 3 条 { nav, label, prompt }」的契约。
  2. pickWorkspaceHelpQuickActions 替换为异步数据源(例如 fetchQuickActions(ctx)),在加载完成前可继续沿用本地排序作为占位或骨架屏。
  3. 埋点建议:记录芯片 id/nav 的展示与点击,用于反馈调权或训练;可与现有 trackHelpActionEvent 体系对齐(见 帮助动作链接.md 中的扩展说明)。

相关文档