WeKnora
Tencent
Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:vincent-guo/dsh-loading-phrases
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English | 中文
Replace the "Deep diving..." running status in the DeepSeek Harness Web GUI with alternating witty phrases and practical tips — in the original position, with the original shimmer effect and the elapsed clock intact.
While a turn is running (the same condition under which the original status line appears):
zh → Chinese lists, otherwise English;aria-label, so assistive
tech announces real text changes instead of the CSS pseudo-element;Fail-safe by construction: the original text is hidden only while the plugin's script is alive. Any failure degrades back to the product's own status text.
dsh plugin --profile <profile> add @vincent-guo/dsh-loading-phrases
0.7.0 note: the npm package was renamed from
dsh-loading-phrasesto@vincent-guo/dsh-loading-phrases; the old name is deprecated on npm. Existing installs should switch the dependency and thedsh.profile.bundlesentry to the scoped name.
The package declares dsh.bundle.patch — a cordis.patch.yml at the package
root that inserts the loading-phrases row — so dsh plugin add reconciles
the profile's dsh.profile.bundles automatically and the row is composed
from the package itself. No hand-written load row is needed. For a local
checkout, pass the absolute path instead of the package name (or run
corepack pnpm add /absolute/path/to/dsh-loading-phrases inside the profile
directory).
Restart the profile process so the host half loads, then hard-refresh the Web GUI page (⌘/Ctrl+Shift+R).
If the package is installed as a plain dependency without bundle
reconciliation, add the load row manually to
~/.dsh/profiles/<profile>/cordis.patch.yml:
- insert:
- id: loading-phrases
name: '@vincent-guo/dsh-loading-phrases'
The plugin registers a Loading Phrases page in the GUI Settings (sidebar foot → Settings), styled with the official design-system primitives (selector pills, buttons, inputs), the shipped settings-row layout, and the Plugins- page heading/intro pattern. From it you can:
mode (alternating / witty only / tips only / off), the dwell
times (shown in seconds, stored as milliseconds), the no-repeat
switch, and the language policy — preference changes save themselves
(debounced, with a Saving…/Saved status) and apply immediately, no button
needed;The Open phrase config button (beside Save/Restore on the page itself)
opens ~/.dsh/dsh-loading-phrases.json in your default editor for bulk
editing; it is enabled after the first save creates the file. File edits
apply after a page refresh.
The user-owned config lives at $DSH_HOME/dsh-loading-phrases.json (usually
~/.dsh/dsh-loading-phrases.json) — machine-local and shared by every
profile, so it survives plugin updates. It is served by the host half and
read by the client on every page load; edits apply on the next refresh, and
settings-panel saves apply immediately. The package-root
dsh-loading-phrases.json serves only as a development seed and is never
written by the plugin.
{
"loadingPhrases": {
"mode": "all",
"wittyIntervalMs": 5000,
"tipsIntervalMs": 10000,
"shuffle": true,
"language": "auto",
"phrases": { "en": [], "zh": [] },
"tips": { "en": [], "zh": [] }
}
}
| Key | Values | Default | Meaning |
|---|---|---|---|
mode |
tips / witty / all / off |
all |
off yields entirely: the original Deep diving... stays untouched |
wittyIntervalMs |
number | 5000 |
Dwell time for a witty phrase |
tipsIntervalMs |
number | 10000 |
Dwell time for a tip |
shuffle |
boolean | true |
No-repeat rotation; false = random with replacement |
language |
auto / en / zh |
auto |
Force a language instead of following the GUI locale |
phrases, tips |
{ "en": [...], "zh": [...] } |
empty | Per-language overrides; a non-empty list replaces the built-in list for that language |
src/data/witty.json and/or src/data/tips.json
(en / zh arrays are independent content, not translations).node scripts/sync-data.js (or npm run sync) to regenerate the
data blocks in lib/client.js, then npm run check.lib/*.js)
require a web profile restart — bundle revisions only re-enter the module
graph through HMR or a restart.| Channel | EN | ZH | Source |
|---|---|---|---|
| Witty phrases | 49 | 24 | Derived from Qwen Code web-shell lists (Apache-2.0, see NOTICE.md) |
| Tips | 40 | 40 | Written against real DSH UI behavior |
dsh-loading-phrases.json default configuration (served by the host half)
cordis.patch.yml profile bundle patch (the loading-phrases row)
CHANGELOG.md release notes
NOTICE.md Apache-2.0 attribution for the derived phrases
LICENSE MIT license
lib/index.js host half (config HTTP route)
lib/client.js client bundle (DOM target, rotation engine, generated data)
src/data/*.json phrase/tips content (single source of truth)
scripts/sync-data.js regenerates the data blocks in lib/client.js
scripts/test-manifest.mjs distribution-manifest contract test
scripts/test-client.mjs client bundle behavior simulation
scripts/test-host.mjs host config route test
docs/design.md design baseline and decisions
The settings panel (v3), the profile-bundle distribution (v0.5), and the minimal-write save (v0.6) are delivered. No further milestones are planned; optional future work:
settings service
only if a concrete need appears (e.g. a DSH settings export/sync feature
users want this plugin's preferences to ride). See docs/design.md for
the decision record.MIT. Release notes: CHANGELOG.md.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: profile-bundle。