{ "schemaVersion": "0.1.0", "id": "tangdouren", "displayName": "Tangdouren", "description": "一个大头小人风格的 Codex pet,适合轻松提醒 agent 状态。", "kind": "creature", "tags": ["character", "codex-pet", "focus", "mit"], "vibes": ["soft", "playful", "compact"], "author": { "name": "Carl-312", "url": "https://github.com/Carl-312/codex-pet-tangdouren" }, "license": { "code": "MIT", "assets": "MIT", "source": "https://github.com/Carl-312/codex-pet-tangdouren/blob/main/LICENSE" }, "spritesheet": { "path": "spritesheet.webp", "columns": 8, "rows": 9, "cellWidth": 192, "cellHeight": 208, "width": 1536, "height": 1872 }, "preview": { "contactSheet": "contact-sheet.png", "animation": "preview.gif" }, "animations": [ { "name": "idle", "row": 0, "frames": 6, "purpose": "Calm resting loop." }, { "name": "running-right", "row": 1, "frames": 8, "purpose": "Rightward drag movement loop." }, { "name": "running-left", "row": 2, "frames": 8, "purpose": "Leftward drag movement loop." }, { "name": "waving", "row": 3, "frames": 4, "purpose": "Greeting or attention gesture." }, { "name": "jumping", "row": 4, "frames": 5, "purpose": "Playful jump." }, { "name": "failed", "row": 5, "frames": 8, "purpose": "Blocked, failed, or cancelled reaction." }, { "name": "waiting", "row": 6, "frames": 6, "purpose": "Waiting for approval, help, quota reset, or user input." }, { "name": "running", "row": 7, "frames": 6, "purpose": "Active task work or processing." }, { "name": "review", "row": 8, "frames": 6, "purpose": "Ready or completed output review." } ], "events": { "agent.idle": { "animation": "idle", "tone": "neutral" }, "agent.running": { "animation": "running", "tone": "working" }, "agent.waiting": { "animation": "waiting", "tone": "attention" }, "agent.review": { "animation": "review", "tone": "done" }, "agent.failed": { "animation": "failed", "tone": "critical" }, "quota.healthy": { "animation": "idle", "tone": "neutral" }, "quota.active": { "animation": "running", "tone": "working" }, "quota.pressure": { "animation": "review", "tone": "warning", "threshold": ">=80% used" }, "quota.limit": { "animation": "waiting", "tone": "critical", "threshold": ">=95% used or <=15% remaining" }, "session.long": { "animation": "review", "tone": "warning", "threshold": ">=60 minutes" }, "session.rest_suggested": { "animation": "waiting", "tone": "care", "threshold": "runtime-defined rest suggestion" }, "session.soft_strike": { "animation": "failed", "tone": "critical", "threshold": ">=90 minutes without break" }, "system.keep_awake_on": { "animation": "idle", "tone": "system" } }, "behavior": { "summary": "Tangdouren 默认轻松陪伴;连续工作 60 分钟后提醒休息。", "rules": [ { "id": "rest-suggested", "label": "60 min rest reminder", "event": "session.rest_suggested", "trigger": { "metric": "codingSessionMinutes", "operator": ">=", "value": 60 }, "animation": "waiting", "tone": "care", "mode": "medium", "message": "Tangdouren 眨眨眼:已经 60 分钟了,休息 10 分钟吧。" } ] }, "compatibility": { "codexPets": true, "openPets": true, "petdexLike": true, "runtimeNotes": "Imported from a MIT Codex pet package and extended with PetHatch event metadata." } }