dsh-web-ui
zhu1090093659
Plugin and skin collection for DeepSeek Harness (DSH) Web UI - task board, git graph, right-side panel, remote mobile UI, pet, live token stats, and skin center.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:AiHeSa/ui-conversation-indexed
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English | 中文
An independent, unofficial fork of DeepSeek Harness's ui-conversation package. It preserves the original conversation surface and adds a responsive conversation index for navigating turns and rendered Markdown headings.
@aihesa/ui-conversation-indexedpackages/client/ui-conversation99f6f02fecdb7dff40c3fbc9470f5907c29f74caThis project is not affiliated with or endorsed by DeepSeek.

When the conversation container is at least 920px wide, a 224px sticky index appears on the right. The transcript contracts first to make room; when the readable width is no longer available, the index hides and the transcript returns to a single full-width column.
The index provides:
H1, H2, and H3 headings;prefers-reduced-motion;The index reads the existing rendered DOM instead of parsing Markdown again. This keeps GFM, math, streaming, and future Markdown behavior under the original renderer.
The cache-hit percentage is displayed with exactly two decimal places and is truncated downward rather than rounded:
90% becomes 90.00%;1 / 3 becomes 33.33%;2 / 3 becomes 66.66%.Integer arithmetic with BigInt is used to avoid floating-point rounding drift.
Every completed Assistant answer has a Regenerate response action immediately after Copy. Selecting it opens a compact popover where the user can add an optional clarification.
Ctrl+Enter or Command+Enter confirms; Escape, Cancel, and an outside click close the popover.The repeated prompt is admitted as a new queued turn. It does not delete, edit, or fork the existing conversation history.
The original conversation behavior remains intact, including the conversation skeleton, chat rows, composer, queue, approval UI, details shell, session statistics, tool slots, plugin slots, streaming behavior, and paging. The conversation controller is extended only with the prompt-replay path described above.
The index does not:
H4 through H6 headings;This repository is a DeepSeek Harness workspace package, not a standalone application. It is intended to be checked out under packages/client/ui-conversation-indexed in a compatible DeepSeek Harness source tree.
The source package has its own identity, @aihesa/ui-conversation-indexed, but its browser bundle deliberately registers under the established runtime module id:
@deepseek-ai/dsh-client-ui-conversation
That compatibility identity is required because existing Harness plugins depend on the original conversation module id. The Web bundle therefore aliases the original dependency to this replacement package. Only one conversation implementation must be mounted at a time.
package.json;packages/client/ui-conversation-indexed.This fork was prepared against DeepSeek Harness revision 99f6f02fecdb7dff40c3fbc9470f5907c29f74ca. Upstream is in developer preview and may introduce breaking changes.
Run the following from a fresh DeepSeek Harness checkout.
Using a Git submodule is recommended:
git submodule add https://github.com/AiHeSa/ui-conversation-indexed.git packages/client/ui-conversation-indexed
Alternatively, clone it directly:
git clone https://github.com/AiHeSa/ui-conversation-indexed.git packages/client/ui-conversation-indexed
Add the TypeScript path to tsconfig.base.json:
{
"compilerOptions": {
"paths": {
"@aihesa/ui-conversation-indexed": [
"./packages/client/ui-conversation-indexed/src"
],
"@aihesa/ui-conversation-indexed/*": [
"./packages/client/ui-conversation-indexed/src/*"
]
}
}
}
Add the project reference to tsconfig.client.json:
{
"references": [
{ "path": "./packages/client/ui-conversation-indexed" }
]
}
In both apps/cli/package.json and packages/bundle/web-app/package.json, add or replace the original conversation dependency with the same workspace alias:
{
"dependencies": {
"@deepseek-ai/dsh-client-ui-conversation": "workspace:@aihesa/ui-conversation-indexed@^"
}
}
Keep the existing ui-conversation Loader row unchanged:
- id: ui-conversation
name: '@deepseek-ai/dsh-client-ui-conversation'
The alias supplies this fork at that established module id. Do not add a second conversation Loader row.
The direct CLI alias is required because App Boot builds a flat installation fallback with first-resolution-wins semantics. Without it, another UI package that depends on the upstream conversation package can make the Loader resolve the original bundle even when web-app itself carries the alias.
From the DeepSeek Harness repository root:
corepack pnpm install
corepack pnpm exec tsc -b packages/client/ui-conversation-indexed/tsconfig.json --force
corepack pnpm --filter @aihesa/ui-conversation-indexed run bundle
corepack pnpm run build:web
corepack pnpm dsh web
Open http://127.0.0.1:3080/. On a sufficiently wide conversation, the index appears automatically on the right.
#, ##, or ### headings in Assistant Markdown output.No setting, database migration, API change, or remote configuration is required.
Commands are run from the parent DeepSeek Harness repository root.
# Type-check this package
corepack pnpm exec tsc -p packages/client/ui-conversation-indexed/tsconfig.json --noEmit
# Run the package tests
corepack pnpm exec vitest run packages/client/ui-conversation-indexed/tests
# Build the browser plugin
corepack pnpm --filter @aihesa/ui-conversation-indexed run bundle
The focused tests cover turn cards, H1–H3 nesting, H4 exclusion, click navigation, responsive visibility, destination marking, blank and supplemented regeneration, durable image replay, keyboard confirmation, and failure feedback.
The package began as a complete copy of upstream packages/client/ui-conversation. To update it:
ui-conversation against this package;ConversationIndex.tsx, its CSS module, index-related attributes, locales, responsive layout, and tests;This project is distributed under the MIT License. It contains code derived from DeepSeek Harness:
Copyright (c) 2026 DeepSeek;Copyright (c) 2026 AiHeSa.See LICENSE for the full license and NOTICE.md for attribution and the non-affiliation statement. Third-party dependencies remain subject to their own licenses.
None, as this package registers no hidden prompt or tool; its explicit regenerate control only re-submits the selected user prompt, plus any user-entered clarification, as an ordinary new turn.
The index and cache-hit display do not change provider requests. Regenerating repeats the original prompt content and therefore may reuse provider-side prefix caching, but cache behavior remains provider-dependent; a non-empty clarification changes the repeated request suffix.
H1, H2, and H3 headings are included.CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: ui-conversation。