by myunwang
🐙 盯着 Claude Code 的桌面宠物:随 agent 状态变表情、弹消息气泡、一键授权,并统计 token 用量与花费。本地优先、MIT。
# Add to your Claude Code skills
git clone https://github.com/myunwang/LLMPETLast scanned: 7/25/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@electron/asar: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@electron/universal: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "app-builder-lib: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion: DoS via unbounded expansion length causing an out-of-memory process crash",
"severity": "high"
},
{
"type": "npm-audit",
"message": "dir-compare: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "dmg-builder: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ejs: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron: Electron has ASAR Integrity Bypass via resource modification",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron-builder: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron-builder-squirrel-windows: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron-winstaller: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "fast-uri: fast-uri vulnerable to host confusion via literal backslash authority delimiter",
"severity": "high"
},
{
"type": "npm-audit",
"message": "filelist: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "glob: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "jake: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "minimatch: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "rimraf: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "tar: node-tar: Uncontrolled recursion in mapHas/filesFilter allows uncatchable stack-overflow DoS via crafted long-path tar with member selection",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "temp: Vulnerability found",
"severity": "high"
},
{
"file": "README.md",
"line": 44,
"type": "secret-exfiltration",
"message": "Instruction appears to send credentials/secrets to an external endpoint",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-07-25T06:21:21.443Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}LLMPET is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by myunwang. 🐙 盯着 Claude Code 的桌面宠物:随 agent 状态变表情、弹消息气泡、一键授权,并统计 token 用量与花费。本地优先、MIT。. It has 113 GitHub stars.
LLMPET returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/myunwang/LLMPET" and add it to your Claude Code skills directory (see the Installation section above).
LLMPET is primarily written in JavaScript. It is open-source under myunwang on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh LLMPET against similar tools.
No comments yet. Be the first to share your thoughts!
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
LLMPET 是一个以桌宠为入口、本地优先的多 Agent 工作台。它把 Claude Code、OpenAI Codex 和 DeepSeek Harness 的会话放到同一个桌面层:看状态、找会话、回到原窗口、管理历史,也能把一项工作从一个 Agent 安全地交给另一个 Agent 继续。
桌宠仍然是 LLMPET 最直观的交互方式:它会随 Agent 的状态变表情(思考 / 干活 / 等你授权 / 完成庆祝 / 睡觉),把回复弹成气泡;但产品能力已经从“看 Agent 在做什么”,扩展到统一会话管理、跨 Agent 接管、本机归档与备份、用量诊断和可控的 Agent 行动。Claude Code 需要授权时,还可以直接在桌宠上一键允许 / 拒绝。
跨 Agent 的准确边界: Claude 与 Codex 之间不是共享一份原生 transcript。LLMPET 会在本地提取最近对话和当前 Git 工作区摘要,做密钥脱敏后生成临时交接单,再启动目标 Agent;交接单明确要求目标 Agent 重新核查文件、运行状态和失败路径。同一 Agent 内则使用官方 resume / fork。DeepSeek Harness 目前可作为交接来源,暂不作为接管目标。
LLMPET 已支持 DeepSeek Harness(CLI:dsh)。它会只读监听 dsh 自己的本机会话日志,把思考、工具调用、等待回复、完成、报错和上下文整理映射成桌宠状态;不要求安装 dsh 插件,也不会修改 Harness profile。
session.jsonl.zstd 与纯文本 session.jsonl,未知日志版本会 fail-closed,不猜格式。从 DeepSeek Harness / dsh 搜过来的?安装 LLMPET 后启动一次 dsh 会话即可被感知。觉得这只会汇报进度的鲸鱼娘有用,欢迎点一下页面顶部的 Star ⭐
23 张 GIF 覆盖 21 个状态键;working、loafing、sleeping 会在多张姿态间轮换。以下动画就是桌宠实际使用的仓库素材:
| 表情 | 状态 | 什么时候出现 |
|---|---|---|
| 🛠️ working 干活 | dsh / Claude / Codex 正在调用工具、执行命令或修改文件 | |
| 🤔 thinking 思考 | 一轮开始或首次工具调用前的推理 | |
| 💬 talking 回应中 | Agent 正在输出回复文本 | |
| 🤹 juggling 并行子任务 | 多个 subagent 同时工作 | |
| 🧹 sweeping 清理 | 压缩或整理上下文 | |
| ✋ waiting 等待授权 | 需要用户处理授权;也用于 sorry 的心虚状态 |
|
| ❓ needsinput 等待回复 | Agent 需要用户选择或输入;也用于 puzzled |
|
| 🔔 attention 看一眼 | 任务刚结束,需要用户查看 | |
| 🎉 happy 完成庆祝 | 一轮顺利完成;也承载 loved / excited |
|
| 👋 greet 打招呼 | 新会话启动 | |
| 💥 error 出错 | 工具、命令或 API 执行失败 | |
| 😭 sad 难过 | 负面反馈或失败情绪 | |
| 🍟 loafing 摸鱼 | 上一步结束、下一步还没开始的间隙 | |
| 🪑 idle 待命 | 当前没有任务 | |
| 🧳 roam 旅行 | 只读项目探索正在进行 | |
| 👀 lookout 看战果 | 探索完成后查看结果 | |
| 😴 sleeping 睡觉 | 会话结束或长时间没有活动 |
鲸鱼女仆是本项目的原创角色,与 DeepSeek 官方无隶属或代言关系。素材来源、制作流程与规格见 assets/whale/CREDITS.md。
| 能力层 | LLMPET 现在能做什么 |
|---|---|
| 桌面感知 | 用章鱼 🐙、像素怪兽 👾、月薪喵 🐱、鲸鱼女仆 🌊 四款皮肤呈现思考、工具执行、并行子任务、等待、完成和错误状态 |
| 统一会话层 | 汇总 Claude Code、Codex、dsh 的实时会话与本机历史;支持搜索、筛选、置顶、归档和回到原窗口 |
| 跨 Agent 接管 | Claude ↔ Codex 双向交接;dsh → Claude / Codex 单向交接;同代理使用原生 resume / fork |
| 本机档案馆 | 统一索引三类 Agent 的用户会话,过滤内部 subagent;可选增量备份,恢复时不覆盖仍存在的源文件 |
| 可控行动 | 一键处理 Claude 授权、发送表情包指令、发起只读项目旅行;所有主动任务都由用户明确触发 |
| 用量与诊断 | 展示上下文、额度窗口、真实 token 趋势、本机台账和可追溯的估算口径,不把本机数据冒充厂商账单 |
来源会话
├─ 目标是同一 Agent ──► 官方 resume;来源仍在运行时使用官方 fork
└─ 目标是另一 Agent ─► 最近对话 + Git 状态/差异摘要 + 来源标记
└─ 本地脱敏交接单 ──► 启动可见的目标 Agent 会话
0700、交接文件为 0600;启动成功后约两分钟自动清理,启动失败则立即清理。LLMPET 的状态机、计量、权限流、进程对账、会话归档和桌面 UI 都在本仓库实现。Claude Code 通过公开 hook 接口接入;Codex 与 DeepSeek Harness 默认只读监听各自的本机会话文件,不修改 Agent 配置。
贡献者
欢迎更多 PR!
| 表情 | 状态 | 什么时候出现 |
|---|---|---|
| 🛠️ working 干活 | 正在调用工具 / 改文件——4 张打工姿态轮换:拍「上号」按钮 / 熬夜冠军 / 捂耳猛敲 / 边吃边敲 | |
| 🤔 thinking 思考 | 提交提问后 / 工具间隙的长推理——思考姿态轮换:挠头 / 躺想浮云 | |
| 💬 talking 回应中 | Claude 正在输出回复文本(对着笔记本疯狂输出喵喵喵) | |
| 🤹 juggling 并行子任务 | 召唤 subagent 多线开工(趴键盘上还同时刷手机) | |
| 🧹 sweeping 清理 | 压缩 / 清理上下文(对手机喷消毒水) | |
| ✋ waiting 等你授权 | 需要你点「允许 / 拒绝」(抱着手机冒冷汗) | |
| ❓ needsinput 等你回复 | 需要你选择 / 输入(头顶冒问号挠头) | |
| 🔔 attention 看一眼 | 任务刚结束提醒你(从工位起身够手机看消息) | |
| 🎉 happy 完成庆祝 | 一轮任务干完(摸小猫的头夸夸) | |
| 👋 greet 打招呼 | 新会话开始(被闹钟炸醒弹射到工位) | |
| 💥 error 出错 | 执行失败 / API 报错(抱头崩溃大叫) | |
| 🍦 loafing 摸鱼 | 上一步干完、下一步还没来的间隙——摸鱼轮换:躺地刷手机 / 点外卖 / 奶瓶手机 | |
| 🪑 idle 待命 | 没有任务(转椅上冰淇淋+手机摸鱼) | |
| 🧳 roam 旅行 | 青蛙旅行正在进行:独立 agent 只读探索项目(撒腿跑着玩) | |
| 😴 sleeping 睡觉 | 会话结束 / 久无活动——睡姿轮换:被窝一坨 / 拔肚子毛当眼罩 |
Claude Code ──(生命周期 hook)──► octopus-hook.js ──HTTP POST /state──┐
──(PermissionRequest HTTP hook,阻塞)──► /permission ──┤
▼
┌──────────────────────────────┐
│ 本地 HTTP server (127.0.0.1) │
└──────────────┬───────────────┘
▼
会话状态机 (core) ── 适配器 ── pet:stats / pet:event ──► 桌宠/面板渲染
计量扫描 (metering) ── 读 ~/.claude transcript → 算 token & 花费 ─┘
~/.claude/settings.json 注册两类钩子(合并写入,不覆盖你已有的钩子,卸载会先备份):
SessionStart / UserPromptSubmit / PreToolUse / PostToolUse / Stop / SubagentStart … 触发 hook/octopus-hook.js,它读 stdin + transcript 尾巴,POST 一个状态包给本地 server(127.0.0.1:41330 起)。/permission 并挂起,等桌宠回 allow/deny。pet:stats 快照 + pet:event 事件)。~/.claude/projects/**/*.jsonl,按 message.id 去重统计每轮 token,乘模型单价算花费,喂详情面板。**「Claude 客户端消息」**指的是 Claude Code(CLI agent)的回复内容——
Stop时从 transcript 抽最后一段 assistant 文本(截断 + 密钥脱敏),对应桌宠的💬气泡。(不是 Claude 桌面聊天 App 的消息。)
除 Claude Code 外,桌宠也能盯 OpenAI Codex(CLI / Desktop):
Codex CLI / Desktop ──写 rollout──► ~/.codex/sessions/YYYY/MM/DD/*.jsonl
│ (codex-watch 增量 tail,只读)
▼
同一个