๐ Octopus Pet
A coral-pink octopus desktop pet for mcode (MiniMax Code / Mavis) โ built as an agent-plugins.org v1.0.0 plugin.
mcode ๅฏๅจๆถ่ชๅจ spawn ็ซ ้ฑผ .app๏ผ14 ไธช"ๆๅทฅไบบ"ๅบๆฏ 8s ่ชๅจ่ฝฎ่ฝฌ๏ผๅๅปๅผนๆฐๆณกใๅณ้ฎๆธๅคด (+ไบฒๅฏๅบฆ)ใๆๅจๆขไฝ็ฝฎ๏ผ6 ไธช MCP tools ่ฎฉ mcode Agent ่ฟ็จๆงๅถใ่ทจ 8 ๅฎขๆท็ซฏ portable (mcode / Cursor / Claude Code / VS Code / Codex / Kiro / Antigravity / Gemini CLI)ใrepo ๆฌ่บซๅณๆไปถ๏ผbin/octopus-pet.bin ๆไบค่ฟ git๏ผclone ้ถๆๅปบๅณๅฏๅ ่ฝฝใ
็ถๆ (2026-08-18, ๆถๆ้ๆๅ)
| ้ถๆฎต | ็ถๆ | ๅคๆณจ |
|---|---|---|
| W1 D1 | โ ๅฎๆ | 14 spritesheet + 6 scripts + plugin ไธไปถๅฅ + GitHub repo |
| W1 D2 | โ ๅฎๆ | Tauri 2 scaffold + ้ๆ 192ร192 ็ชๅฃ + React mount + MCP stdio stub |
| W1 D3 | โ ๅฎๆ | XState 14 ็ถๆ FSM + 8s ่ฝฎ่ฝฌ + 14 spritesheet ๆธฒๆ + ๅๅป/ๅณ้ฎๆธๅคด/ๆๅจ |
| W1 D4 | โ ๅฎๆ | ๅๅฎไพๆไปถ + ็ถๆๆๅจๆถๆ (XState ๅฏไธๆๅจ, sync_state ้ๅๅๅ) + HTTP ๆญ้พไฟฎๅค |
| W2 | โ ๅฎๆ | Rust MCP server ๅฎๆดๅ (6 tools, 8 roundtrip tests, headless ็ดๅ) |
| W1.1+ | โณ | mcode ไปปๅกไบไปถ โ ๅบๆฏ ๆ ๅฐ (mcode ้ฉๅญ) / ๅค session ๅ ฑไบซ (UDS ่ฝฌๅ) |
| W3 | โณ | mcode ้ๆ้ช่ฏ (spawn โ ้ไฟก) + ่ทจๅฎขๆท็ซฏ portable ้ช่ฏ |
| W4/W5 | โณ | ไบคไบๆ็ฃจ + ๆง่ฝ (ๅฏๅจ < 3s, ไฝ็งฏ < 30MB) + GitHub release |
ๆถๆ (็ถๆๆๅจๆจกๅ, 2026-08-18 ้ๆ)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ mcode ๆก้ข็ซฏ (v3.0.65+) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Plugin loader (spec ยง6.1 ๅบๅฎไฝ็ฝฎๅ็ฐ) โ โ
โ โ plugin.json โ mcp.json โ command=./bin/octopus-pet โ โ
โ โ spawn ่ฟ็จ, args=[--mcp-stdio] โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ stdio (JSON-RPC 2.0) โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโ Octopus Pet (Tauri 2 + Rust) โโโโโโโโโโโโโโโโโโ โ
โ โ Rust ่ฟ็จ โ โ
โ โ MCP stdio โโโ โ โ
โ โ HTTP :9527 โโโผโ actions.rs (ๅฏไธ้ป่พ็น) โโ emit ไบไปถ โ โ
โ โ (dev-only) โ apply_show / apply_ask / apply_pet โ โ
โ โ โ โ โ
โ โ SharedState โโโ sync_state (invoke) โโโโโโโโโโโโโโโโโโโ โ โ
โ โ (ๅช่ฏป้ๅ) โ โ โ
โ โ โ โ โ
โ โ WebView (React 19) โ โ โ
โ โ XState FSM (ๅฏไธ็ถๆๆๅจ) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ 14 ๅบๆฏ 8s ่ฝฎ่ฝฌ ยท ๆฐๆณก ยท ไบฒๅฏๅบฆ ยท ไฝ็ฝฎ โ โ
โ โ ๅๅป/ๅณ้ฎๆธๅคด/ๆๅจ + 14 spritesheet ๆธฒๆ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๆ : Tauri 2 (Rust + React 19 + Vite 6 + XState 5)
็ชๅฃ: 192ร192 (= ็ด ๆๅฐบๅฏธ, ้ถ่พน่ท), transparent, no decorations, alwaysOnTop, skipTaskbar
็ถๆๆๅจ: XState (ๅ็ซฏ FSM) โ sync_state ๅๅ Rust SharedState ้ๅ;ๅ่ฎฎๅ
ฅๅฃ (MCP/HTTP) ๅช่ฐ actions.rs ๅไบไปถ
ๅบๆฏ: 14 (pretend-busy, stay-late, breakdown, lying-flat, multi-tasking, payday, salary-rejected, treat-milk-tea, friday-5pm, toilet-slacking, touch-fish, waiting-m3pro, soul-leaving, multitask)
14 ๅบๆฏ (verified 2026-08-18)
| # | ๅบๆฏ | OctopusScene | ๆๆก็คบไพ | ๅธงๆฐ |
|---|---|---|---|---|
| 1 | ๅ่ฃ ๅพๅฟ | pretend-busy | "ๅฟๆญปไบ" "ๆนๅฎ่ฟ็ๅฐฑไผๆฏ" | 141 |
| 2 | ๅ็ฌไธไผ | stay-late | "ๅ็ฌไธไผ" "ๅคๅฎตๆถ้ด" | 141 |
| 3 | ๆ่ฃๅผไบ | breakdown | "ๆ่ฃๅผไบ" "ๆฑๆไฟกๅท" | 141 |
| 4 | ๆ็่บบๅนณ | lying-flat | "ๆ็ไธญ" "ๅ ็ตๆจกๅผ" | 141 |
| 5 | ๅคไปปๅก | multi-tasking | "ไธๅฟๅค็จ" "5 ไธช tab" | 141 |
| 6 | ๅๅทฅ่ต | payday | "ๅๅทฅ่ต!" "ไปๅคฉๅๅฅฝ" | 141 |
| 7 | ๅทฅ่ต่ขซๆ | salary-rejected | "้ๆฌพไธญ" "็ณป็ปๆฝ้ฃ" | 141 |
| 8 | ๅฅถ่ถ | treat-milk-tea | "ๅฅถ่ถ็ฌฌไธ" "ๅ ็็ " | 141 |
| 9 | ๅจไบ 5 ็น | friday-5pm | "TGIF" "ๅจๆซๅฟซไน" | 141 |
| 10 | ๅธฆ่ช่นฒๅ | toilet-slacking | "่นฒๅไธญ" "ๅธฆ่ชไผๆฏ" | 141 |
| 11 | ๆธ้ฑผ | touch-fish | "ๅ่ฃ ๅจๅทฅไฝ" "็ฉ้ ไธญ" | 141 |
| 12 | ็ญ M3 Pro | waiting-m3pro | "็ญๆฐ็ต่" "ๆธฒๆไธญ" | 141 |
| 13 | ็ต้ญๅบ็ช | soul-leaving | "็ต้ญๅบ็ช" "ๆ่ฏๆผๆตฎ" | 141 |
| 14 | ๅคไปปๅก v2 | multitask | "ไธๅฑๆจกๅผ" "CPU ๆปก่ฝฝ" | 141 |
ๆฏไธช spritesheet = 13632ร384 px (71ร2 cells ร 192px, WebP lossy q80)ใ14 ๆไปถๆป 9.1MBใ
Spec ๅ่ง (per agent-plugins.org v1.0.0)
- โ
plugin.jsonๅจ plugin ๆ น (spec ยง5.1) - โ
plugin.jsonๅซ$schemaๅญๆฎต (spec ยง5.3) - โ
mcp.jsonๅจ plugin ๆ น (spec ยง7) - โ
mcp.jsonๅซ$schemaๅญๆฎต (spec ยง7.2) - โ
mcp.json.mcpServers[].type="stdio"(spec ยง7.2.1, closed union) - โ
ๆๆ plugin-relative path ไปฅ
./ๅผๅคด (spec ยง4.1) - โ
commandๆฏ single token, ไธๅธฆ shell metachars (spec ยง9.2) - โ
args/envๆชไฝฟ็จ spec ไปฅๅค็ๅ ไฝ็ฌฆ (spec ยง9.2, closed set: ไป${PLUGIN_ROOT}+${PLUGIN_DATA}) - โ
skills/octopus-pet/SKILL.mdๅซ agentskills.io frontmatter (name+description) - โ
ๆ ๅฎขๆท็ซฏๆฉๅฑ (
extensions/ reverse-domain ็ฎๅฝ), ไฟๆ่ทจๅฎขๆท็ซฏ portable (spec ยง8 ๆฏ OPTIONAL)
16/16 lint checks pass (scripts/lint-octopus-plugin.sh)ใ
ๅทฒ็ฅ V1 ้ๅถ (็ V2 ๅข้)
- ๅๅฎไพ only (tauri-plugin-single-instance): ๅค mcode session ๅบๆฏไธ, ้ฆไธช session ๅฏๅจ็็ซ ้ฑผ .app ่ตขไบ, ๅ็ปญ session ็ .app ็ซๅณ่ขซ kill, ๅ็ปญ session ็ MCP tool call ๅคฑ่ดฅ (ๆฒกๆ stdio ๆฅ). ็ๆญฃ็ๅค session ๅ ฑไบซ็ V1.1+ (่ตฐ Unix domain socket ่ฝฌๅ).
- RGB ๆ alpha: 14/14 ๅบๆฏ PNG ๆฏ 720ร720 RGB (่ๆฏๆฏๅฎ่ฒ), ไธๆฏ้ๆ. Tauri ้ๆ็ชๅฃ้็ซ ้ฑผๆพ็คบๆ RGB ็ฉๅฝข, ไธไผ่ทๆก้ข่ๅ. V2 ็จๅพๅๅๅฒ / chroma key ๅ alpha.
- 141 ๅธง (3ร ่ฎกๅๅผ): ็ถๆๆบ 8s ่ฝฎ่ฝฌไผๅๆชๅๆขๅบๆฏ (ๅๅพช็ฏ ~11.75s). V1 ๆฅๅ, V2 ่ฐๅธง็.
- mcode ไบไปถ โ ็ซ ้ฑผ ๅ็ถๆ ไธๅ: mcode ๆๆถๆฒกๅฅฝ้ฉๅญ, V1 ็ฎๅ timer ่ฝฎ่ฝฌ. V1.1+ ๆฅ mcode ้ฉๅญ.
- macOS only: V1 ไธๆฏๆ Windows / Linux. V2 ๅข้.
- ้ณ้ขไธๅ: ๆธๅคด/ๅ็ถๆ ้ณๆ V1 ไธๅ, V2 ๅข้.
- ้ผ ๆ ๅณ้ฎ่ๅ ็ฎๅ: V1 ๅชๆ"ๆธๅคด", ๆฒกๆ"่ฎพ็ฝฎ/้ๅบ/ๅ ณไบ". V2 ๅข้.
- ๅผๆบ่ชๅฏ ไธๅ: V1 ไธๅ, V2 ๅข้.
- ๅคๅฑๅน / ้ผ ๆ ็ฉฟ้ ไธๅ: V1 ไธๅ, V2 ๅข้.
ไปๅบ็ปๆ (ๅๅ็ฑป)
็ปไปถ้ข = spec ๅฅ็บฆ (ๆไปถ่ขซๅ็ฐ/ๅ ่ฝฝ) ยท ๅผๅ้ข = ๆบ็ (่ฟ git) ยท ไบง็ฉ้ข = ๆไบค็่ฟ่ก็ฉ (repo ๅณๆไปถ) ยท ไธญ้ดไบง็ฉ = ๅฏ้ๅปบ (gitignored)
| ๅ็ฑป | ็ฎๅฝ/ๆไปถ | ่ฏดๆ |
|---|---|---|
| ็ปไปถ้ข | plugin.json / mcp.json / skills/ / bin/octopus-pet | spec ๅบๅฎไฝ็ฝฎ (ยง4.2 ยง6.1 ยง7.2) |
| ไบง็ฉ้ข | bin/octopus-pet.bin | release ไบ่ฟๅถ (~13MB, ๅ ๅต spritesheet), ๆไบค่ฟ git, clone ๅณๆไปถๅฏๅ ่ฝฝ |
| ๅผๅ้ข | app/ | Tauri webview ๅ็ซฏ (React 19 + XState 5) |
| ๅผๅ้ข | src-tauri/ | Rust ๅ็ซฏ (actions.rs = ็ถๆ้ป่พๅ็น; state_bridge = ้ๅๅๅ) |
| ๅผๅ้ข | scripts/ / docs/ | ๆๅปบ/ๆ ก้ช/ๅๅธ่ๆฌ + ๆๆกฃ |
| ไธญ้ดไบง็ฉ | app/dist/ src-tauri/target/ src-tauri/gen/ dist/ | gitignored, ๅฏ้ๅปบ |
octopus-pet/
โโโ plugin.json # spec ยง5
โโโ mcp.json # spec ยง7
โโโ README.md # this file
โโโ AGENTS.md # AI agent ๅไฝ็บฆๅฎ
โโโ LICENSE # MIT 2026 weekbin
โโโ .gitignore
โโโ skills/
โ โโโ octopus-pet/
โ โโโ SKILL.md # agentskills.io
โโโ bin/
โ โโโ octopus-pet # entrypoint ๆกฅ (spec ยง9.2): ๆฌๅฐๆๅปบไผๅ
, .bin ๅ
ๅบ
โ โโโ octopus-pet.bin # release ไบ่ฟๅถ (ๆไบค, clone ๅณ็จ)
โโโ scripts/
โ โโโ audit-octopus-assets.sh # 14 ๅบๆฏ็็น
โ โโโ check-scenes-sync.sh # 14 ๅบๆฏไธๆบไธ่ด (types.ts/manifest/mcp_stdio.rs)
โ โโโ extract-and-link-octopus-frames.sh # ffmpeg ๆฝ 01-04 + symlink archive
โ โโโ generate-spritesheet-manifest.sh # ๅฏไธ manifest โ app/src/data/
โ โโโ lint-octopus-plugin.sh # spec ๅ่งๆ ก้ช (16/16)
โ โโโ release-plugin.sh # ๅๅธ: ไบ่ฟๅถ + ๆไปถ็ฎๅฝ + ๅ็
โ โโโ spritesheet-builder.sh # 14 .webp ๆผๅพ
โโโ docs/
โ โโโ octopus-assets-audit.md # 14 ๅบๆฏ็็นๆๆกฃ
โโโ app/ # Tauri webview (React + Vite)
โ โโโ package.json / vite.config.ts / index.html
โ โโโ src/
โ โ โโโ main.tsx / App.tsx
โ โ โโโ components/ # OctopusPet.tsx (192ร192 ็ชๅฃ root, ็ด ๆ้บๆปก) / Bubble.tsx
โ โ โโโ state/ # types.ts (14 ๅบๆฏ) / octopus-fsm.ts (XState v5) / scenes.ts
โ โ โโโ hooks/ # useMcpBridge / useTauriWindowDrag / useStateSync (้ๅๅๅ)
โ โ โโโ data/
โ โ โ โโโ spritesheet-manifest.json # ๅฏไธ manifest (import ๆๅ
)
โ โ โโโ styles/global.css
โ โโโ public/
โ โโโ assets/octopus/ # 14 spritesheet-*.webp (9.1MB total)
โโโ src-tauri/ # Tauri Rust backend
โ โโโ Cargo.toml / Cargo.lock / build.rs / tauri.conf.json
โ โโโ capabilities/default.json
โ โโโ icons/ # 32x32, 128x128, icon.png (RGBA)
โ โโโ tests/mcp_roundtrip.rs # 8 MCP stdio roundtrip tests
โ โโโ src/
โ โโโ main.rs # --mcp-stdio headless / GUI ๅๆจกๅผๅ
ฅๅฃ
โ โโโ lib.rs # Builder + single-instance + HTTP fallback
โ โโโ actions.rs # ็ถๆ้ป่พๅ็น (apply_show/ask/pet + emit)
โ โโโ mcp_stdio.rs # MCP 2024-11-05 server (6 tools, ๅงๆ actions)
โ โโโ state_bridge.rs # get_state / sync_state (้ๅ)
โ โโโ http_fallback.rs # HTTP :9527 (dev-only, ๅงๆ actions)
โโโ dist/ # ๅๅธ็ป่ฃ
็ฎๅฝ (gitignored)
โโโ octopus-pet-plugin/ # release-plugin.sh ไบงๅบ, ๅฏ็ฌ็ซๅ ่ฝฝ
ๅผๅ
ๅ็ฝฎไพ่ต
- Node.js 22+ + npm 10+
- Rust 1.77+ (via rustup ๆ
brew install rust) - Tauri 2 CLI:
cargo install tauri-cli --version "^2"(ๆnpm install -g @tauri-apps/cli)
ๆฌๅฐๅผๅ (Tauri dev mode)
# ไธๆฌกๆง: ่ฃ
ไพ่ต
cd app && npm install
cd ../src-tauri && cargo build
cd ..
# ๅฏๅจ (Vite dev server ่ชๅจ่ตท + Tauri ็ชๅฃ)
cd src-tauri && cargo tauri dev
# ๆไป app/ ็ฎๅฝ: npm run tauri:dev (่ๆฌๅ
้จ cd ๅฐ src-tauri)
ๆณจๆ:
tauri.conf.jsonๅจsrc-tauri/, tauri CLI ๅฟ ้กปไปsrc-tauri/่ท (ๆ็ป app/package.json ็tauri:dev่ๆฌ, ๅฎๅ ้จcd ../src-tauri)ใ
ๆๅปบๅๅธ็
# macOS .app (็ปๆฎ้็จๆท)
cd src-tauri && cargo tauri build
# ไบง็ฉ: src-tauri/target/release/bundle/macos/Octopus Pet.app
# src-tauri/target/release/octopus-pet (่ฃธไบ่ฟๅถ)
# ๆไปถๅๅธ็ฉ (็ป mcode ็ญ agent ๅฎขๆท็ซฏ) โ ๆจ่
bash scripts/release-plugin.sh
# ไบง็ฉ:
# bin/octopus-pet.bin โ release ไบ่ฟๅถ (~13MB, ๆไบค่ฟ git)
# dist/octopus-pet-plugin/ โ ๅฏ็ฌ็ซๅ ่ฝฝ็ๆไปถ็ฎๅฝ (ๅฏ้ๅๅ)
# ๆณจๆ: ๅๅธๅ git add bin/octopus-pet.bin ้ commit ๆไบค (repo ๅณๆไปถ)
ไฝไธบๆไปถๅ ่ฝฝ (ไธค็งๆนๅผ)
ๆนๅผ A: ็ดๆฅๅ ่ฝฝ repo(ๅผๅ/ๅๅธ้็จ)
- mcode ่ฎพ็ฝฎ โ Plugins โ "Add local plugin" โ ้
~/Documents/cute/ - mcode ้ๅฏ โ ็ซ ้ฑผ .app ่ชๅจ spawn
- ๅจ mcode Agent ้:
mcp__octopus-pet__pet_list_statesๅบ่ฟๅ 14 ๅบๆฏ - ไบ่ฟๅถ่งฃๆ: ๆฌๅฐ
cargo buildไบง็ฉไผๅ , ๆ ๆฌๅฐๆๅปบๆถ็จๆไบค็bin/octopus-pet.bin(clone ้ถๆๅปบๅฏๅ ่ฝฝ)
ๆนๅผ B: ๅ ่ฝฝๅๅธๅ (ๅนฒๅๅๅ)
bash scripts/release-plugin.shโ ๆๅdist/octopus-pet-plugin/- ่ฏฅ็ฎๅฝๆฏ spec ๅ่งๆไปถๆ น(plugin.json + mcp.json + skills/ + bin/ ไบ่ฟๅถ), ๅฏๆท่ดๅๅ
bin/octopus-pet.binๆฏ author ๆบๅจ็ผ่ฏ็ macOS arm64 ไบง็ฉใๅ ถไปๆถๆ / ๆณ็จๆๆฐไปฃ็ : ๆฌๅฐcargo build --releaseๅ่ฆ็, ๆ็ดๆฅไพ่ตๆฌๅฐๆๅปบไผๅ ้ป่พใ
้ๆฐ็ๆ็ด ๆ (W1 D1 ๅทฒๅฎๆ, ้ๅธธไธ้่ฆ้่ท)
# 1. ๆฝ 01-04 ๅธง + symlink archive ๅบๆฏ (ffmpeg)
OCTOPUS_SOURCE_ROOT=~/Works/octopus-worker-meme scripts/extract-and-link-octopus-frames.sh
# 2. ๆผ 14 ๅผ spritesheet (ImageMagick)
scripts/spritesheet-builder.sh --all
# 3. ็ๆ React ็จ็ manifest
scripts/generate-spritesheet-manifest.sh
ๅผ็จ (ไธ็ๅ ฑ่ฏ)
- Tauri 2 โ Rust + WebView ้ๆ็ชๅฃ
- XState v5 โ 14 ็ถๆ FSM
- modelcontextprotocol.io spec 2024-11-05 โ MCP ๅ่ฎฎ
- agent-plugins.org v1.0.0 โ Plugin ่ง่
- agentskills.io โ Skill frontmatter
- octopus-meme โ 14 ๅบๆฏๅ็ด ๆ
- ๅ่้กน็ฎ: aemeath-claude-pet / Hermes ๆกๅฎ / Codex ๆ้บปๆญๅญ / clawd-on-desk โ Tauri ๆกๅฎ ๅ ไพ
License
MIT ยฉ 2026 weekbin โ see LICENSE.