dsh-seeker-os
DeepSeek Harness 的对话体验增强套件:思考折叠、工具调用聚合、html/iu 卡片、对话截图与下载、消息撤回(文件与对话一并回退,含版本翻页),外加供应商中心、记忆/技能/连接器/画廊/档案七个工作台与 Personal Agent(主 Bot/子 Bot/群聊/期刊日记/通话;宿主侧 always-on 调度、DOST 式多消息与审批卡、按 owner 隔离的记忆引擎)。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Kr-ATG/dsh-seeker-os![]()
dsh-seeker-os
DeepSeek Harness 的对话体验增强套件
双栏执行大盘 · 可交互卡片 · Bot 团队 / 群聊 / 语音 · 记忆 · 档案 · 技能 · 同步

这是什么
普通 AI 对话界面只给你一个输入框和一个滚动条。dsh-seeker-os 把「AI 到底在干什么」摊开给你看, 再把记忆、档案、技能这些散落的东西收成一排工作台:
| 你在意的 | 装上之后 |
|---|---|
| 想知道 AI 干了什么,但不想看一屏工具日志 | 右栏双栏执行大盘,工具调用翻成中文人话 |
| 想让它直接给个能点的东西 | 正文里出 HTML 卡片(真跑 JS)与 iu 原生交互卡(滑块 / 表格 / 清单 / 看板 / 天气 / 行情 / 链接,共 15 种) |
| 想让它画架构图 / 流程图 | 手写内联 SVG,直接在对话流里渲染 |
| 想要一整个 AI 团队 | 主 Bot + 子 Bot + 群聊(成员真能互相看见上下文)+ 日记 + 语音通话 |
| 想让 AI 记住你的偏好 | 工作台记忆(按 owner 隔离,Bot 之间不串味) |
| 存账号密码 / 卡 / 证件,还要自动进上下文 | 工作台档案(端侧加密,明文不进模型上下文) |
| 换电脑不想重新配一遍 | 同步设置:记忆 / 档案 / 技能 / MCP / 密钥端侧加密推到你的 GitHub 私库 |
安装
dsh plugin --profile web add github:Kr-ATG/dsh-seeker-os
装完重启 DSH 即可。本包声明了 dsh.bundle.patch,dsh plugin add 会自动加进 profile 的
bundles 层,不用手改配置文件。
零 DSH 源码改动 —— 全部能力以 Cordis 插件注入,官方升级不动它。
安装 / 回滚请看 docs/INSTALL-TROUBLESHOOTING.md。 不要手工改 profile,也不要用定时 kill 重启当前 DSH。
适合谁
- 已经在用 DeepSeek Harness (DSH),觉得官方界面不够用
- 需要中文界面 + 中文人话的执行过程反馈
- 想把 AI 当团队用(多 Bot 协作、群聊、定时干活、语音通话)
- 关心数据在自己机器上:档案、记忆、密钥全部端侧存储与加密
目录
- 这是什么
- 安装
- 适合谁
- 你可能最想要的
- Seeker 视图:双栏执行大盘
- 正文里能出卡片
- Work 模式对话卡
- 对话读起来更顺
- 消息撤回:对话回到那条消息之前
- 对话完成胶囊
- 侧边栏:工作区 ⇄ 操作间
- Personal Agent(Bot 模式)
- 六个工作台
你可能最想要的
| 想要 | 在哪 |
|---|---|
| 看 AI 到底在干什么,但不想要一屏工具日志 | Seeker 视图右侧大盘;左栏只留一行「正在…」 |
| 让 AI 直接给个能点的小工具 / 可视化 / 演示页 | 正文里写 ```html 围栏 → HTML 卡片 |
| 让 AI 画流程图 / 架构图 / 时序图 | 正文里写 ```html 围栏,手写内联 SVG → HTML 卡片 |
| 快速取值换算 / 对比 / 清单,不要长篇大论 | 输入框发 /iu 开头 → iu 原生卡片 |
| 让 AI 知道「我现在开着什么」 | 输入框打 @ → 运行中的程序 |
| 给不会编程的人看「这轮做了什么」 | 右栏操作面板卡,中文人话时间线 |
| 跑完以后提醒我,点一下回到那条会话 | 对话完成胶囊(左下角小横条 / 顶部悬浮) |
| 这轮对话不想留了,想从那条消息重来 | 用户消息旁 ↶ 撤回(对话回退,项目文件默认不动;附件回填输入框) |
| 让 AI 记住我的偏好和身份 | 工作台记忆 |
| 存账号密码 / 卡 / 证件照片,还要能自动进上下文 | 工作台**档案** |
| 存 Clash 订阅 / 配置文件 / 证书,换机也不丢 | 工作台**档案** → 记录详情「文件」区(随云同步上传) |
| 换机后账号密码 / 记忆 / 技能 / MCP / 供应商与密钥 / 实时语音 Live 供应商 / 所有 Bot 设置一起跟过来 | 工作台**同步设置** → 勾选要漫游的资产,推自己的 GitHub 私库(端侧加密) |
| 管 API Key / 代理 / 生图模型 | 官方设置弹窗 → 供应商 |
| 搜索额度打满了,自动换一家继续搜 | 网页搜索降级链(AnySearch → Tavily → DeepSeek) |
| 想要一整个 Personal Agent 团队:主 Bot + 子 Bot + 群聊 + 日记 + 通话 | 侧栏顶部 Work / Bot 切到 Bot → Personal Agent |
| 一键开始 / 挂断 Bot 语音通话(全局热键) | 官方 设置 → 通用 → 快捷键 → 「语音通话(开始 / 挂断)」,默认 Ctrl+Alt+V;桌面壳下窗口没焦点也能按,在哪个 Bot 界面就通话哪个 |
| Bot 到点自己干活,不用我一直开着页面 | 右栏例行任务 / 主动询问,执行在宿主常驻进程里 → 多消息 |
| Bot 像同事一样分段汇报,而不是憋一大段 | 每条消息独立气泡,风险 / 待决策 / 待批准各是卡片 → 多消息 |
Seeker 视图:双栏执行大盘
会话头部标签栏多一个 「Seeker」(内部代号 KR),与官方「对话 / 轨迹」并列。点进去, 底层仍是官方 ChatView(多轮历史、虚拟滚动、Markdown、输入框全部原样),右边多一栏全高执行大盘。
┌─ 左栏(官方 ChatView)────────────┬─ 右栏 Seeker 大盘 ────────────┐
│ │ ┌ 子智能体 ────────────────┐ │
│ [你] … │ │ 固定 5 行,整行可点跳转 │ │
│ [AI] … │ └──────────────────────────┘ │
│ │ ┌ 操作面板 ────────────────┐ │
│ (Seeker 正在读取文件 ··· 12s) │ │ 头像 + 当前这一件事 │ │
│ ┌ 思考过程 ─────────────────┐ │ │ 默认收起,点开看完整流水 │ │
│ │ 贴在对话流里,跑时展开 │ │ └──────────────────────────┘ │
│ │ 收口自动折叠成一行 │ │ ┌ 任务 ────────────────────┐ │
│ └───────────────────────────┘ │ │ 只列本轮清单 │ │
│ │ └──────────────────────────┘ │
│ ┌ 最终回答(总结卡)─────────┐ │ ┌ 产出物 ──────────────────┐ │
│ │ │ 本次做出的文件,可点预览 │ │
│ │ └──────────────────────────┘ │
│ │ ┌ 记忆 ────────────────────┐ │
│ │ │ 钉在底部,默认折叠 │ │
└───────────────────────────────────┴──────────────────────────────┘
**为什么子智能体卡固定 5 行**:它顶在滚动区最上面、卡高与内容无关,所以紧贴
其下的「操作面板」永远停在同一位置 —— 子智能体多几个少几个都不会把操作面板
推走。没有子智能体时整卡不可见但位置照留(同样是为了不推动下面的卡)。
左栏干净:只有一行状态卡(头像 + 「Seeker 正在…」+ 末尾三点 + 用时读数)。工具明细不在这边堆。
切轮次入口:右键你自己发的那条消息,右栏大盘切到对应轮次;左键保持正常文本选择 / 复制,不触发大盘。
顶栏标签行位置:
Seeker排在官方「对话 / 轨迹」左侧、紧贴右侧工具区,是插件用一组order规则把标签行插到标题与工具区之间实现的(零 DOM 改动,官方按tabs.length增删 标签行时不会崩)。DSH0.2.1-rc.3给标签行外面多包了一层.tabs容器,旧规则全部打在 内层 tablist 上导致标题被挤到最右、官方「…」跑到 Seeker 左边 —— 已按新结构补规则,两版 选择器靠:not([role='tablist'])区分,rc.2 / rc.3 都能正常显示。

大盘设置:「Seeker」标签右侧有一枚齿轮按钮,点开在视口中央弹出设置卡片,里面是 「提示词通道」三条(对话内交互卡片 / 团队协作 / 通俗解释 ELI5)、 「任务清单」两条(任务清单纪律 / 回合结束自动收口)、「展示」四条(总结卡外框 / 工具调用卡 / 思考自动翻译 / 顶栏「更多」图标), 以及下方通栏的「工作区记忆」。齿轮与卡片 联动(再点收起、Esc 关闭、点遮罩关闭),改完立刻生效、刷新后保留。
2026-11-10 起「展示」组新增「顶栏『更多』图标」(默认隐藏):只隐藏官方 header 里 「统计」右侧那枚「更多会话视图」…(视图标签溢出兜底菜单)。文件夹、变更请求、 更多操作与右侧边栏图标都保留;只在 Seeker 视图生效,切回官方视图按官方原样显示。
2026-11-06 起「提示词通道」里的「中文优先」一行已删除:全局
~/.dsh/AGENTS.md本来就有一节「思考与输出默认中文」,面板这枚旋钮是重复的第二道闸门。 host 侧的记忆注入通道(/zh-inject-state、落盘字段zhInjectEnabled)一律保留, 记忆库里沉淀的中文偏好照常注入 —— 删的只是面板上那一个入口。2026-11-08 起「动效技能强制加载」整条能力已移除(用户要求):面板那一行、host 侧 注入通道(
MOTION_INJECTION_RULE)、状态字段motionInjectEnabled、端点/motion-inject-state与 config 默认值motionInjectDefaultEnabled一并删除。 它与「中文优先」不同 —— 没有更权威的全局基线替它兜底,留着一条默认关、又没有任何 入口的通道只会变成死代码,所以整条移除。需要动效规范时仍由模型的语义匹配自行加载harmonyos-motion技能。
卡片约 1000×512,排版在 2026-10-25 按「拥挤、排版不合理」重做过一轮:
- 上方两栏:左「提示词通道」3 行(对话内交互卡片 / 团队协作 / 通俗解释 ELI5), 右「展示」4 行 +「任务清单」2 行(任务清单纪律 / 回合结束自动收口), 中间一道发丝线。
- 任务清单组里的两行没有合并成一个开关:任务清单纪律往提示词里写一条行为约束(开工
先列、收尾清零),回合结束自动收口是 host 侧监听器(
agent/turn-stopping把残留的in_progress改写成pending),一个字都不进提示词。两者作用机理相反,绑成一个开关 会强迫用户做无意义的交易 —— 想关掉「末项别再转圈」就得连带关掉「清单纪律」。归到同一 组只负责「看起来归一类」。 - 下方通栏:「工作区记忆」独占一整条,带极淡底色与上方分隔线(不套卡片外框 ——
面板里再套一层圆角卡就是卡中卡,本仓库老坑)。它从右栏搬下来是因为三个性质都对不上:
它是列表(长度跟工作区数量走)、是唯一按工作区存的一组、行结构是「名称 + 路径 +
两枚迷你开关」横排 —— 挤在 392px 右栏里路径会被截成
D:\AI\E…,而路径正是「哪个工作区」 唯一无歧义的标识。 - 行内三列 grid:标签定宽 132px / 说明弹性 / 开关定宽 40px。原来是 flex,开关跟着文字 长度浮动,左右两栏停在两条不同的竖线上,扫「开没开」时每换一栏都要重新找位置。
- 说明常态一行:短句只讲「这一行与别行有什么不同」,共性提到组头右侧(「每会话首步 ·
存于 host」「本机浏览器 · 不进提示词」)。全文挂在
title上,鼠标悬停 / 键盘聚焦 / 触摸 点按任一方式都能展开 —— 是按需展开,不是删字。 - 窗口窄于 820px 回退单列;窄于 560px 时行降成两列(标签+开关一行、说明独占下一行)。
「工作区记忆」列出本机全部工作区,每个工作区两枚开关:记录(要不要往这个工作区攒新记忆 —— 关掉后不再自动提取、模型也不能手动记)与不注入(要不要把已有记忆读进它的会话)。 两件事语义相反、互不影响:关掉「记录」不影响已有记忆照常注入,打开「不注入」也不影响继续攒。 当前会话所在的工作区带「当前」角标与左侧主色竖条;列表限高可滚,工作区多了不会把下面顶出卡片。
右栏五张卡:
| 卡 | 讲什么 |
|---|---|
| 子智能体 | 整场会话派出去的独立会话,一行一个、整行可点跳到那个子会话。不按轮次切分(切到哪一轮都看得全);分两段、各带段标题——上面主色的「正在执行 N」(呼吸点 + 计数,无底色),下面带对勾的「已完成 N」折叠带(灰底、整条可点、带 chevron)。行首用形状图标分状态(进行中转圈 / 已结束对勾),状态同时留在 aria-label 与悬停说明里。固定 5 行窗口:卡高与内容无关,多出来的行在窗口内滚动(这是「操作面板位置恒定」的保证);没有子智能体时整卡不可见但占位保留,不会让下面的卡上移 |
| 操作面板 | 把工具调用翻成中文人话(「查看文件 KrAgentPanel.tsx」而不是 read_file(path=…))。卡头是三态透明 WebP 动图(无动作 / 生成中 / 执行中,160×160,由 /api/chat-flow/avatars/* 提供;加载失败回退内联 PNG)+ 「Seeker」+ 当前这一件事(新动作把它顶掉,最多两排,再长抹省略号),默认收起,点卡头展开完整时间线;卡头那行的耗时隐藏,明细行里的耗时保留。2026-10-30 起卡头改为紧凑横排:身份位左置、名字/状态右置,底部一条「N 个动作 · 展开/收起时间线」摘要行;2026-10-31 按用户要求把那块人物换成插件头像(原来 64×114 的任务动画在这张卡里撤掉了),卡头 160px → 约 110px;2026-11-03 再把当前动作从名字下方挪到名字右侧同一行(卡头读作一句「Seeker 正在查看文件 agent.ts」,首排与名字同高,超出部分折到第二排,两排还放不下才抹省略号);同一轮里把浏览器标志从名字右侧挪到名字下方竖排左对齐(卡头高度不变,仍 110px)。同一轮里新对话页 Hero 也一起换了、人物动画整条删除,见卡头头像。2026-11-05 再把静态插件头像换成三态透明 WebP 动图(无动作 / 生成中 / 执行中,路由 /api/chat-flow/avatars/*,加载失败回退内联 PNG)。措辞不出现程序、终端、命令行这类词,也不印「在电脑上操作」这类复述图标的话 —— 终端族只留对象(模型写的 description),行首图标已经说明是哪类动作(workflow → 「执行自动流程」)。2026-11-08 用户要求「操作面板的文字移动在这里进行实时显示」:把卡头右侧那句当前动作(含「在思考中 / 查看照片中」)整行移到底部摘要区,排在「N 个动作 · 展开 / 收起时间线」这条摘要行的上方实时显示;动作切换时做 160ms 淡入上移(按动作 id 判断换没换事,不按文案),卡头主体只留头像 + 名字(新对话页 Hero 卡头不受影响,动作行仍在名字下方);有动作时卡头约 126px、收口后回落到 110px。该卡不允许关闭(2026-11-03 用户要求移除那枚设置开关):它常驻右栏,没有关闭入口 |
| 任务 | 只列本轮 todo_write / 提交的计划,本轮没写就是空(发一条新消息不会挂着上一轮的清单)。只有回看历史轮次时才回溯到会话最近一次,并标注「会话清单」。空时整卡不显示(2026-10-28 用户要求「空的不要显示卡片」,右栏不留空壳) |
| 产出物 | 本次对话做出来的文件,整行可点,按类型分流:官方右侧栏能正常展示的(图片 / 文档 / PDF / Office / 表格 / 页面 / 音视频)就地进右栏看;侧栏展示不了的(3D 模型、压缩包、安装文件、avif/tif/heic)交给系统默认应用(Blender、解压软件、看图器)。没有产出、或核对后文件全都不存在时整卡不显示;多类产出按类别分组显示(网页(HTML)→ 音频 → 文档 → 图片 → 视频 / PDF / 演示 / 表格 / 3D / 压缩包 / 安装文件),卡头标注「N 项 · M 类」;每条显示具体产出时间,右键可「引用到对话框」或「使用系统默认程序打开」;子智能体会话的产出物自动并入主会话卡(行尾标注「子代理」) |
| 记忆 | 钉在底部;按需展开,只列本会话新增的条目(按写入来源判定,不按时间) |
思考过程卡贴在对话流里(不在右栏):左侧一条 2px 竖线,无底色无投影,跑时展开跟随、 收口自动折叠成一行让位给正式回答——回复落定后不再占屏,点标题行随时能再展开重读。
思考过程卡自动翻译(2026-11-06):把英文思考翻成中文,不用点按钮——每轮思考写完
(回合收口)自动翻一次,译好就直接显示译文。复用官方
@deepseek-ai/dsh-experimental-cot-translation-bundle 的翻译服务(匿名 Bing / Google
端点,或付费 DeepSeek Flash),但视图层是自绘的——官方那枚按钮挂在官方 ReasoningRow
的展开体里,KR 的思考卡不经过那条路径,所以不画就看不见。
行为口径:按官方上限(默认 4000 字符)分片串行翻;标题行右侧仍留一枚 ghost 文字按钮, 可在原文 / 译文之间来回切,也能在失败后点「重试」;失败保留原文并明说「翻译失败, 显示原文」。翻译结果按 Session 落盘(官方那套)+ 模块级本地缓存,重新展开直接复用, 不重复请求。长会话里几十张历史思考卡走全局串行队列,同一时刻只有一路自动翻译在跑, 不会一次打出请求风暴。
「展示」组里有一枚 「思考自动翻译」 开关(默认开):关掉后仍可手动点「查看译文」, 两条路并存。偏好存 localStorage,纯客户端表现偏好,一个字都不进提示词。
官方 bundle 需在 profile 里启用(
dsh plugin --profile web add @deepseek-ai/dsh-experimental-cot-translation-bundle),并在插件配置页选定翻译服务与 目标语言。没启用时自动翻译与那枚按钮都不出现(其余行为不变)。
与官方「设置 → 字号」联动:左栏思考卡 + 右栏五张卡的字号、行高、图标全部跟随官方字号设置。 字号 14(默认)时与你之前的观感逐像素一致,调大调小会一起变。
右栏被挤压时(窗口窄 / 记忆卡内容多),操作面板与记忆卡会自动缩一档。 「思考 / 产出物」等卡片各有独立开关。
卡头长这样(深色 / 浅色,截自 1440px 宽窗口的右栏):
![]()
卡头 Git 大盘入口
操作面板卡头上,头像右侧那排按钮里有一枚 Git 分支图标(在设置按钮旁边),
图标右上角还会挂一枚简约小角标(淡色小圆片,Git 用主色),直接显示 Git 大盘里有多少个仓库
(工作区 + 自制插件)有未提交改动(0 时隐藏,三位数折成 99+;一个仓库改 11 个文件也只算 1,
不是文件条数),把「现在还有几个项目没提交」直接摆在眼前。点击图标打开**「工作区与自制插件 Git 大盘」**
(GET /api/chat-flow/git-roster):把工作区本身和每个自制插件仓库各自的改动状况收在一张表里,
一眼看出哪个仓库有东西没提交,并可一键新建会话处理。有改动的仓库还提供「快速提交」按钮:
直接走脚本化 git add -A / git commit / git push(POST /api/chat-flow/git-commit,
提交信息可由 POST /api/chat-flow/git-commit-message 按真实 diff 生成),不新建会话、不打断当前工作。
卡头头像
右栏操作面板卡与新对话页 Hero 卡头,身份位从 2026-11-05 起都是三态透明背景 WebP 动图, 按「此刻在做什么」切换:
| 状态 | 何时显示 | 文件 |
|---|---|---|
idle | 本轮没在跑(无动作) | idle.webp |
generating | 正在调用生成类能力(生成图片 / 视频 / HTML / IU 卡片等) | generating.webp |
executing | 其余执行中(工具调用、思考中) | executing.webp |
三张图都是 160×160、透明底、动画 WebP,合计约 2.5MB,随包放在 assets/avatar/,
由 host 路由 GET /api/chat-flow/avatars/{idle,generating,executing}.webp 提供(只认固定
文件名表,image/webp,不接受任意路径)。响应带
cache-control: public, max-age=31536000, immutable;客户端 URL 带版本 query
(?v=,见 src/shared/avatar-assets.ts),换图只改版本号就能让浏览器重新取。
「生成类」判定在 src/client/kr-chat/plain-language.ts 的 isGeneratingStep():工具名命中
generate_image / generate_video / present 等,或产出文件是 .html / .htm / .svg。
状态推导与传参在 src/client/kr-chat/KrPlainTimelineCard.tsx(avatarState useMemo → SeekerHead)。
旧的内联 PNG(src/client/kr-chat/brand-avatar.ts 的 BRAND_AVATAR_SRC,128×128)只作降级:
旧宿主没有 avatar 路由、或动图加载失败(img.onError)时退回它,正常路径永远优先走三态动图。
深色主题适配:动图的深蓝头发与藏青裙装贴在深色侧栏上会「融进背景」,看起来像被调成了
半透明。深色主题下给人物身后垫一圈到 72% 就全透明的冷色径向光(不是矩形底色板),再对图本身
轻微提亮 / 加饱和 / 加对比;亮色主题不加这两层。Work 卡头在 src/client/kr-chat/styles.ts,
Bot 模式头像在 src/client/personal/base.css.ts,两边同一套口径。
尺寸由 CSS 分两档:Hero 96×96、右栏紧凑骨架 64×64,圆角都取边长的约 28% (方形圆角而不是圆形:原图是 256×256 的方形构图,裁圆会把两侧花束切掉)。
![]()
2026-10-31 之前这里是一套 9 段透明底 WebM 人物动画(按状态切换:思考 / 操作中 / 查看照片 / 收尾 / 完成 / 吃饭 / 观月 / 小憩)。用户先要求「操作面板的这个人物删除 替换为我们的插件头像」,再要求「新对话的也换上,之前那个人物彻底删除」—— 于是 播放器、片段表、状态判定、18 个素材文件、host 的
/api/chat-flow/motion路由、 以及view.task-motion/host.motion两个特性开关一并删除,两处卡头只剩一张静态 插件头像。那套动画之后又于 2026-11-05 换成三态透明 WebP 动图(见上)。
正文里能出卡片
流程图卡片(历史兼容)
早期版本用 ```diagram 围栏画流程图,要模型手工给出每个节点的坐标与折线点——
画歪是常态,且这个能力有独立开关、默认关,模型多半不知道它存在,常年闲置。
现在流程图 / 架构图 / 时序图 / 任何示意图,一律用 ```html 围栏手写内联 SVG
(见下一节)。iu 曾有的 graph / arch / sequence 三个图形 kind 已整块下线:
它们只能画算法排版的拓扑图,视觉上限被组件锁死,而图形恰恰最吃设计感。
能力文档随「html 卡片」通道默认注入,直接说「画个架构图」即可。
```diagram围栏的渲染器仍然保留:历史消息里的老围栏照常渲染成 SVG 卡片 (节点 / 连线 / 分支标注 / 三档比例),不会变成一坨 JSON。只是不再往提示词里注入 它的规范,模型也不会再主动产出——那个独立开关早已移除。
HTML 沙箱卡片(能跑真 HTML/JS)
```html
计数器
+1
0
let n = 0
document.getElementById('b').onclick = () => { document.getElementById('v').textContent = ++n }
```
对话流里出现的就是这张卡本身,没有任何常驻控件(2026-10-19 起把标题栏、源码/复制、 缩放、重载、全屏整组砍掉):卡片是正文的一部分,不是嵌进来的组件。 里面是真在跑的 HTML/JS —— 小工具、计算器、图表、可视化、单页原型都能直接交付。
内置设计系统(kit):正文里出现 k- 类名或 --k- 变量时自动注入,不写 CSS 也能
得到与宿主同一套视觉语言 —— .k-title / .k-lede / .k-h 排版,.k-num 等宽数字,
.k-rule 发丝分隔线,.k-kv 键值两栏,.k-grid / .k-cols 自适应多列,.k-bar /
.k-track 条状图元,.k-swatch + .k-a1~.k-a4 色标。尺寸全部跟随官方「设置 → 字号」
缩放(内部是 --k-scale),不写死 px。
内置交互(按需注入,不用自己写 JS):data-tooltip="…" 提示气泡(hover / 键盘聚焦 /
触摸点按,Escape 关闭);.k-tabs + role="tablist" 页签(点击与方向键已接管);
__dshState.set({…}) / __dshState.ready(fn) 把交互状态持久化,刷新不丢;
window.__dshFill(text) 把结果回填输入框,由你确认后发送。
安全:卡片跑在独立 iframe 里,只给 allow-scripts、不给 allow-same-origin ——
卡片里的脚本读不到你的会话数据与页面 DOM。高度自适应上报;点卡片里的链接会开新标签页。
流式期先出占位卡:模型逐字吐 HTML 时先显示「正在预渲染…」,围栏闭合后原地变成真卡片。
空内容、只有注释、语言标记不是精确的 html,都会回退成代码块(你能看到原文,
而不是一张空白框)。
这个能力默认开启 —— 它是交付形态本身,不注入模型就永远想不起来用。
iu 原生交互卡片
输入框以 /iu 开头,这条消息会连 /iu 一起原样发给模型,模型据此出卡。十五种:
| kind | 用途 | 样子 |
|---|---|---|
slider | 取值换算(按人数算用量、按面积算预算…) | 拖动滑块,右侧实时出各项结果 |
table | 数据行列 | 可排序表格:点表头切换升 / 降序;数字 / 金额 / 百分比列自动右对齐,表头小字、发丝线文档式排版 |
checklist | 待办清单 | 可勾选,带进度条 |
tabs | 方案对比 | 页签切换 |
kanban | 任务分列 | 拖拽看板:卡片可跨列拖动,也有点选 →「移到这里」的触摸 / 键盘通路 |
form | 收集输入 | 文本 / 数字 / 下拉 / 勾选 / 多行五类字段,必填项失焦才提示,填完一键回填输入框 |
timeline | 时间安排 | 竖向 / 横向时间线,节点三态(完成 / 进行中 / 待办),点击展开详情 |
diff | 前后修改 | 行级对比(自算 LCS),统一 / 并排两种视图,可只看变更行 |
tree | 层级结构 | 可折叠树,点箭头展开 / 收起子树 |
gauge | 完成度 / 指标 | 半圆仪表或圆环进度,可带阈值变色(绿 / 黄 / 红),最多 4 个并排 |
quiz | 考察理解 | 单选 / 多选自测卡,答题后揭示对错与解析,答完出得分 |
weather | 天气预报 / 生活气象 | 城市与实时大字号气温、晴雨矢量图标、气象指标小网格、出行建议、多日预报横列 |
quote | 行情 / 走势 | 超大当前价 + 涨跌色块(红涨绿跌)+ 迷你走势 sparkline + 开高低量指标格 |
link | 链接 / 出处 | 可点的链接条:来源徽标 + 大标题 + 来源域名与元信息 + 两行摘要 + 外跳箭头(title 是卡头短标签,heading 是正文大标题;只填一个时另一个自动回退) |
piano | 钢琴 | 点键或用键盘 A W S E D F T G Y H U J K 演奏,可把弹过的音写成音名+简谱回填输入框 |
标题不重复:卡头那行 11px 小字渲染的是
title。quote的name与link的heading在与 title 相同时正文会跳过——否则同一个名字会在一张卡上出现两遍 (parse 里 title 缺省回退成 name / heading,所以「只填一个」的写法最容易踩到)。
原生卡(不走 iframe)体积小、不白屏,还能把结果一键回填输入框由你确认后发送。 卡片状态会记住:勾过的清单、拖过的滑块、移过的看板卡片、切过的页签、填了一半的表