ccch1mneyyy/working-activity

working-activity

Lively Working-line extension for pi CLI and DSH

待分类deepseek-harnesspi-coding-agentpi-plugin

working-activity

面向编码 agent 的实时工作状态行。同一套设计维护两个平台适配,分别以独立 npm 包发布:

平台 · npm 包 · 源码 · 安装 pi CLI · pi-working-activity · extensions/index.ts · pi install npm:pi-working-activity DeepSeek Harness(DSH) · dsh-working-activity · packages/activity/working-activity/ · dsh plugin --profile add dsh-working-activity

作者:chimney(@ccch1mneyyy)。社区项目,非 DeepSeek 官方项目。

两个版本共享同一套状态行理念——实时工具活动、耗时、模型自述与收尾统计——但运行时、配置与安装方式各自独立。pi 版是无构建的 pi 扩展;DSH 版是 cordis 宿主插件,另带一个可选的 Web 客户端条目,覆盖 TUI、Web UI 与桌面 GUI 三个界面。

目录结构

extensions/                              pi 版扩展(唯一源码,无构建)
tests/                                   pi 版测试
package.json                             pi 版包(发布 pi-working-activity)
packages/activity/working-activity/      DSH 版插件(发布 dsh-working-activity)
packages/activity/working-activity-alpha2-compat/
                                         隔离的 DSH 0.1.2-alpha.2 兼容夹具
packages/activity/working-activity-rc2-compat/
                                         隔离的 DSH 0.2.1-rc.2 兼容夹具(peer 覆盖 0.2.0-rc.2)
patches/webui-working-activity.patch      历史 Web runtime 补丁(保留仅作历史参考,当前构建不使用)
docs/dsh-working-activity.md             DSH 版完整文档
docs/host-shape-audit-0.1.7-rc.2.md      DSH 0.1.7-rc.2 宿主形状审计(历史基线,含 0.2.x 附注)
docs/gui-compatibility.md               桌面 GUI 兼容性核查

快速开始

pi:

pi install npm:pi-working-activity

DSH:

dsh plugin --profile <profile> add dsh-working-activity

DSH 包是自挂载 bundle,安装后无需手动挂载。TUI、Web UI 与 GUI 读取 workingActivity 会话投影;Web 端不再需要 runtime 补丁。

pi 版

pi 版是 pi-working-activity 扩展的源码,直接由 pi 加载 TypeScript,无构建步骤。配置写入 ~/.pi/agent/working-activity.json,首次运行自动生成。

功能

实时工具活动

监听 tool_execution_start / tool_execution_end,Working 行显示当前真正在跑的工具:

翻翻 src/index.ts
改改 package.json
跑命令 npm run build
搜搜 NARRATE_MIN_MS

工具进度

监听 tool_execution_update,优先读取工具返回的百分比、阶段和状态;对 bash 等流式输出,识别常见的下载、构建、测试与部署进度:

拉取模型权重 · 42% · 8s
跑命令 npm test · Testing integration · 12s
部署一下 staging · Deploying assets · 31s

普通输出不会直接进入 Working 行,只展示结构化进度、百分比和可识别阶段。

快工具队列

执行时间不足 1.5 秒的工具不会被跳过:快工具排队逐个播报约 1 秒,最后一条粘留约 3 秒。

思考文案池

思考时轮换 95 条口语化短句,约 2.6 秒一换:

嗯…让我捋捋 → 盘一下盘一下 → 大脑转起来了 → 思考.gif → 啾,让我想想 → lol → 别催别催

长时间思考自动分档:

  • 30 秒:转圈圈…、马上马上、嗯,让我细想想
  • 1 分钟:还在努力…、烧脑中…、这题有点东西
  • 5 分钟:还没放弃…、这题真的硬…、我给跪了…

稀有彩蛋

约 1/150 概率(平均 6–7 分钟一次)显示炫彩流光文案,停留 7.5 秒:

✦ S S R ! ✦   ✧ 金色传说 ✧   ✶ 你发现我了 ✶

四层效果叠加:平滑色相梯度慢滚、亮度波浪呼吸、带下划线的高光从左扫到右、两侧金边花饰轮转。

模型自述

默认开启。扩展通过 before_agent_start 向模型注入约定:每个步骤开始时写 ⏵ 你在做什么(≤20 字)。扩展实时解析流式输出,把自述显示在 Working 行。可在配置中设 "narrate": false 或执行 /activity narrate off 关闭。

⏵ 查一下报错原因        →  Working 行:查一下报错原因 · 搜搜 error.log
⏵ 给补丁跑个验证        →  Working 行:给补丁跑个验证 · 跑命令 node test

配速与收尾摘要

  • 思考中:嗯… · 总1m23s
  • 工具中:改改 file.ts · 3s
  • 结束后:底部状态区显示 搞定 ✓ · 4 工具 · 想3s 干2s,对话区末尾通知 ⏱ 总用时 1m23s · 4 工具 · 想12s 干11s

上下文预警

每 3 秒检查一次 context 用量,超过阈值(默认 80%)时 Working 行变黄:

⚠ 上下文85% · 嗯… · 总1m23s

contextWarnAt: 0 关闭。

连击与慢工具

  • 连续 5 个以上工具触发 火力全开×N(并行工具计入连击);10 个以上在收尾时显示 十连击。
  • 单个工具超过 30 秒时加 这个有点慢 · 前缀。

工具剩余时间

工具回报进度百分比时,按已耗时与完成比例推算剩余时间(支持 percent / percentage / progressPercent / current/total):

拉取模型权重 · 42% · 还剩~11s

没有百分比进度的工具不显示剩余时间,不影响其他信息。

git 分支上下文

检测到 git 操作(git / gh 等工具名,或 bash 类命令里含 git )时显示当前分支,缓存 20 秒、异步获取、不阻塞渲染:

拉代码 · main · 3s

非 git 仓库自动隐藏。

时间感知

  • 本地时间 0–6 点:思考池混入 修仙中…、夜猫子出没、熬夜冠军 等深夜文案。
  • 周末:首次会话显示一句 周末也在卷? 或 放假也陪你。

动画预设

/activity 打开交互选择器,或 /activity frames 直接切换。内置 28 个预设,包括:

claude braille moon moon8 comet spark breathe dots circle star2 flip aesthetic hamburger whale-spout whale-spin whale-bubbles clock traffic_lights random 等。

英文冷幽默

lol hm oh ok um heh uh nah mm wow nice rgrg done again gg ez 会穿插在中文文案中。

失败文案

工具出错时不再只显示 ✗,而是随机显示一句失败文案:

翻车了 · 读文件 config.json ✗
权限不对? · 跑命令 npm i ✗

子代理计数

并行多个子代理时显示 小弟×N:

派个小弟 修测试 · 小弟×3 · 另 2 项

流式速率

showTokPerSec: true 后,按 text_delta 的中英文字符粗估流式 token 速率:

~42 tok/s · 嗯… · 总1m23s

pi 的流式事件不提供逐段 usage,因此这是实时估算值;收尾摘要中的 token 数仍使用模型返回的实际 usage。

节假日彩蛋

自动检测元旦、春节、情人节、愚人节、劳动节、儿童节、万圣节、平安夜、圣诞与跨年,思考池混入节日文案,并使用七彩流光渲染。

模型切换梗

/model 切换模型时,Working 行显示一句与模型名相关的文案,1.5 秒后恢复。

累计活跃提醒

默认每累计活跃 3 小时提醒一次休息。只有 agent 真正运行的时间计入;workRemindAt: 0 关闭,或改成其他小时数。

成本与 token 核算

每轮结束(≥3 秒)时在通知中追加本轮成本与 token 总量,读取 pi 官方核算的 usage.cost.total:

⏱ 总用时 2m12s · 15 工具 · 想 123s 干 6s · 💰 $0.087 · 🔥 34.2k tok

/activity stats 查看分项:本轮 / 会话累计花费、缓存命中率、思考 token。