OpenViking
volcengine
Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:beijingwahw/dsh-conv-search
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English | 中文
In-conversation text search for the DeepSeek Harness web UI — the Ctrl+F you already know, scoped to the current chat session. A floating search bar highlights every match in the rendered transcript and walks between them, without touching a single line of harness core code.
<mark> nodes (which would mutate React-managed text and break reconciliation), the plugin paints ranges through the CSS Custom Highlight API — an overlay that survives every re-render and needs zero DOM cleanup.n / total counter with Enter (next) / Shift+Enter (previous) navigation and wrap-around; F3 / Ctrl+G work too, the browser/IDE find-bar convention.prefers-reduced-motion). Repeated Enter on no results re-shakes instead of staying silent.aria-pressed), so you always know whether search is active.--dsw-alias-* design tokens; Chinese/English UI picked from the document language.conversation.session.header.actions slot — the additive, unload-safe composition route.Requires Node.js ≥ 22 and pnpm (npm install -g pnpm) — dsh plugin add installs the bundle into the profile with pnpm.
dsh plugin --profile web add https://github.com/beijingwahw/dsh-conv-search/archive/refs/tags/v0.1.0.tar.gz
dsh web # restart the server to pick the plugin up
Tag URLs are immutable, so the tarball checksum never changes. (Branch URLs like refs/heads/main move with every push and trip pnpm's ERR_PNPM_TARBALL_INTEGRITY once a lockfile has recorded an older checksum.)
The package declares dsh.bundle.patch (mounts the host registration row) and dsh.client (serves the browser half at /plugins/<id>/client.js). lib/ is committed, so the GitHub tarball installs without a build step.
Verify the mount:
dsh --profile web --dump-config | grep conv-search
| Gesture | Action |
|---|---|
Ctrl/Cmd+F (or the header search icon) |
Open the search bar |
| Type | Search as you type (120 ms debounce) |
Enter / F3 / Ctrl/Cmd+G |
Next match (wraps) |
Shift+Enter / Shift+F3 / Ctrl/Cmd+Shift+G |
Previous match (wraps) |
ArrowUp / ArrowDown |
Browse previous queries |
Aa / ab buttons |
Match case / whole word |
Esc |
Close and clear all highlights |
src/client/engine.ts — pure DOM helpers: text-node walk, case-insensitive range matching, CSS.highlights paint (dsh-conv-search for all matches, dsh-conv-search-active for the focused one), and scroll-into-view. No cordis, no React — unit-testable against jsdom.src/client/controller.ts — the floating bar (plain DOM, so it never couples to the shell's React version), keyboard capture, debounced search passes, and the transcript MutationObserver that keeps highlights honest during streaming.src/client/index.ts — the cordis client half: installs the controller through ctx.effect and registers the header action button via ctx.slots.inject('conversation.session.header.actions', ...), so the button appears and disappears with the slot declaration and plugin fiber.src/index.ts — the host half is an empty registration shell; all behavior is browser-side.None. The plugin only reads the rendered transcript in the browser; it touches no prompt, message, schema, stream, tool, or provider request.
npm install
npm run typecheck # strict TS, no emit
npm run build # tsdown: host ESM + browser client bundle
npm test # vitest (jsdom): engine, controller, i18n
The client bundle enforces the harness purity rule: platform modules (react, cordis, the seeded client packages) stay externals, and any other @deepseek-ai/* value import fails the build.
top: 64px; right: 24px); it is not draggable yet.'pnpm' is not recognized during dsh plugin add → install pnpm first: npm install -g pnpm.EADDRINUSE ... :3080 on dsh web → a previous dsh web is still bound to the port. Stop it (Ctrl+C in its terminal; on Windows: Get-NetTCPConnection -LocalPort 3080 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }), or start on another port with dsh web --port 3081.MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: in-conversation-search。