Files
deepseek-harness/packages/experimental/client-ui-action-cards/README.zh.md
T
ZiyaZhang 30dafd2106 Merge feat/creation-recommendations into plugin recommendation experiment
Takes the card packages' new names and master up to e115cc98d65. The plugin
recommendation packages and their bundle rows now name
@deepseek-ai/dsh-action-cards and @deepseek-ai/dsh-client-ui-action-cards;
generated catalogs are regenerated, and both card Web fixtures record the
renamed bundles in their skills' plugin catalogs.
2026-10-22 20:58:11 -07:00

4.4 KiB

description, kind
description kind
可选操作卡片的浏览器端:已完成回答下方的卡片框架、供各实验包填入的正文注册表,以及 propose_action 调用的单行过程行。 package-reference

@deepseek-ai/dsh-client-ui-action-cards

English | 中文

概述

用户在已完成的回答下方看到一张可选操作卡片:标题、过长时会折叠的说明,以及提议该卡片的实验所提供的控件。在过程区中,提议显示为一行,带卡片标题和调用是否被接受;被拒绝的调用可以展开查看原因。如果实验在当前浏览器中没有提供控件,卡片只提供“暂不需要”。展示、展开和折叠卡片都不会发起模型请求。

目录


使用本包

启用个性化页面或插件推荐 Bundle,它们都会在本包旁插入对应的 Host 服务。本浏览器组件没有配置字段。

注册卡片正文

种类的浏览器插件注入 actionCards,并在自己的 ctx.effect 中注册正文:ctx.actionCards.register({ action, locale, Body }) 返回注销函数。框架为该动作的卡片渲染 Body,并传入:卡片、已记录或推导出的决定、会话 id、框架渲染的标题与折叠说明 summary、框架的折叠组件 Folded、绑定到该卡片的 act(verb, payload?),以及正文自己语言命名空间的翻译函数 t。正文把 summary 放进自己的布局,并负责自己的标题栏、控件、状态和底部操作。为同一动作注册第二个正文属于注册错误。


实现原理

实现细节——点击展开

一个 conversation.chat.turnTail 条目读取 actionCards 会话投影,在某一轮以最终回答结束后展示该轮接受的卡片;没有回答文本就结束的轮次不显示卡片,若同一轮有多张卡片,显示调用 id 最小的一张。框架把 data-action-card 设为调用 id,并以卡片标题命名所在区域。折叠时,宽字素(如汉字)按两个拉丁字母宽度计算,约 260 个单位后折叠;折叠不测量布局,也不改动完整文本。

一个以 propose_action 为键的 tool.call.toolview 条目,根据记录的调用参数和结果渲染过程行。插件在顶层提供正文注册表,然后挂载生成的 actionCards Remote,并在同一生命周期内注册词典和插槽条目。

源码 内容
src/client/mount.ts 注册表、Remote、词典与插槽条目
src/client/Card.tsx 轮次尾部、框架、折叠与兜底正文
src/client/ProposeRow.tsx 过程行
src/client/registry.ts 正文注册表与正文属性
tests/ 位置、框架、兜底、过程行与注册测试

延伸阅读

模型体验

间接影响来自 Host 卡片服务:卡片操作以 Remote 调用到达该服务,由它负责记录在日志中的工具、决定和状态通知。

KV Cache 影响

渲染卡片和过程行不会改变任何模型请求。

已知限制与后续工作

  • 动作没有注册正文的卡片只提供“暂不需要”,该实验的其他操作需要它的浏览器插件。即使该实验的 Host 插件已关闭,“暂不需要”仍然可用。
  • 轮次尾部每轮只显示一张卡片,与 Host 每轮一张卡片的规则一致。

开发备注

维护者工作背景——点击展开

无。