渲染工具调用树状结构,通过 keyed slot 为每个工具提供自定义展示视图,支持 terminal、read、diff、search 等内置工具的呈现
ⓘ 此插件是大仓库 deepseek-ai/deepseek-harness 的子包,星数与活跃度统计的是整个仓库。
- 语言
- TypeScript
- License
- MIT
- 分支
- master
安装
$ dsh plugin --profile web add npm:@deepseek-ai/dsh-client-ui-tool在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 deepseek-ai/deepseek-harness/packages/client/ui-tool:先查看仓库 https://github.com/deepseek-ai/deepseek-harness 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
English | 中文
Client Tool presentation plugin. ui-conversation dispatches each ordered tool-call Conversation Node through the matching key of conversation.chat.node; this package renders its root and Code Dispatch children, then dispatches every atomic call through the keyed tool.call.toolview slot. Unregistered Tool names use the generic card.
Business UI packages register only their wire Tool names and atomic views. They do not pair Session events, rebuild the transcript, or own root/subcall topology. The Runtime remains authoritative for call/result pairing, lifecycle, and recursive subCalls projection; the conversation view remains authoritative for ChatFlow placement.
Rendering contract
ToolCallTree receives one root ToolCallBlock that already contains recursive subCalls, selection state, the session cwd, and Host callbacks for opening files and inspecting calls. It recursively walks the standard call blocks and sends the root and children at every depth through the same atomic dispatch path, without subscribing to a separate parent-to-children map.
Each root and child wrapper preserves the data-chat-anchor-key="call:<id>" and data-chat-call-id DOM contract used for paging and selection.
The package also fills conversation.details.tool with ToolDetails. The row and details renderers share the same pure card models for terminal, read, diff, search, and web render intents. Unknown intent tags and malformed wire card data fall back to flattened Tool result text.
Generic rows classify known Tool names into search, read, shell, write, edit, code, or generic variants. Running, successful, failed, and interrupted lifecycle states come only from the frozen call/result slice. File paths resolve against the session cwd only when the user invokes the Host open-file callback; presentation code does not read Session services.
Atomic Tool views
An owning business package registers its wire Tool name into tool.call.toolview:
ctx.slots.inject('tool.call.toolview', () =>
ctx.slots.register({
name: 'tool.call.toolview',
key: '<wire tool name>',
}, BusinessToolRow))
The owner payload is ToolCallOwnerProps: callId, toolName, the frozen block, optional cwd and home, and plain openFile/inspect callbacks. Path summaries relativize to the session cwd first, then replace a leftover POSIX host home with ~; filePath and Host open keep the authored filesystem path. The registration receives the normal session slot runtime share. It does not receive React nodes, Runtime services, or root/subcall knowledge.
This package currently owns the generic fallback and the built-in shell/pwsh, read, write/edit, grep/glob, web, todo, question, and Code Dispatch presentations. ui-skill demonstrates a business-owned registration for skill.
Card-specific limits and fallback rules remain in the owning terminal, diff, read, search, and web notes.
Model Experience
None, as this package renders already logged Tool calls and results without altering model requests, Tool execution, or session events.
KV Cache effect
None. The package is client-only presentation.
Known Limitations and Deferred Work
- The Host excludes
run_codefrom Code Mode program bindings, so production events produce one dispatch level; the recursive Runtime/UI contract supports nesting. - First-party Tool views are colocated here and can move to their owning business packages independently through the keyed slot.
- Tool copy reuses the
ui-conversationlocale namespace.
查看使用指南 →
该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。
收录徽章
[](https://deepseek-plugin.org/plugins/deepseek-ai/deepseek-harness/packages/client/ui-tool)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。