metame-cli 1.3.20 → 1.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # 🔮 MetaMe
1
+ # MetaMe
2
2
 
3
3
  <p align="center">
4
4
  <img src="./logo.png" alt="MetaMe Logo" width="200"/>
@@ -7,7 +7,6 @@
7
7
  <p align="center">
8
8
  <a href="https://www.npmjs.com/package/metame-cli"><img src="https://img.shields.io/npm/v/metame-cli.svg" alt="npm version"></a>
9
9
  <a href="https://www.npmjs.com/package/metame-cli"><img src="https://img.shields.io/npm/dm/metame-cli.svg" alt="npm downloads"></a>
10
- <a href="https://nodejs.org"><img src="https://img.shields.io/node/v/metame-cli.svg" alt="node version"></a>
11
10
  <a href="https://github.com/Yaron9/MetaMe/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/metame-cli.svg" alt="license"></a>
12
11
  </p>
13
12
 
@@ -15,730 +14,200 @@
15
14
  <a href="./README.md">English</a> | <a href="./README中文版.md">中文</a>
16
15
  </p>
17
16
 
18
- > **The Cognitive Profile Layer for Claude Code.**
19
- >
20
- > *Knows how you think. Works wherever you are.*
17
+ > **Claude Code that knows you and works from your phone.**
21
18
 
22
- ## 📖 Introduction
19
+ MetaMe turns Claude Code into a persistent AI that remembers how you think, runs on your Mac 24/7, and takes commands from your phone via Telegram or Feishu.
23
20
 
24
- **Claude Code** is powerful, but it has two pain points:
21
+ One command. No cloud. Your machine, your data.
25
22
 
26
- 1. **Project Amnesia** — Switch folders, and it forgets who you are. Your communication style, coding preferences, constraints — gone. Every project, you start from scratch.
27
-
28
- 2. **Desktop-Bound** — Leave your computer, work stops. You can't continue that debugging session on your phone. You can't vibe with Claude on the train, in bed, or waiting in line.
29
-
30
- **MetaMe** solves both — and more:
31
-
32
- **🧠 Cognitive Profile** — A persistent "Global Brain" (`~/.claude_profile.yaml`) that travels with you across every project. Unlike ChatGPT/Claude's built-in memory (which stores *facts* like "user lives in X"), MetaMe captures *how you think* — your decision style, cognitive load preferences, and communication traits. It's not a memory system; it's a **Cognitive Mirror**.
33
-
34
- **📱 Mobile Bridge** — Full Claude Code from your phone via Telegram or Feishu. Same tools, same files, same conversation history. Start on your computer, continue anywhere. `/cd last` syncs you to exactly where you left off.
35
-
36
- **🔔 Remote Wake** — Daemon runs in the background on your computer. Send a message from your phone, and it wakes up Claude Code to do real work — edit files, run commands, commit code — even while you're away from your desk.
37
-
38
- **📂 File Transfer** — Send files from your computer to your phone (ask Claude to send any project file). Send files from your phone to your computer (just attach them in chat). Seamless both ways.
39
-
40
- **⏰ Heartbeat Tasks** — Schedule Claude to run automatically. Daily summaries, automated workflows, multi-step skill chains — all running on your machine, pushing results to your phone.
41
-
42
- ## ✨ Key Features
43
-
44
- * **🧠 Global Brain (`~/.claude_profile.yaml`):** A single, portable source of truth — your identity, cognitive traits, and preferences travel with you across every project.
45
- * **🧬 Cognitive Evolution Engine:** MetaMe learns how you think through three channels: (1) **Passive** — silently captures your messages and distills cognitive traits via Haiku on next launch; (2) **Manual** — `!metame evolve` for explicit teaching; (3) **Confidence gates** — strong directives ("always"/"from now on") write immediately, normal observations need 3+ consistent sightings before promotion. Schema-enforced (41 fields, 5 tiers, 800 token budget) to prevent bloat.
46
- * **🛡️ Auto-Lock:** Mark any value with `# [LOCKED]` — treated as a constitution, never auto-modified.
47
- * **🪞 Metacognition Layer (v1.3):** MetaMe now observes *how* you think, not just *what* you say. Behavioral pattern detection runs inside the existing Haiku distill call (zero extra cost). It tracks decision patterns, cognitive load, comfort zones, and avoidance topics across sessions. When persistent patterns emerge, MetaMe injects a one-line mirror observation — e.g., *"You tend to avoid testing until forced"* — with a 14-day cooldown per pattern. Conditional reflection prompts appear only when triggered (every 7th distill or 3x consecutive comfort zone). All injection logic runs in Node.js; Claude receives only pre-decided directives, never rules to self-evaluate.
48
- * **📱 Remote Claude Code (v1.3):** Full Claude Code from your phone via Telegram or Feishu (Lark). Stateful sessions with `--resume` — same conversation history, tool use, and file editing as your terminal. Interactive buttons for project/session picking, directory browser, and macOS launchd auto-start.
49
- * **🔄 Workflow Engine (v1.3):** Define multi-step skill chains as heartbeat tasks. Each workflow runs in a single Claude Code session via `--resume`, so step outputs flow as context to the next step. Example: `deep-research` → `tech-writing` → `wechat-publisher` — fully automated content pipeline.
50
- * **⏹ Full Terminal Control from Mobile (v1.3.10):** `/stop` (ESC), `/undo` (ESC×2) with native file-history restoration, concurrent task protection, daemon auto-restart, and `metame continue` for seamless mobile-to-desktop sync.
51
- * **🎯 Goal Alignment & Drift Detection (v1.3.11):** MetaMe now tracks whether your sessions align with your declared goals. Each distill assesses `goal_alignment` (aligned/partial/drifted) at zero extra API cost. When you drift for 2+ consecutive sessions, a mirror observation is injected passively; after 3+ sessions, a reflection prompt gently asks: "Was this an intentional pivot, or did you lose track?" Session logs now record project, branch, intent, and file directories for richer retrospective analysis. Pattern detection can spot sustained drift trends across your session history.
52
- * **🔌 Provider Relay (v1.3.11):** Use any Anthropic-compatible API relay as your backend — no file mutation, no invasion. MetaMe injects `ANTHROPIC_BASE_URL` + `ANTHROPIC_API_KEY` at spawn time. Separate provider roles for `active`, `distill`, and `daemon` tasks. CLI: `metame provider add/use/remove/test`. Config stored in `~/.metame/providers.yaml`.
53
- * **📊 Session History Bootstrap (v1.3.12):** Solves the cold-start problem — MetaMe previously needed 5-7 sessions before producing any visible feedback. Now, on first launch it auto-bootstraps your session history from existing Claude Code JSONL transcripts (zero API cost). Three complementary data layers: **Skeleton** (structural facts extracted locally — tools, duration, project, branch, intent), **Facets** (interaction quality from `/insights` — outcome, friction, satisfaction, when available), and **Haiku** (metacognitive judgments — cognitive load, zones, goal alignment, from the existing distill call). Patterns and mirror observations can appear from your very first MetaMe session.
54
- * **🏥 Emergency Recovery (v1.3.13):** `/doctor` interactive diagnostics with one-tap fix buttons, `/sh` direct shell access from your phone (bypasses Claude entirely — the lifeline when everything else is broken), automatic config backup before any setting change, `/fix` to restore last known good config. `/model` interactive model switcher with auto-backup.
55
- * **🌐 Browser Automation (v1.3.15):** Native Playwright MCP integration — auto-registered on first run. Every MetaMe user gets browser control capability out of the box. Combined with Skills, enables workflows like automated podcast publishing, form filling, and web scraping.
56
- * **📂 Interactive File Browser (v1.3.15):** `/list` shows clickable button cards — folders expand inline, files download on tap. Folder buttons survive daemon restarts (absolute paths, no expiry). Zero token cost.
57
- * **🔀 Parallel Multi-Agent Chats (v1.3.19):** Assign each agent its own dedicated Feishu/Telegram group. Messages in different groups execute in parallel — no waiting for each other. Route `chatId → agent` via `chat_agent_map` in `daemon.yaml`. Create a new group, send `/bind <name>` to register it instantly.
58
- * **🔧 Config Hot-Reload Fix (v1.3.19):** `allowed_chat_ids` is now read dynamically on every message — no restart needed after editing `daemon.yaml`. `/fix` config restore now merges current `chatId` settings so manually-added groups are never lost.
59
- * **🛡️ Daemon Auto-Restart via LaunchAgent (v1.3.19):** MetaMe's npm daemon is now managed by macOS launchd. Crashes or unexpected exits trigger an automatic restart after 5 seconds.
60
- * **👥 Operator Permissions & Read-Only Mode (v1.3.19):** Add `operator_ids` to restrict who can execute Claude commands in shared groups. Non-operators can still chat and query (read/search/web only) — they just can't edit files, run bash, or trigger slash commands. Use `/myid` to discover any user's Feishu open_id.
61
-
62
- ## 🛠 Prerequisites
63
-
64
- MetaMe is a wrapper around **Claude Code**. You must have Node.js and the official Claude Code tool installed first.
65
-
66
- 1. **Node.js**: Version 14 or higher.
67
- 2. **Claude Code**: Ensure `claude` is available in your PATH and you are logged in.
68
-
69
- ## 📦 Installation
70
-
71
- **One-command install (recommended)** — installs Node.js, Claude Code, and MetaMe:
72
-
73
- macOS / Linux:
74
23
  ```bash
75
- curl -fsSL https://raw.githubusercontent.com/Yaron9/MetaMe/main/install.sh | bash
24
+ npm install -g metame-cli && metame
76
25
  ```
77
26
 
78
- Windows (PowerShell):
79
- ```powershell
80
- irm https://raw.githubusercontent.com/Yaron9/MetaMe/main/install.ps1 | iex
81
- ```
82
- > Windows uses WSL (auto-installed if missing). After WSL install you'll need to reboot once, then re-run the command.
27
+ ---
83
28
 
84
- **Manual install** if you already have Node.js and Claude Code:
29
+ ## What It Does
85
30
 
86
- ```bash
87
- npm install -g metame-cli
88
- ```
31
+ ### 1. Knows You Across Every Project
89
32
 
90
- **Claude Code Plugin** lightweight alternative, profile injection + slash commands only:
33
+ Claude Code forgets you every time you switch folders. MetaMe doesn't.
91
34
 
92
- ```bash
93
- claude plugin install github:Yaron9/MetaMe/plugin
94
- ```
95
-
96
- ## 🚀 Usage
97
-
98
- Forget the `claude` command. From now on, simply type:
99
-
100
- **Bash**
101
-
102
- ```
103
- metame
104
- ```
105
-
106
- Or, if you prefer mixed case (it's the same command):
107
-
108
- **Bash**
109
-
110
- ```
111
- MetaMe
112
- ```
113
-
114
- ### The First Run (Genesis)
115
-
116
- When you run MetaMe for the first time, it will detect that your profile is empty. It will pause the AI and enter **Calibration Mode**:
117
-
118
- 1. It will ask you for a **Codename** (Nickname).
119
- 2. It will initiate a **Deep Cognitive Interview** to map your talents, mental models, and hidden anxieties.
120
- 3. **Be Honest**: It acts as a mirror. The more raw truth you provide, the better it can shadow you.
121
- 4. Once finished, it saves your "Source Code" and launches Claude.
122
-
123
- ### Daily Workflow
124
-
125
- 1. `cd` into any project folder.
126
- 2. Run `metame`.
127
- 3. Claude will start and immediately say: *"Ready, [Your Name]..."*
128
- 4. Start coding. MetaMe manages the context in the background.
129
-
130
- ### Global Initialization (Reset/Interview)
131
-
132
- If you want to restart the **Genesis Interview** to update your psychological profile:
133
-
134
- **Bash**
135
-
136
- ```
137
- metame interview
138
- ```
139
- (Command to be implemented in v1.3 - currently you can manually edit `~/.claude_profile.yaml` or use `set-trait`)
140
-
141
- ### Cognitive Evolution
142
-
143
- MetaMe learns who you are through two paths:
144
-
145
- **Automatic (zero effort):** A global hook captures your messages. On next launch, Haiku distills cognitive traits in the background. Strong directives ("always"/"from now on") write immediately; normal observations need 3+ consistent sightings. All writes are schema-validated (41 fields, 800 token budget). You'll see:
35
+ A cognitive profile (`~/.claude_profile.yaml`) follows you everywhere — not just facts like "user prefers TypeScript", but *how you think*: your decision style, cognitive load preferences, communication patterns. It learns silently from your conversations via background distillation, no effort required.
146
36
 
147
37
  ```
38
+ $ metame
148
39
  🧠 MetaMe: Distilling 7 moments in background...
40
+ Ready, Neo. What are we building?
149
41
  ```
150
42
 
151
- **Manual:** Update a specific trait directly:
152
-
153
- ```bash
154
- metame set-trait status.focus "Learning Rust"
155
- metame evolve "I prefer functional programming patterns"
156
- ```
157
-
158
- **Episodic memory (keyframe, not full log):** MetaMe is not a memory system, but it captures two types of experiential "keyframes" that pure personality traits can't replace:
159
-
160
- * **Anti-patterns** (`context.anti_patterns`, max 5): Cross-project failure lessons — e.g., *"Promise.all rejects all on single failure, use Promise.allSettled"*. Auto-expires after 60 days. Prevents the AI from repeating the same mistakes across sessions.
161
- * **Milestones** (`context.milestones`, max 3): Recent completed landmarks — e.g., *"MetaMe v1.3 published"*. Provides continuity so Claude knows where you left off without you having to recap.
162
-
163
- **Anti-bias safeguards:** single observations ≠ traits, contradictions are tracked not overwritten, pending traits expire after 30 days, context fields auto-clear on staleness.
164
-
165
- **In-session commands (type inside Claude Code):**
166
-
167
- | Command | Description |
168
- |---------|-------------|
169
- | `!metame refresh` | Re-inject profile into current session |
170
- | `!metame evolve "..."` | Teach MetaMe a new insight |
171
- | `!metame set-trait key value` | Update a specific profile field |
172
-
173
- **Metacognition controls:**
174
-
175
- ```bash
176
- metame quiet # Silence mirror observations & reflections for 48h
177
- metame insights # Show detected behavioral patterns
178
- metame mirror on|off # Toggle mirror injection
179
- ```
180
-
181
- ### Remote Claude Code — Telegram & Feishu (v1.3)
182
-
183
- Full Claude Code from your phone — stateful sessions with conversation history, tool use, and file editing. Supports both Telegram and Feishu (Lark).
184
-
185
- **Setup:**
186
-
187
- ```bash
188
- metame daemon init # Create config + setup guide
189
- ```
190
-
191
- Edit `~/.metame/daemon.yaml`:
192
-
193
- ```yaml
194
- telegram:
195
- enabled: true
196
- bot_token: "YOUR_BOT_TOKEN" # From @BotFather
197
- allowed_chat_ids:
198
- - 123456789 # Your Telegram chat ID
199
-
200
- feishu:
201
- enabled: true
202
- app_id: "YOUR_APP_ID" # From Feishu Developer Console
203
- app_secret: "YOUR_APP_SECRET"
204
- allowed_chat_ids: [] # Empty = deny all (fill via setup wizard)
205
- ```
206
-
207
- **Start the daemon:**
208
-
209
- ```bash
210
- metame start # Background process
211
- metame status # Check if running
212
- metame logs # Tail the log
213
- metame stop # Shutdown
214
- metame daemon install-launchd # macOS auto-start
215
- metame daemon install-systemd # Linux/WSL auto-start
216
- ```
217
-
218
- **Auto-start (recommended):** The daemon survives reboots and auto-restarts on crash.
219
-
220
- macOS:
221
- ```bash
222
- metame daemon install-launchd
223
- launchctl load ~/Library/LaunchAgents/com.metame.daemon.plist
224
- ```
225
-
226
- Linux / WSL:
227
- ```bash
228
- metame daemon install-systemd
229
- ```
230
- > WSL requires systemd enabled: add `[boot]\nsystemd=true` to `/etc/wsl.conf` and restart WSL.
231
-
232
- > **Important:** Choose one management method — either auto-start or manual (`metame start/stop`). Don't mix them, or you'll get duplicate processes.
233
-
234
- **Session commands (interactive buttons on Telegram & Feishu):**
235
-
236
- | Command | Description |
237
- |---------|-------------|
238
- | `/last` | **Quick resume** — prefers current directory's recent session, falls back to global recent |
239
- | `/new` | Start new session — pick project directory from button list |
240
- | `/new <name>` | Start new session with a name (e.g., `/new API Refactor`) |
241
- | `/resume` | Resume a session — clickable list, shows session names + real-time timestamps |
242
- | `/resume <name>` | Resume by name (supports partial match, cross-project) |
243
- | `/name <name>` | Name the current session (syncs with computer's `/rename`) |
244
- | `/cd` | Change working directory — with directory browser |
245
- | `/cd last` | **Sync to computer** — jump to the most recent session's directory |
246
- | `/session` | Current session info |
247
- | `/stop` | Interrupt current Claude task (like pressing ESC in terminal) |
248
- | `/undo` | Undo turns with file restoration (like pressing ESC×2 in terminal) |
249
-
250
- Just type naturally for conversation — every message stays in the same Claude Code session with full context.
251
-
252
- **Session naming:** Sessions can be named via `/new <name>`, `/name <name>` (mobile), or Claude Code's `/rename` (desktop). Names are stored in Claude's native session index and sync across all interfaces — name it on your phone, see it on your computer.
253
-
254
- **How it works:**
255
-
256
- Each chat gets a persistent session via `claude -p --resume <session-id>`. This is the same Claude Code engine as your terminal — same tools (file editing, bash, code search), same conversation history. You can start work on your computer and `/resume` from your phone, or vice versa.
257
-
258
- **Seamless switching between desktop and mobile (v1.3.13):**
259
-
260
- The same session works on both desktop and mobile, but there's an asymmetry:
261
-
262
- * **Desktop → Mobile:** Automatic. Mobile spawns a fresh `claude -p --resume` for each message, so it always reads the latest session file. Just keep chatting.
263
- * **Mobile → Desktop:** Requires a sync. Desktop Claude Code holds the session in memory — it won't see messages added by the mobile daemon. Exit Claude first (Ctrl+C), then:
264
-
265
- ```bash
266
- metame continue
267
- ```
268
-
269
- This resumes the latest session with all mobile messages included. Also works as `metame sync`.
270
-
271
- **Parallel request handling:** The daemon uses async spawning, so multiple users or overlapping requests don't block each other. Each Claude call runs in a non-blocking subprocess.
272
-
273
- **Streaming status (v1.3.7):** See Claude's work progress in real-time on your phone:
274
-
275
- ```
276
- 📖 Read: 「config.yaml」
277
- ✏️ Edit: 「daemon.js」
278
- 💻 Bash: 「git status」
279
- 🔧 Skill: 「wechat-publisher」
280
- 🌐 Browser: 「navigate」
281
- 🔗 MCP:server: 「action」
282
- ```
283
-
284
- **File transfer (v1.3.8):** Seamlessly move files between your phone and computer.
285
-
286
- *Computer → Phone (download):* Ask Claude to send any project file:
287
-
288
- ```
289
- You: Send me report.md
290
- Claude: Here you go!
291
- [📎 report.md] ← tap to download
292
- ```
293
-
294
- Works for documents, audio, images, etc. Click button to download. Links valid for 30 minutes.
295
-
296
- *Phone → Computer (upload):* Send files directly to your project:
297
-
298
- ```
299
- [📎 You send a PDF, image, or any file]
300
- Claude: 📥 Saved: document.pdf
301
- File is in your project's upload/ folder.
302
- ```
303
-
304
- Uploaded files are saved to `<project>/upload/`. Claude won't read large files automatically — just tell it when you want it to process them.
43
+ ### 2. Full Claude Code From Your Phone
305
44
 
306
- - **Telegram:** Works out of the box
307
- - **Feishu:** Requires `im:resource` + `im:message` permissions in app settings
308
-
309
- **Task control (v1.3.13):** Full terminal-equivalent control from your phone.
310
-
311
- *`/stop` — ESC equivalent:* Sends SIGINT to the running Claude process. Instant interruption, just like pressing ESC in your terminal.
312
-
313
- *`/undo` — git-based code rollback (v1.3.16):* Before each Claude turn, the daemon auto-commits a `[metame-checkpoint]` to git. `/undo` lists recent checkpoints; tap one to `git reset --hard` back to that state. Session history is also truncated. Reliable across both `-p` mode and interactive sessions — no dependency on Claude CLI internals.
45
+ Your Mac runs a daemon. Your phone sends messages via Telegram or Feishu. Same Claude Code engine — same tools, same files, same session.
314
46
 
315
47
  ```
316
- You: /undo
317
- Bot: 回退到哪一轮?
318
- 重构API接口 (5分钟前)
319
- 修复登录bug (12分钟前)
320
- ⏪ 添加测试用例 (30分钟前)
48
+ You (phone): Fix the auth bug in api/login.ts
49
+ Claude: ✏️ Edit: api/login.ts
50
+ 💻 Bash: npm test
51
+ Fixed. 3 tests passing.
321
52
  ```
322
53
 
323
- **Message queue & interrupt (v1.3.16):** If a Claude task is already running, new messages interrupt the current task and queue up. After 5 seconds of no new input, all queued messages are merged and processed together. Works identically on both Telegram and Feishu.
324
-
325
- **Auto-restart (v1.3.13):** The daemon watches its own code for changes. When you update MetaMe (via npm or git), the daemon automatically restarts with the new code — no manual restart needed. A notification is pushed to confirm.
326
-
327
- **Emergency & diagnostics (v1.3.13):**
328
-
329
- | Command | Description |
330
- |---------|-------------|
331
- | `/sh <cmd>` | Run shell command directly on your computer — bypasses Claude entirely. Emergency lifeline when the model is broken. |
332
- | `/doctor` | Interactive diagnostics: checks config, model validity, Claude CLI, backups. Shows fix buttons if issues found. |
333
- | `/fix` | Restore `daemon.yaml` from last backup |
334
- | `/reset` | Reset model to opus |
335
-
336
- **Other commands:**
54
+ Start on your laptop, continue on the train. `/stop` to interrupt, `/undo` to rollback, `/sh ls` for raw shell access when everything else breaks.
337
55
 
338
- | Command | Description |
339
- |---------|-------------|
340
- | `/status` | Daemon status + profile summary |
341
- | `/tasks` | List scheduled heartbeat tasks |
342
- | `/run <name>` | Run a task immediately |
343
- | `/model [name]` | Interactive model switcher with buttons (sonnet, opus, haiku). Accepts any model name when using a custom provider. Auto-backs up config before switching. |
344
- | `/list` | File browser with clickable buttons — folders expand, files download. Zero tokens. |
345
- | `/budget` | Today's token usage |
346
- | `/quiet` | Silence mirror/reflections for 48h |
347
- | `/reload` | Manually reload daemon.yaml (also auto-reloads on file change) |
348
- | `/bind <name>` | Register current group as a dedicated agent chat — opens directory browser to pick working directory |
349
- | `/chatid` | Show the current group's chat ID |
350
- | `/myid` | Show your own Feishu sender open_id (for configuring `operator_ids`) |
56
+ ### 3. Runs Autonomously
351
57
 
352
- **Heartbeat Tasks:**
353
-
354
- Define scheduled tasks in `daemon.yaml`:
58
+ Schedule tasks that run on your machine and push results to your phone:
355
59
 
356
60
  ```yaml
61
+ # ~/.metame/daemon.yaml
357
62
  heartbeat:
358
63
  tasks:
359
- - name: "morning-news"
360
- prompt: "Summarize today's top 3 AI news stories."
64
+ - name: "morning-brief"
65
+ prompt: "Summarize my git activity from yesterday"
361
66
  interval: "24h"
362
- model: "haiku"
363
67
  notify: true
364
- precondition: "curl -s -o /dev/null -w '%{http_code}' https://news.ycombinator.com | grep 200"
365
68
  ```
366
69
 
367
- * `precondition`: Shell commandempty output task skipped, zero tokens.
368
- * `type: "script"`: Run a local script directly instead of `claude -p`.
369
- * `notify: true`: Push results to Telegram/Feishu.
370
-
371
- **Workflow tasks** (multi-step skill chains):
70
+ Chain skills into workflowsresearch, write, publish fully automated:
372
71
 
373
72
  ```yaml
374
- heartbeat:
375
- tasks:
376
- - name: "daily-wechat"
73
+ - name: "daily-content"
377
74
  type: "workflow"
378
- interval: "24h"
379
- model: "sonnet"
380
- notify: true
381
75
  steps:
382
76
  - skill: "deep-research"
383
- prompt: "Today's top 3 AI news stories"
77
+ prompt: "Top 3 AI news today"
384
78
  - skill: "tech-writing"
385
- prompt: "Write a WeChat article based on the research above"
79
+ prompt: "Write an article from the research above"
386
80
  - skill: "wechat-publisher"
387
- prompt: "Publish the article"
388
- optional: true
81
+ prompt: "Publish it"
389
82
  ```
390
83
 
391
- Each step runs in the same Claude Code session. Step outputs automatically become context for the next step. Set `optional: true` on steps that may fail without aborting the workflow.
392
-
393
- **Auto-reload:** The daemon watches `daemon.yaml` for changes. When Claude (or you) edits the config file, the daemon automatically reloads — no restart or `/reload` needed. A notification is pushed to confirm.
394
-
395
- **Token efficiency:**
396
-
397
- * Polling, slash commands, directory browsing: **zero tokens**
398
- * Stateful sessions: same cost as using Claude Code in terminal (conversation history managed by Claude CLI)
399
- * Budget tracking with daily limit (default 50k tokens)
400
- * 10-second cooldown between Claude calls
401
-
402
- **Security:**
403
-
404
- * `allowed_chat_ids` whitelist — unauthorized users silently ignored (empty = deny all)
405
- * `operator_ids` — within an allowed group, restrict command execution to specific users; non-operators get read-only chat mode
406
- * `dangerously_skip_permissions` enabled by default for mobile (users can't click "allow" on phone — security relies on the chat ID whitelist)
407
- * `~/.metame/` directory set to mode 700
408
- * Bot tokens stored locally, never transmitted
409
-
410
- ### Multi-Agent Projects — Context Isolation & Nickname Routing (v1.3.18)
411
-
412
- Organize your work into named agents, each tied to a project directory. Switch between them instantly from your phone — no commands needed, just say their name.
84
+ ### 4. Skills That Evolve Themselves
413
85
 
414
- **How it works:**
86
+ MetaMe has a living skill ecosystem. Skills aren't static configs — they grow.
415
87
 
416
- Each `project` entry in `daemon.yaml` defines an agent with a working directory, display name, notification color, and optional nicknames. When you send a message starting with a nickname, the daemon instantly switches to that project's last session no Claude call, no token cost.
88
+ - **Auto-discovery**: When a task fails or a capability is missing, MetaMe's skill-scout automatically searches for, installs, and verifies new skills.
89
+ - **Learning by watching**: Can't automate a complex browser workflow? Say "我来演示" and MetaMe records your actions, then converts them into a reusable skill.
90
+ - **Post-task evolution**: After every significant task, the skill-evolution-manager reviews what worked and what didn't, then surgically updates the relevant skills with new knowledge.
91
+ - **Composable**: Skills chain together in workflows. A `deep-research` skill feeds into `tech-writing`, which feeds into `wechat-publisher` — each one improving from real usage.
417
92
 
418
- **Setup via conversation:**
419
-
420
- The easiest way to add an agent is to tell the bot:
421
-
422
- > *"Add a project called 'work' pointing to ~/my-project, nickname is '工作'"*
423
-
424
- Or edit `~/.metame/daemon.yaml` directly:
425
-
426
- ```yaml
427
- projects:
428
- my_agent:
429
- name: "My Agent" # Display name in notifications
430
- icon: "🤖" # Emoji shown in Feishu cards
431
- color: "blue" # Feishu card color: blue|orange|green|purple|red|grey
432
- cwd: "~/my-project" # Working directory for this agent
433
- nicknames: [nickname1, nickname2] # Wake words (matched at message start)
434
- heartbeat_tasks: [] # Scheduled tasks for this project (optional)
435
93
  ```
436
-
437
- **Available colors:** `blue` · `orange` · `green` · `purple` · `red` · `grey` · `turquoise`
438
-
439
- **Phone commands:**
440
-
441
- | Action | How |
442
- |--------|-----|
443
- | Switch agent | Send the nickname alone: `贾维斯` → `🤖 Jarvis 在线` |
444
- | Switch + ask | `贾维斯, what's the status?` → switches then asks Claude |
445
- | Pick from list | `/agent` → tap button to switch |
446
- | Continue a reply | Reply to any bot message → session auto-restored |
447
- | View all tasks | `/tasks` → grouped by project |
448
- | Run a task | `/run <task-name>` |
449
-
450
- **Nickname routing rules:**
451
- - Matched at **message start only** — mentioning a nickname mid-sentence never triggers a switch
452
- - Pure nickname (no content after) → instant switch, zero token cost, bypasses cooldown
453
- - Nickname + content → switch then send content to Claude
454
-
455
- **Heartbeat task notifications** arrive as colored Feishu cards — each project's color is distinct, so you can tell at a glance which agent sent the update.
456
-
457
- ### Parallel Multi-Agent Chats & `/bind` Command (v1.3.19)
458
-
459
- Give each agent its own dedicated group chat — messages to different groups execute simultaneously without blocking each other.
460
-
461
- **How it works:**
462
-
463
- Each group is mapped to a specific agent via `chat_agent_map` in `daemon.yaml`. When a message arrives in a group, the daemon looks up which agent owns that `chatId` and dispatches the Claude call to that agent's working directory — fully parallel.
464
-
465
- **Setup — `/bind` command (recommended):**
466
-
467
- 1. Create a new Feishu or Telegram group and add your bot.
468
- 2. In the group, send `/bind <name>` (e.g., `/bind backend`).
469
- 3. The bot opens a Finder-style directory browser — tap folders to navigate, tap a folder name to select it as the working directory.
470
- 4. Done. The bot automatically:
471
- - Adds the group's `chatId` to `allowed_chat_ids`
472
- - Creates a `chat_agent_map` entry routing this group to the agent
473
- - Creates a `projects` entry for the agent
474
- - Sends a welcome card
475
-
476
- > **No whitelist required:** `/bind` works in any group — the new group self-registers without needing to be pre-approved in `allowed_chat_ids`.
477
-
478
- > **Re-binding:** Send `/bind <name>` again in the same group to overwrite the previous configuration.
479
-
480
- **Manual setup** (`~/.metame/daemon.yaml`):
481
-
482
- ```yaml
483
- chat_agent_map:
484
- "oc_abc123": "backend" # chatId → project key
485
- "oc_def456": "frontend"
486
-
487
- projects:
488
- backend:
489
- name: "Backend API"
490
- cwd: "~/projects/api"
491
- frontend:
492
- name: "Frontend App"
493
- cwd: "~/projects/app"
94
+ Task fails → skill-scout finds a skill → installs → retries → succeeds
95
+
96
+ skill-evolution-manager
97
+ updates skill with lessons learned
494
98
  ```
495
99
 
496
- **`/chatid` command:**
497
-
498
- In any authorized group, send `/chatid` and the bot replies with the current group's `chatId`. Useful for manual configuration.
499
-
500
- | Command | Description |
501
- |---------|-------------|
502
- | `/bind <name>` | Register current group as a dedicated agent chat — opens directory browser to pick working directory |
503
- | `/chatid` | Show the current group's chat ID |
504
- | `/myid` | Show your own Feishu sender open_id |
100
+ This is the difference between a tool library and an organism. OpenClaw has a skill marketplace; MetaMe has skills that **learn from their own failures**.
505
101
 
506
- **Operator Permissions (`operator_ids`):**
102
+ ---
507
103
 
508
- In shared groups (e.g., a group with a colleague or tester), you can restrict who can execute Claude commands. Non-operators get a read-only chat mode — they can ask questions and search, but can't edit files, run bash, or trigger slash commands.
509
-
510
- ```yaml
511
- feishu:
512
- operator_ids:
513
- - "ou_abc123yourid" # Only these users can execute commands
514
- ```
104
+ ## Quick Start
515
105
 
516
- Use `/myid` in any Feishu group to get a user's open_id. Then add it to `operator_ids` to grant full access.
517
-
518
- | User type | Chat & query | Slash commands | Write / Edit / Bash |
519
- |-----------|:---:|:---:|:---:|
520
- | Operator | ✅ | ✅ | ✅ |
521
- | Non-operator | ✅ | ❌ | ❌ |
522
-
523
- > If `operator_ids` is empty, all whitelisted users have full access (default behavior).
524
-
525
- ### Provider Relay — Third-Party Model Support (v1.3.11)
526
-
527
- MetaMe supports any Anthropic-compatible API relay as a backend. This means you can route Claude Code through a third-party relay that maps `sonnet`/`opus`/`haiku` to any model (GPT-4, DeepSeek, Gemini, etc.) — MetaMe passes standard model names and the relay handles translation.
528
-
529
- **How it works:** At spawn time, MetaMe injects `ANTHROPIC_BASE_URL` + `ANTHROPIC_API_KEY` environment variables. Zero file mutation — `~/.claude/settings.json` is never touched.
530
-
531
- **CLI commands:**
106
+ ### Install
532
107
 
533
108
  ```bash
534
- metame provider # List all providers
535
- metame provider add <name> # Add a relay (prompts for URL & key)
536
- metame provider use <name> # Switch active provider
537
- metame provider remove <name> # Remove a provider (can't remove 'anthropic')
538
- metame provider test [name] # Test connectivity
539
- metame provider set-role distill <name> # Use a different provider for background distill
540
- metame provider set-role daemon <name> # Use a different provider for daemon tasks
541
- ```
542
-
543
- **Configuration** (`~/.metame/providers.yaml`):
544
-
545
- ```yaml
546
- active: 'anthropic'
547
- providers:
548
- anthropic:
549
- label: 'Anthropic (Official)'
550
- my-relay:
551
- label: 'My Relay'
552
- base_url: 'https://api.relay.example.com/v1'
553
- api_key: 'sk-xxx'
554
- distill_provider: null # null = use active
555
- daemon_provider: null # null = use active
556
- ```
557
-
558
- Three independent provider roles let you optimize cost: e.g., use an official Anthropic key for active work, a cheaper relay for background distill, and another for daemon heartbeat tasks.
559
-
560
- ### Hot Reload (Refresh)
561
-
562
- If you update your profile or need to fix a broken context **without restarting your session**:
563
-
564
- * **Inside Claude**: Run `!metame refresh`
565
- * **External Terminal**: Run `metame refresh`
566
-
567
- This re-injects your latest profile into `CLAUDE.md` instantly.
568
-
569
- ## ⚙️ Configuration & The "Global Brain"
570
-
571
- Your profile is stored in a hidden YAML file in your home directory.
572
-
573
- **Location:** `~/.claude_profile.yaml`
574
-
575
- You can edit this file manually to update your status or lock your values.
576
-
577
- **Example Profile (v2 Schema):**
578
-
579
- **YAML**
580
-
581
- ```
582
- # === T1: Identity (LOCKED) ===
583
- identity:
584
- nickname: Neo # [LOCKED]
585
- role: Senior Architect
586
- locale: en-US # [LOCKED]
587
-
588
- # === T2: Core Traits (LOCKED) ===
589
- core_traits:
590
- crisis_reflex: Analysis # [LOCKED]
591
- flow_trigger: Debugging # [LOCKED]
592
- learning_style: Hands-on # [LOCKED]
593
-
594
- # === T3: Preferences (auto-learnable) ===
595
- preferences:
596
- code_style: concise
597
- communication: direct
598
- explanation_depth: brief_rationale
599
-
600
- # === T3b: Cognition (auto-learnable, slow to change) ===
601
- cognition:
602
- decision_style: analytical
603
- info_processing:
604
- entry_point: big_picture
605
- preferred_format: structured
606
- cognitive_load:
607
- chunk_size: medium
608
- preferred_response_length: moderate
609
-
610
- # === T4: Context (auto-overwrite) ===
611
- context:
612
- focus: "Refactoring Legacy Code"
613
- energy: high
614
-
615
- # === T5: Evolution (system-managed) ===
616
- evolution:
617
- distill_count: 12
618
- last_distill: "2026-01-30T10:00:00Z"
619
- ```
620
-
621
- * **T1-T2 fields** marked `# [LOCKED]` are never auto-modified.
622
- * **T3 fields** are auto-learned with confidence thresholds.
623
- * **T4 fields** are freely overwritten as your context changes.
624
- * **T5 fields** are managed by the distillation system.
625
-
626
- ### Profile Migration (v1 → v2)
627
-
628
- If you have an existing v1 profile, run the migration script:
109
+ # One-line install (includes Node.js + Claude Code if missing)
110
+ curl -fsSL https://raw.githubusercontent.com/Yaron9/MetaMe/main/install.sh | bash
629
111
 
112
+ # Or if you already have Claude Code
113
+ npm install -g metame-cli
630
114
  ```
631
- node ~/.metame/migrate-v2.js --dry-run # preview changes
632
- node ~/.metame/migrate-v2.js # apply migration (auto-backup created)
633
- ```
634
-
635
- ## 🗑️ Uninstallation
636
-
637
- If you wish to remove MetaMe completely from your system, follow these steps:
638
115
 
639
- ### 1. Remove the Package
116
+ ### First Run
640
117
 
641
- Uninstall the CLI tool:
642
-
643
- **Bash**
644
-
645
- ```
646
- npm uninstall -g metame-cli
118
+ ```bash
119
+ metame
647
120
  ```
648
121
 
649
- ### 2. Remove the Global Brain (Optional)
650
-
651
- If you want to delete your stored profile data:
122
+ On first launch, MetaMe runs a brief cognitive interview to build your profile. After that, it's automatic.
652
123
 
653
- **Bash**
124
+ ### Enable Mobile Access
654
125
 
655
- ```
656
- rm ~/.claude_profile.yaml
126
+ ```bash
127
+ metame daemon init # Creates config with setup guide
128
+ metame start # Launches background daemon
657
129
  ```
658
130
 
659
- ### 3. Stop the Daemon (if running)
131
+ Edit `~/.metame/daemon.yaml` with your Telegram bot token or Feishu app credentials, then:
660
132
 
661
133
  ```bash
662
- metame stop
663
-
664
- # macOS: remove auto-start
665
- launchctl unload ~/Library/LaunchAgents/com.metame.daemon.plist 2>/dev/null
666
- rm -f ~/Library/LaunchAgents/com.metame.daemon.plist
667
-
668
- # Linux/WSL: remove auto-start
669
- systemctl --user disable metame-daemon 2>/dev/null
670
- rm -f ~/.config/systemd/user/metame-daemon.service
134
+ metame daemon install-launchd # Auto-start on boot + crash recovery
671
135
  ```
672
136
 
673
- ### 4. Remove Passive Distillation Data (Optional)
137
+ Done. Open Telegram, message your bot.
674
138
 
675
- Remove the signal capture scripts:
139
+ ---
676
140
 
677
- **Bash**
141
+ ## Core Capabilities
678
142
 
679
- ```
680
- rm -rf ~/.metame
681
- ```
143
+ | Capability | What It Does |
144
+ |-----------|-------------|
145
+ | **Cognitive Profile** | Learns how you think across sessions. Schema-enforced, 800-token budget, auto-distilled via Haiku. Lock any value with `# [LOCKED]`. |
146
+ | **Mobile Bridge** | Full Claude Code via Telegram/Feishu. Stateful sessions, file transfer both ways, real-time streaming status. |
147
+ | **Skill Evolution** | Self-healing skill system. Auto-discovers missing skills, learns from browser recordings, evolves after every task. Skills get smarter over time. |
148
+ | **Heartbeat Tasks** | Scheduled Claude runs with cron-like intervals. Preconditions, workflows, push notifications. |
149
+ | **Multi-Agent** | Multiple projects with dedicated chat groups. `/bind` for one-tap setup. True parallel execution. |
150
+ | **Browser Automation** | Built-in Playwright MCP. Browser control out of the box for every user. |
151
+ | **Provider Relay** | Route through any Anthropic-compatible API. Use GPT-4, DeepSeek, Gemini — zero config file mutation. |
152
+ | **Metacognition** | Detects behavioral patterns (decision style, comfort zones, goal drift) and injects mirror observations. Zero extra API cost. |
153
+ | **Emergency Tools** | `/doctor` diagnostics, `/sh` raw shell, `/fix` config restore, `/undo` git-based rollback. |
682
154
 
683
- ### 5. Remove the Signal Capture Hook (Optional)
155
+ ## Mobile Commands
684
156
 
685
- MetaMe installs a global hook in `~/.claude/settings.json`. To remove it, edit the file and delete the `UserPromptSubmit` entry under `hooks`, or run:
157
+ | Command | Action |
158
+ |---------|--------|
159
+ | `/last` | Resume most recent session |
160
+ | `/new` | Start new session (project picker) |
161
+ | `/resume` | Pick from session list |
162
+ | `/stop` | Interrupt current task (ESC) |
163
+ | `/undo` | Rollback with file restoration |
164
+ | `/list` | Browse & download project files |
165
+ | `/model` | Switch model (sonnet/opus/haiku) |
166
+ | `/bind <name>` | Register group as dedicated agent |
167
+ | `/sh <cmd>` | Raw shell — bypasses Claude |
168
+ | `/doctor` | Interactive diagnostics |
686
169
 
687
- **Bash**
170
+ ## How It Works
688
171
 
689
172
  ```
690
- node -e "
691
- const fs = require('fs');
692
- const p = require('os').homedir() + '/.claude/settings.json';
693
- const s = JSON.parse(fs.readFileSync(p, 'utf8'));
694
- if (s.hooks) { delete s.hooks.UserPromptSubmit; }
695
- fs.writeFileSync(p, JSON.stringify(s, null, 2));
696
- console.log('Hook removed.');
697
- "
173
+ ┌─────────────┐ Telegram/Feishu ┌──────────────────────┐
174
+ │ Your Phone │ ◄──────────────────────► │ MetaMe Daemon │
175
+ └─────────────┘ │ (your Mac, 24/7) │
176
+ │ │
177
+ │ ┌──────────────┐ │
178
+ │ │ Claude Code │ │
179
+ │ │ (same engine) │ │
180
+ │ └──────────────┘ │
181
+ │ │
182
+ │ ~/.claude_profile │
183
+ │ (cognitive layer) │
184
+ └──────────────────────┘
698
185
  ```
699
186
 
700
- ### 6. Cleanup Project Files (Optional)
701
-
702
- MetaMe adds a header to `CLAUDE.md` files in your projects. To restore them to their original state (if you have many), you can use a text editor to remove the block starting with `## 🧠 SYSTEM KERNEL`.
187
+ - **Profile** (`~/.claude_profile.yaml`): Your cognitive fingerprint. Injected into every Claude session via `CLAUDE.md`.
188
+ - **Daemon** (`scripts/daemon.js`): Background process handling Telegram/Feishu messages, heartbeat tasks, and file watching.
189
+ - **Distillation** (`scripts/distill.js`): On each launch, silently analyzes your recent messages and updates your profile.
703
190
 
704
- ## ⚡ Performance & Cost
191
+ ## Security
705
192
 
706
- You might worry: *"Does this eat up my context window?"*
193
+ - All data stays on your machine. No cloud, no telemetry.
194
+ - `allowed_chat_ids` whitelist — unauthorized users are silently ignored.
195
+ - `operator_ids` for shared groups — non-operators get read-only mode.
196
+ - `~/.metame/` directory is mode 700.
197
+ - Bot tokens stored locally, never transmitted.
707
198
 
708
- **Short answer: No. It likely saves you money.**
199
+ ## Performance
709
200
 
710
- * **Context Cost**: The entire MetaMe kernel + your profile takes up **~800-1000 tokens**.
711
- * **Impact**: On a 200k context window, this is **0.5%** of the memory.
712
- * **ROI**: By pre-loading your context, you avoid the "instructional drift" and repetitive correction loops that usually waste thousands of tokens at the start of every session.
713
- * **Passive Distillation Cost**: The signal capture hook is a local Node.js script (zero API calls). The Haiku distillation on launch processes only a small buffer of filtered messages — typically a few hundred tokens at Haiku's very low cost.
201
+ The entire cognitive layer costs ~800 tokens per session (0.4% of a 200k context window). Background distillation uses Haiku at minimal cost. Mobile commands like `/stop`, `/list`, `/undo` consume zero tokens.
714
202
 
715
- ## FAQ
203
+ ## Plugin (Lightweight)
716
204
 
717
- **Q: Does this replace `CLAUDE.md`?**
718
- A: No. It *prepends* its meta-cognitive protocol to your existing `CLAUDE.md`. Your project-specific notes remain intact.
205
+ Don't need mobile access? Install as a Claude Code plugin — profile injection + slash commands only:
719
206
 
207
+ ```bash
208
+ claude plugin install github:Yaron9/MetaMe/plugin
209
+ ```
720
210
 
721
- **Q: Is my data sent to a third party?**
722
- A: No. Your profile stays local at `~/.claude_profile.yaml`. MetaMe simply passes text to the official Claude Code tool.
723
-
724
- ## 📋 Changelog
725
-
726
- | Version | Highlights |
727
- |---------|------------|
728
- | **v1.3.19** | **Parallel multi-agent group chats** — `chat_agent_map` routes chatId → agent for true parallel execution; `/bind` command for one-tap group registration with Finder-style directory browser; `/chatid` to look up group ID; `allowed_chat_ids` hot-reload fix (read per message, no restart); `/fix` now merges current chatId config; daemon auto-restart via macOS LaunchAgent (5-second recovery); **operator_ids** permission layer — non-operators get read-only chat mode (query/search, no write/execute); `/myid` command to retrieve Feishu open_id |
729
- | **v1.3.18** | **Multi-agent project isolation** — `projects` in `daemon.yaml` with per-project heartbeat tasks, Feishu colored cards per project, `/agent` picker button, nickname routing (say agent name to switch instantly), reply-to-message session restoration, fix `~` expansion in project cwd |
730
- | **v1.3.17** | **Windows support** (WSL one-command installer), `install-systemd` for Linux/WSL daemon auto-start. Fix onboarding (Genesis interview was never injected, CLAUDE.md accumulated across runs). Marker-based cleanup, unified protocols, `--append-system-prompt` guarantees interview activation, Feishu auto-fetch chat ID, full mobile permissions, fix `/publish` false-success, auto-restart daemon on script update |
731
- | **v1.3.16** | Git-based `/undo` (auto-checkpoint before each turn, `git reset --hard` rollback), `/nosleep` toggle (macOS caffeinate), custom provider model passthrough (`/model` accepts any name for non-anthropic providers), auto-fallback to anthropic/opus on provider failure, message queue works on Telegram (fire-and-forget poll loop), lazy background distill |
732
- | **v1.3.15** | Native Playwright MCP (browser automation for all users), `/list` interactive file browser with buttons, Feishu image download fix, Skill/MCP/Agent status push, hot restart reliability (single notification, no double instance) |
733
- | **v1.3.14** | Fix daemon crash on fresh install (missing bundled scripts) |
734
- | **v1.3.13** | `/doctor` diagnostics, `/sh` direct shell, `/fix` config restore, `/model` interactive switcher with auto-backup, daemon state caching & config backup/restore |
735
- | **v1.3.12** | Session history bootstrap (cold-start fix), three-layer data architecture (Skeleton + Facets + Haiku), session summary extraction |
736
- | **v1.3.11** | Goal alignment & drift detection, provider relay system for third-party models, `/insights` facet integration |
737
- | **v1.3.10** | `/stop`, `/undo` with file restoration, `/model`, concurrent task protection, `metame continue`, daemon auto-restart on code change |
738
- | **v1.3.8** | Bidirectional file transfer (phone ↔ computer) |
739
- | **v1.3.7** | Real-time streaming status on mobile |
740
- | **v1.3** | Metacognition layer, remote Claude Code (Telegram & Feishu), workflow engine, heartbeat tasks, launchd auto-start |
741
-
742
- ## 📄 License
211
+ ## License
743
212
 
744
- MIT License. Feel free to fork, modify, and evolve your own Meta-Cognition.
213
+ MIT