working-activity
Manifest valid★ 666Lively Working-line extension for pi CLI and DSH
working-activity
Bring the agent's "work status line" to life — real-time tool activity & progress, playful copy, model narration, and context warnings. The same idea, adapted for two platforms: pi CLI and DeepSeek Harness (DSH).
Author: chimney (@ccch1mneyyy). Community-made, not an official project.
The repo has two variants, pi and dsh; the two npm packages are published independently and each keeps its own install method.
Platform overview
| Platform | npm package | Source location | Install |
|---|---|---|---|
| pi CLI | pi-working-activity | extensions/ | pi install npm:pi-working-activity |
| DeepSeek Harness | dsh-working-activity | packages/activity/working-activity/ | dsh plugin --profile <profile> add dsh-working-activity |
Directory layout
extensions/ pi 版扩展(唯一源码,无构建)
tests/ pi 版测试
package.json pi 版包(发布 pi-working-activity)
packages/activity/working-activity/ DSH 版插件(发布 dsh-working-activity)
patches/webui-working-activity.patch DSH Web UI runtime 补丁
docs/dsh-working-activity.md DSH 版完整文档(原 dsh 仓库 README)
pi version
Bring pi's Working line to life — real-time tool activity & progress + playful Chinese copy + rare rainbow easter eggs + model narration + context warnings.
Features overview
🛠 Real tool activity
Listens for tool_execution_start / tool_execution_end, and the Working line shows in real time what is actually running — no fake spinners.
翻翻 src/index.ts
改改 package.json
跑命令 npm run build
搜搜 NARRATE_MIN_MS
📈 Real-time tool progress
Listens for tool_execution_update and prioritizes the percentage, stage, and status returned by the tool; for streaming output such as bash, it also recognizes common download, build, test, and deployment progress.
拉取模型权重 · 42% · 8s
跑命令 npm test · Testing integration · 12s
部署一下 staging · Deploying assets · 31s
Plain output won't be dumped into the Working line; only structured progress, percentages and recognizable stages get shown.
⏩ Fast-tool queue replay
Tools under 1.5s flash by too fast? Not here. Fast tools queue up and play at 1s each; the last one lingers 3s so you can actually see it.
💬 Playful phrase pool
While thinking, the Working line cycles 95 casual short phrases, about one every 2.6s — like a live person talking.
Hmm… let me sort this out → let me dig in → the brain's spinning → thinking.gif → chirp, let me think → lol → hang on, don't rush
Too long auto-shifts:
- 🕐 30s: spinning… almost there, hmm, let me really think
- 🕑 1min: still working hard… burning brains… this one's got some heft
- 🕒 5min: haven't given up yet… this is a real beast… I'm on my knees…
🎰 Rare rainbow easter eggs
With roughly a 1/150 chance (once every 6–7 minutes), the Working line bursts into a colorful shimmer that lingers for 7.5 seconds.
✦ S S R ! ✦ ✧ 金色传说 ✧ ✶ 你发现我了 ✶
Four effects layered: smooth hue gradient + brightness breathing + a highlighted streak sweeping L-to-R + rotating gold borders on both sides. Far better than 1.0's flat rainbow.
⏵ Model narration
On by default. The extension injects a convention via the context event: at each step's start, write ⏵ 你在做什么(≤20 字). The extension parses the stream in real time and shows the narration on the Working line. Disable with "narrate": false in config or /activity narrate off.
⏵ 查一下报错原因 → Working 行:查一下报错原因 · 搜搜 error.log
⏵ 给补丁跑个验证 → Working 行:给补丁跑个验证 · 跑命令 node test
📊 Real-time pacing
- Thinking:
嗯… · 总1m23s - Tool running:
改改 file.ts · 3s - After done: bottom status flashes
搞定 ✓ · 4 工具 · 想3s 干2s, and a notification pops at chat end⏱ 总用时 1m23s · 4 工具 · 想12s 干11s
⚠ Context warnings
Checks context usage every 3s. When the threshold (default 80%) is exceeded, the Working line glows yellow:
⚠ 上下文85% · 嗯… · 总1m23s
contextWarnAt: 0 disables it.
🔥 Combo detection
5+ consecutive tools trigger 火力全开×N (parallel tools count too). At 10+, closing shows 十连击.
⏱ Slow Tool Tips
A single tool over 30s lights up a 这个有点慢 · prefix.
⏳ Tool Time Remaining
When a tool reports a progress percentage, remaining time is estimated from elapsed time and completion ratio (supports percent / percentage / progressPercent / current/total):
拉取模型权重 · 42% · 还剩~11s
No percentage progress = no display; other info unaffected.
🌿 Git Branch Context
When a git operation is detected (tool names like git/gh, or git in bash-style commands), the Working line shows the current branch (cached 20s, fetched async without blocking):
拉代码 · main · 3s
Auto-hidden in non-git repos.
🌙 Time Awareness
- 0–6 点:思考池混入
修仙中…夜猫子出没熬夜冠军等深夜专属文案 - 周末:首次会话弹一句
周末也在卷?放假也陪你
🎨 28 Animation Presets
/activity opens an interactive picker, or /activity frames <name> switches directly:
claude braille moon comet spark breathe dots circle star2 flip aesthetic hamburger random …
😐 English Deadpan Humor
lol hm oh ok um heh uh nah mm wow nice rgrg done again gg ez
Mixed in among all the "hmm…", "dig in", "chirp", a deadpan English line pops out cold. That "I'm not even really laughing" vibe.
❌ Tool Failure Copy
Errors no longer just ✗; a random line appears:
翻车了 · 读文件 config.json ✗
权限不对? · 跑命令 npm i ✗
🤖 Sub-agent Counting
Running multiple sub-agents in parallel shows 小弟×N:
派个小弟 修测试 · 小弟×3 · 另 2 项
⚡ ~tok/s Streaming Rate
After enabling showTokPerSec: true, streaming token rate is estimated from text_delta character counts (mixed CN/EN):
~42 tok/s · 嗯… · 总1m23s
Pi's streaming events don't provide per-chunk usage, so this is a real-time estimate; the closing summary's token counts still use the actual usage returned by the model.
🎄 Holiday Easter Eggs
New Year, CNY, Valentine's, April Fools, May Day, Children's Day, Halloween, Xmas Eve, Christmas, NYE — auto-detected; holiday phrases mix into the pool, rendered with the same shimmer.
🔄 Model-Switching Jokes
When /model switches models, the Working line flashes a model-name-related quip for 1.5s, then returns to normal.
☕ Cumulative Activity Reminders
By default a reminder pops every 3 cumulative active hours, nudging you to drink water and rest. Only time when the agent is actually running counts; workRemindAt: 0 disables it, or change to a different interval (in hours).
💰 Cost & Token Accounting
At the end of each round (≥3s), the notification appends that round's cost and total token count, reading usage.cost.total as computed by Pi officially — matching your bill, not an estimate.
⏱ 总用时 2m12s · 15 工具 · 想 123s 干 6s · 💰 $0.087 · 🔥 34.2k tok
/activity stats shows more detailed breakdowns: round/session cumulative spend, cache hit rate, thinking tokens.
| Field | Source |
|---|---|
| 💰 Cost | Pi official usage.cost.total (includes cache discounts, tiered pricing) |
| 🔥 Tokens | input + output + cacheRead + cacheWrite |
| Cache hit | cacheRead / (input + cacheRead) |
| 🧠 Thinking | reasoning tokens (subset of output, not double-counted) |
🗜️ Context-Compression Awareness
Listens for the session_compact event; when context is compressed, a notification flashes briefly — completing the loop with context warnings: warn → compress → recover.
🗜️ 上下文已压缩 · 45.0k→12.0k tok · 腾出 73%
🗜️ 溢出自动压缩 · 45.0k→12.0k tok · 腾出 73% · 将重试
Compression call cost also accumulates into round/session stats.
🔧 Custom Tool Mappings
customActions lets you define copy mappings for your own tools/MCP, matched exactly by tool name (no regex execution from config):
{
"customActions": {
"my_deploy": ["部署一下", "上线中"],
"format_code": ["格式化", "整理代码"]
}
}
⚙ Interactive settings panel
/activity settings opens a searchable settings panel to adjust mode, animation, narration, rate, context threshold, active reminders, and all feature toggles in one place.
Panel top plays a live animation/copy preview using the current theme; each change persists instantly, no exit needed.
🩺 Built-in Doctor
/activity doctor runs one check:
- Config JSON parse & threshold validity
- Preset and animation structure integrity
- Feature key recognition
- RGB accent extraction from current theme
- Config dir/file read-write access
🎭 Dual Modes + Feature Flags
All fancy features optional. Master toggle:
/activity mode minimal → 只显示真实工具 + 计时 + 预警
/activity mode lively → 全套俏皮文案 + 彩蛋(默认)
Per-feature toggles (override mode defaults):
/activity feature → 列出所有特性状态
/activity feature rareEggs off → 只关彩虹彩蛋
/activity feature shimmer auto → 恢复跟随模式
Toggleable features: phrases (playful copy) rareEggs (rainbow easter eggs) nightPhrases (late-night copy) weekend (weekend greetings) holidays (holidays) combo (combos) failPhrases (failure copy) modelQuips (model quips) shimmer (starlight sweep) continuePhrases (interruption follow-up quips)
Installation
pi install npm:pi-working-activity
配置
~/.pi/agent/working-activity.json (auto-generated on first run):
| Key | Type | Default | Description |
|---|---|---|---|
frames | string | "moon" | Animation preset name; "random" picks one at random each round |
narrate | boolean | true | ⏵ model narration toggle (on by default; explicit false disables) |
contextWarnAt | number | 80 | Context warning threshold (%); 0 disables |
contextDangerAt | number | 95 | Context danger threshold; turns red beyond this |
showTokPerSec | boolean | false | Show estimated ~tok/s rate during streaming |
workRemindAt | number | 3 | Remind to drink water every N active hours; 0 disables |
customPhrases | string[] | [] | Custom short phrases appended to the thinking pool |
customActions | object | — | Custom tool→copy mapping, e.g. {"my_tool": ["搞一下","整一个"]} |
debugLog | boolean | false | Debug log (~/.pi/agent/working-activity-debug.log, auto-truncated >512KB) |
mode | string | "lively" | "minimal" keeps only functional info |
features | object | — | Per-feature toggles, e.g. {"rareEggs": false}, override mode defaults |
Commands
| Command | Description |
|---|---|
/activity settings | Open searchable settings panel with live animation/copy preview |
/activity doctor | Check config, theme, presets, and persistence permissions |
/activity | Open interactive animation preset picker |
/activity frames <name> | Switch preset directly, e.g. /activity frames claude |
/activity frames random | Random preset each round |
/activity narrate on|off | Toggle model narration |
/activity mode lively|minimal | Master switch: lively / minimal |
/activity feature | List all feature toggle states |
/activity feature <名> on|off|auto | Per-feature toggle; auto reverts to mode default |
/activity status | Show all current config values |
/activity warn <0-100> | Change context warning threshold; 0=off |
/activity danger <n> | Change red danger threshold; must be ≥ warn |
/activity tps on|off | Toggle streaming ~tok/s estimate display |
/activity remind <0-24> | Set active-reminder interval; 0=off |
/activity phrase add <文案> | Append a custom thinking phrase |
/activity phrase list | List all custom phrases |
/activity stats | Round + session stats: tools, think/work ratio, 💰cost, 🔥tokens, cache hits, thinking tokens |
/activity config export | Export current config JSON to working-activity.export.json in cwd |
/activity config import <路径> | Import config from file and apply immediately (auto-validated) |
How it works
- Extension appends a convention to that round's system prompt via
before_agent_start: "each step write⏵ 你正在做的事(≤20 字)" - Model writes
⏵ 查一下报错原因in its streaming output - Extension parses
text_deltain real time, extracts the latest⏵line and displays it on the Working line - Each LLM turn resets waiting state; narration shows for ≥2s, stays while streaming is active, falls back to normal copy after 5s of quiet
Copy style
- Chinese: short, colloquial, playful — no lecturing, no pretension
- English: deadpan cold humor, interleaved with Chinese copy for contrast
- Gaming memes (SSR, legendary gold, gg, ez) only appear in the rare easter egg pool (1/150 drop rate), not affecting daily use
DSH version
DeepSeek Harness's real-time "work status line" plugin: the model's live activity — playful thinking copy, tools actually running, elapsed time, closing summary — displayed in the Web UI and dsh-cc terminal while the agent works.
Installation
dsh plugin --profile <你的 profile> add dsh-working-activity
After installing dsh-cc-tui, install this plugin alongside it; the dsh-cc status bar consumes the activity/status event stream to render the work status line. The Web side requires an extra runtime patch — see the docs below.
Docs
- DSH version full docs (original dsh-working-activity repo README: features, mounting mechanism, config, known limitations)
- Plugin package README:
packages/activity/working-activity/README.md(English) andREADME.zh.md
Development
cd packages/activity/working-activity
pnpm install && pnpm run build # 构建(host tsc + client tsc,产物进 lib/)
pnpm run build:client # 构建浏览器 bundle(tsdown → lib/client.js)
pnpm test # 单测 + 集成测试(状态机/文案/自述/集成)
Known limitations
- Single status line: one per session; Web/terminal consumers show the most recently active session.
- No progress percentage: DSH has no tool progress events; long tools only show elapsed time.
publishis off by default: appendingactivity/statussession events currently prevents session log resume; only enable for hosts that support ignorable append (see plugin README for details).
Privacy & security
Neither version collects or uploads any data; no network requests, no telemetry. The pi version keeps its config and copy locally; the DSH version's activity/status is written only to local session logs (log-only events, invisible to the model, ignored on replay).
License
Root repo docs and pi version: MIT. DSH plugin package (packages/activity/working-activity/): BSD-3-Clause (see its package.json and LICENSE).
Compatibility
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.1.0 | — | — |
| 0.1.1 | — | — |
| 0.2.0 | — | — |
| 0.2.1 | — | — |
| 0.2.2 | — | — |
| 0.2.3 | — | — |
| 0.2.4 | — | — |
| 0.2.5 | — | — |
| 0.2.6 | — | — |
| 0.3.0 | — | — |
| 0.3.2 | — | — |
| 0.3.3 | — | — |
| 0.4.0 | — | — |
| 0.5.0 | — | — |
| 0.5.1 | — | — |
| 0.6.0 | — | — |
Comments
Loading…
Similar plugins
by TGYD-helige
Run trusted Pi extensions inside DeepSeek Harness through a compatibility host.
★ 4
↓ 60/wk
Apache-2.0
TypeScript
Sep 15, 2026
dsh plugin --profile web add dsh-pi-hostby GongYuanCaiJi
Excel / 工作簿读写 - @firstpick/pi-extension-workbook 的 dsh 移植
★ 0
MIT
TypeScript
Aug 15, 2026
dsh plugin --profile web add dsh-extension-workbookby weijiafu14
Bridge the Pi and DeepSeek Harness ecosystems: one Pi Host ABI runs unmodified Pi extensions as native DSH plugins. 打通 Pi 与 DSH 生态。
★ 214
↓ 573/wk
MIT
TypeScript
Oct 27, 2026
dsh plugin --profile agent add pi2dshby Modole
面向 DSH Agent 的 DAG 工作流创建、测试、发布和执行插件。
★ 0
MIT
JavaScript
Aug 15, 2026
dsh plugin --profile web add @laobos/dsh-workflowby february2015
Pi true-gateway plugin for DeepSeek Harness (DSH): /pi-lock direct connection to a durable Pi session — queued/steered conversation, live output, durable binding + auto-reattach. Personal fork of @dee
★ 0
MIT
TypeScript
Sep 3, 2026
dsh plugin --profile web add dsh-subagent-pi-plusby oxygenforce
Live done/now/next card above the composer while the agent is still working.
★ 0
MIT
JavaScript
Oct 25, 2026
dsh plugin --profile web add dsh-agent-activity