ccch1mneyyy/working-activity--packages-activity-working-activity ↗★ 659
dsh-working-activity
实时模型工作状态行,显示趣味文案、运行工具与耗时,支持 TUI 与 Web。 适合想在提示行查看模型工作状态的用户,TUI 需在模板加入 ${activity} 槽位。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ccch1mneyyy/working-activity#fcd911b41e2cc7d82aa3643500d4b14fb157911d&path:packages/activity/working-activity说明文档
阅读完整 README ↗TUI usage
Install the plugin into a profile that composes the official dsh-tui, then
add the ${activity} slot to the left prompt template in the profile's user
layer ($DSH_HOME/profiles/ /cordis.patch.yml):
- id: tui
config:
theme:
leftPrompt: '${cwd}${git/worktree}${activity}${model}${token_meter/cache_hit_rate}${context}'
While a turn runs, the prompt line shows e.g. dsh main 跑个命令 npm test · 12s deepseek-chat …; while thinking, 嗯…让我捋捋 · 总1m23s; after the turn, 搞定 ✓ · 4 工具 · 想12s 干11s briefly. Without ${activity} in the template, the plugin is inert in the TUI (the slot is unregistered values are omitted by the template renderer).
Web usage
The Web client renders the live line two ways, both fed by the activity/status events:
- The turn-level status label (
TurnStatus, formerly the static "Deep diving...") shows the live line while a turn runs, keeping its sweep animation. - A working-line dock entry (
WorkingLineonconversation.input.dock) renders the turn-end statistics (token/elapsed/tool summary) above the composer after a turn settles; live phases stay on the turn label.
Both fall back to the previous static label while the plugin is absent, so the Web UI is unaffected by disabling it.
Configuration
| Key | Type | Default | Meaning |
|---|---|---|---|
phrases | boolean | true | Playful copy pool; false renders plain functional labels |
publish | boolean | false | Append activity/status session events for UI consumers. Off by default: appended events currently make session logs unresumable (see note below) |
tickMs | number | 500 | Status render tick interval (100–5000) |
publishIntervalMs | number | 2000 | Minimum interval between published events while the line is stable (500–30000) |
detailLimit | number | 40 | Max displayed detail length (paths/commands/patterns), 8–120 |
customActions | object | {} | Exact tool-name → action-copy pools, e.g. {"my_deploy": ["部署一下", "上线中"]} |
narrate | boolean | true | Inject the ⏵ self-narration contract into the system prompt; the line is surfaced live and stripped from the chat body |