deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:EnkiduGilgamesh/dsh-codex-side-outline
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A Codex-style side outline for the DeepSeek Harness chat column. It extracts an outline of the current conversation and shows it as a thin rail along the left edge of the center (conversation) column, adjacent to the sidebar.
This is an installable bundle (dsh.bundle) that also ships a browser
(client) half (dsh.client), following the
official plugin guide.
| File | Purpose |
|---|---|
package.json |
Bundle + client manifests (dsh.bundle.patch, dsh.client). |
cordis.patch.yml |
The layer applied when a profile lists this bundle. |
index.js |
Host half — a no-op entry (browser-only plugin). |
client.js |
Browser half — the outline rail UI. |
src/conversation-outline.client.js is a retained reference copy of the
original process-local dynamic plugin, kept for provenance; it is not shipped
in the npm package.
Install from GitHub into the default web profile:
dsh plugin --profile web add github:EnkiduGilgamesh/dsh-codex-side-outline
dsh web
Or clone to a local directory first, then install from there:
git clone git@github.com:EnkiduGilgamesh/dsh-codex-side-outline.git
cd dsh-codex-side-outline
dsh plugin --profile web add .
Verify the layer before booting (optional):
dsh --profile web --dump-config # shows a "# == dsh-codex-side-outline" layer
⚠️ Restart required. The web app composes its client bundle roster at boot. After
dsh plugin add— or after editing this plugin's code — stop the runningdsh webprocess and start it again. A page refresh alone is not enough for a newly added or updated bundle to load.
shell.overlay (frame-wide floating layer). This keeps the rail
outside every column's scroll container. The rail's horizontal offset is read
from the frame's inline grid-template-columns via a ResizeObserver, so it
tracks sidebar drag / collapse / window-resize with zero-frame lag.sessions service (not the Host):useSessions((s) => s.current) (standard prop of shell.overlay) yields
the current session id;sessions.binding(id).session exposes an ObservableSnapshot whose
getSnapshot().nodes carries the folded ConversationNode[];user nodes contribute the question text (content text blocks), and
assistant nodes contribute the reply text (blocks of kind: 'text').session.loadOlder() so the rail
shows every turn without a manual "load more".seq is mapped to the chat node key via
snapshot.chat.nodes.values() (anchorSeq → key); clicking scrolls the
row carrying data-chat-anchor-key inside the [data-conversation-scroll]
scrollport.[data-trajectory-scroll] is present in
the DOM (i.e. the trajectory view is the active conversation view).<style> tag colored with theme CSS variables
(--dsw-alias-*), so light/dark modes follow the active theme.CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。