dsh ↔ cc-pet 桌面宠物状态桥:把会话状态(思考中 / 读取文件 / 运行命令 / 完成)实时推送到桌面宠物气泡。npm 包名 `dsh-pet-bridge`。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-pet-bridge
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:wsxwj123/dsh-plugins#path:/packages/dsh-pet-bridge
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
dsh(DeepSeek Harness)↔ cc-pet 桌面宠物状态桥
让桌面宠物头顶的气泡实时显示 dsh 正在干什么——和 claude code / codex 一样的效果:
dsh 会话事件流 ──► pet-bridge 插件 ──► cc-pet HookServer (127.0.0.1:7779) ──► 宠物气泡
turn/start (挂在 dsh 进程里) POST /bubble dsh · 读取 README.md
tool/call
turn/end
这是给谁用的
本插件是 cc-pet 项目(桌面宠物)的配套:pet 本身不认识 dsh,这个插件在 dsh 侧监听会话事件、翻译成 pet 能懂的推送协议,把状态送到宠物气泡上。
- 前置条件:本机已安装 cc-pet(
/Applications/cc-pet.app,监听127.0.0.1:7779)+ dsh - pet 端代码不需要任何修改(HookServer 是通用接口)
- 本插件只装在 dsh 侧,卸载不影响 pet
气泡效果
| 阶段 | 气泡显示 |
|---|---|
| 回合开始 | dsh · 思考中… |
| 工具调用 | dsh · 读取 README.md / dsh · 运行 pwd / dsh · 搜索 xxx |
| 工具返回 | dsh · 已读 README.md(pet 自动转过去式) |
| 回合结束 | dsh · 完成(1.5 秒后消失) |
| pet 不认识的工具 | dsh · 运行中… |
安全边界
- 完整工具参数绝不上外发路径:只提取最小摘要(文件名 basename / 命令首词 / 搜索词,≤24 字符)
- 全部通信仅本机回环
127.0.0.1:7779 - 不读凭据、不碰文件系统、不改 pet 任何配置
- pet 没开时插件静默降级,不影响 dsh 任何功能
安装(dsh web profile)
# 1. 把本包 link 进 web profile 的依赖解析链
ln -sfn /path/to/dsh-plugins/packages/pet-bridge ~/.dsh/profiles/web/node_modules/dsh-pet-bridge
# 2. 在 ~/.dsh/profiles/web/package.json 加:
# dependencies: "dsh-pet-bridge": "link:/path/to/dsh-plugins/packages/pet-bridge"
# dsh.profile.bundles: "dsh-pet-bridge"(参照同仓 turn-scrubber 的部署方式)
# 3. 重启 dsh web 生效
⚠️ 不要在该 profile 里跑 pnpm install / dsh plugin add(会把官方 @deepseek-ai/* 包复制成物理副本导致工具调用全部报错,详见 ~/.dsh/AGENTS.md)。
配置
cordis 插件配置(默认值即可用):
{
"port": 7779, // pet HookServer 端口(仅回环)
"pollInterval": 250, // 事件轮询间隔 ms(>0)
"enabled": true // 总开关,false 时零推送
}
卸载
- 从 web profile 的 package.json 移除依赖与 bundles 条目
mv ~/.dsh/profiles/web/node_modules/dsh-pet-bridge ~/...(用 mv 保留可回退)- 重启 dsh web
测试
node --test --test-force-exit 'tests/acceptance/*.test.js' # 契约验收测试(43 条,快)
node --test 'tests/unit/*.test.js' # 白盒单测(26 条)
node --test 'tests/e2e/*.test.mjs' # 真实 cordis 环境 e2e(约 11 秒,改代码后必跑)
e2e 在真实 dsh headless 里加载插件跑任务(含真实模型调用),断言推送 payload 与 推送失败不崩——测试替身模拟不到的 cordis 语义(inject 约束、callable logger this 绑定) 由它把关。前置:本机 dsh 可用、
~/.dsh/profiles/node_modules/dsh-pet-bridgesymlink 存在。
工作原理(简版)
- 插件订阅
agent/created/agent/disposed事件,对每个会话按 250ms 增量轮询session.events - 事件映射:
turn/start→user、tool/call→pre(原始工具名 + 精简摘要)、tool/result→post、turn/end→stop、agent/disposed→stop(进程退出兜底) - 推送协议与 pet 内置 provider 完全一致(
POST /bubble,五字段 payload),pet 端自动复用它的气泡渲染
链接
同类插件
xmanrui/dsh-im★ 1583
通过二维码或机器人凭据将 IM 机器人接入 DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord 和 WhatsApp 共 9 种渠道)。
shaobeichen/dsh-pocket★ 1482
手机远程访问 DSH Web 界面:扫码即用局域网或公网(cloudflared 隧道)访问,实时同屏、移动端适配布局,带设置页管理。
inclusionAI/Avernet#deepseek-harness-channel-bcn★ 625
通过 WebSocket V2 将 DeepSeek Harness 接入 Avernet Bot 协作网络,支持自动注册、Agent 会话隔离、工具调用事件和多 Bot 路由工具。
omdsh-dev/dsh-notification★ 85
回合完成桌面通知,按结果分控 + 关键词过滤。
whyihaveyou/dsh-suite#plugin-notify★ 56
回合完成、错误或待审批时推送 IM webhook(飞书/企微/钉钉/Slack/Discord/自定义)与本地通知。
omdsh-dev/dsh-lark★ 55
DeepSeek Harness 的飞书/Lark 机器人渠道:每个会话驱动独立 agent,工具审批、模型提问与计划审阅都以卡片回到聊天,点按钮或直接回复即可作答;聊天里用 `/cd`、`/model`、`/new` 切工作区、换模型、重开会话,多个机器人各自独立并可在同群交接回合。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。