AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A pet for CLAUDE CODE using MODS
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Work in progress. Mochi works day to day, but parts are still changing, and some things may break. Feedback and issues are welcome.
On this page: Quick start · What she does · Shortcuts · How it works · Development · Privacy · Roadmap
xcode-select --install. Mochi builds from source, so this is required.Requirements: macOS 13 or later (the Liquid Glass look needs macOS 26; earlier versions use a frosted style), Claude Code 2.1 or later with the Claude desktop app, and the Xcode command line tools. The app is not notarised yet, so macOS may show a warning the first time you open it.
The full steps, with checks, are in CLAUDE-SETUP.md. In short:
# 1. Build the app where the plugin expects to find it
mkdir -p "$HOME/Documents/Claude Mods/Mochi Desktop"
cp -R mochi-desktop/. "$HOME/Documents/Claude Mods/Mochi Desktop/"
(cd "$HOME/Documents/Claude Mods/Mochi Desktop" && sh build.sh)
open "$HOME/Documents/Claude Mods/Mochi Desktop/Mochi.app"
# 2. In a Claude Code chat, install the plugin (choose the user scope)
/plugin marketplace add <path to this folder>
/plugin install pet-mod@mochi
Then start a new chat and send a message. Mochi should show "Working", then "Ready".
The images below are drawn by the app's own views with made-up chats, not captured from a screen, so no real chat names appear. Liquid Glass can't be drawn off screen, so a frosted panel stands in for it. See Development to regenerate them.
Her pose, her badge, and her colours tell you the state of your chats at a glance.
| Mochi | Meaning |
|---|---|
| Walking, dots on her badge | Claude is working |
| Wiggling, sound | Claude needs your OK or has a question |
| Hopping, green check | Claude has finished; she stays "ready" until your next message |
| Grey, squinting | A reply was interrupted or failed |
Her mood follows your limit. Past 70% of either limit her eyes get a lid, so she looks tired. With less than an hour left in the 5-hour window, a countdown sits on the right end of the usage bar. It is orange, then red in the last 30 minutes.
When a chat asks for your OK, her card has Allow and Deny buttons, so you can answer without switching to Claude. It is laid out like Claude's own permission dialog: the question, the whole command or path in a box, and Deny and Allow once with their keys. The mode keys are listed only in chats that can switch modes.
Claude gives her about 8 seconds to answer before its normal prompt appears, so click quickly. Requests that only read or search files, or run read-only commands like ls or git status, never show a card; Claude still asks you in its own window. Turn the card off in her right-click menu, and the normal prompt shows at once.
By default she only pops up for a chat that needs your OK. Finished work, usage warnings and her thoughts go to her list, not to a card or sound. Turn on everything from her right-click menu.
Click her to see your recent chats in boxes, grouped by what they are doing.
A label above her shows your 5-hour and weekly limits. Clicking it opens a box with the state (on track, getting high, almost out, or out of usage), both limits as bars, and when each one resets. Refresh asks Claude for the exact numbers, the same as /usage. If you are out of usage, the box shows when you can continue.
Three round buttons appear under her when you move the pointer near her.
While a live chat is in Auto mode (a model decides which requests to approve), gold sparkles appear around her. They go away when the mode changes.
The scroll button opens two tabs. This week shows the week's turns and approvals each day, that day's peak 5-hour usage, the most active chats, and your week limit. Diary shows twelve weeks as squares, the darker the busier, with the busiest day, active days and your streak. Mochi keeps a small daily count in ~/.claude/mochi/days.json, with no chat content.
Now and then she thinks out loud in a bubble above her: how long is left in her 5-hour window, a warning near the limit, chats that are ready, or a fun fact. One at a time, only when nothing needs you, and she stays quiet when you ask her to.
Six skins, chosen from her right-click menu under Skin.
Mochi Studio is a small app to change her body, eyes, accessory (none, bow, hat, or scarf), and name, with a live preview. It saves to the same file Mochi reads, opens with the look you saved, and previews her in the skin chosen in Mochi's menu, drawn the way Mochi draws it. Undo and redo (⌘Z and ⇧⌘Z) step back through every change.
These work from any app, even when Mochi is not in front.
| Key | What it does |
|---|---|
| F5 | Open a quick note |
| F6 | Start talking |
| F7 | Allow the request on her card |
| F8 | Deny it |
| F9 | Allow it and switch that session to Accept edits. Only from Manual, and only for that session. |
| F10 | Allow it and switch that session to Auto. From Manual or Accept edits, and only for that session. |
| Option-J | Open the chat that has waited longest for your OK |
flowchart LR
C[Claude chat] -->|plugin reports status and events| F[~/.claude/mochi/]
F -->|Mochi reads every second| M[Mochi on your screen]
M --> L[Click her: list of every chat]
M --> K[Cards beside her: finished, questions, approvals]
M --> U[Usage label above her]
U -->|click| CL[Runs /usage for exact numbers]
M --> Q[Pencil: quick note, starts a session]
M --> T[Microphone: speak into the note]
K -->|Allow or Deny| A[answers/ file]
A -->|plugin reads the answer| C
Mochi is built as a mod for Claude Code. A mod is a small TypeScript plugin that runs inside Claude Code and reacts to events, such as a chat finishing or a tool asking for approval. According to a report from IT-Connect, Anthropic announced mods on 1 October 2026, and they are enabled by default from Claude Code 2.1.287. That date comes from a single source, so check it against Anthropic's own documentation. Plugins, a related feature, were announced on 9 October 2025.
| Path | What it is |
|---|---|
pet-mod/ | The Claude Code plugin (TypeScript; its tests run with Bun). It reports what each chat is doing, and waits for her answer to an approval. Hooks are in pet-mod/hooks/register.ts. |
mochi-desktop/ | The macOS app that shows Mochi on your screen: one Swift file, main.swift, built with build.sh. |
mochi-studio/ | The macOS app for customising how Mochi looks (SwiftUI). |
media/ | Press and launch assets, and the screenshot renderer. See media/README.md. |
docs/ | Images used in the docs. |
test.sh | Runs every test and builds both apps. |
~/.claude/mochi/The plugin and the apps talk to each other only through plain files in this folder.
| File | What it holds |
|---|---|
sessions/<chat>.json | The status and recent events each chat reports. The plugin writes it, Mochi reads it. |
answers/<chat>.json | Your Allow or Deny, which the plugin picks up. |
presence.json | Mochi tells the plugin she is here and which requests she is showing. The plugin waits for her answer only while she is. |
usage.json | The newest plan-usage reading. |
days.json | The daily counts behind This week and Diary, with no chat content. |
look.json | Her look. Mochi Studio saves it, Mochi reads it. |
shortcuts.json | Which global shortcuts macOS accepted (0 is accepted, anything else is an error code). |
mochi.log | A log with times, so a failed step can be found afterwards. |
New work goes on the dev branch, with tests for each change. Every three days, dev is merged into main only if every test passes.
sh test.sh # all tests, then a build of both apps
sh mochi-desktop/build.sh # builds mochi-desktop/Mochi.app
sh mochi-studio/build.sh # builds mochi-studio/Mochi Studio.app
sh media/snapshots.sh # redraws the README screenshots
test.sh runs the plugin's approval tests (pet-mod/tests/approval.test.ts, with Bun), Mochi Desktop's and Mochi Studio's logic tests (mochi-desktop/tests/, mochi-studio/tests/), and builds both apps. It ends with ALL TESTS PASSED when everything passes.
The desktop tests run against the real code: test.sh appends the test file to main.swift, cut just before the app starts. media/snapshots.sh uses the same trick to draw the real views with made-up data into media/screenshots/. Run it after you change how something looks, then commit the new images. It needs only the Xcode command line tools, and it reads nothing from ~/.claude/mochi.
~/.claude/mochi/ and in the Claude app's own folders./usage does. Nothing is sent that you haven't already sent through Claude.Claude didn't have a pet, so I made one for myself. I wanted a companion that lives alongside my work: one that tells me when things finish, asks for my attention when a chat needs me, and shows how much of my limit is left, without my having to watch every chat.
MIT. See LICENSE.