استعادة الجلسة
يحفظ cmux شكل عملك حتى تعيد إعادة تشغيل التطبيق النوافذ ومساحات العمل واللوحات وسياق الطرفية وحالة المتصفح نفسها.
ما الذي يستعيده cmux
بعد إعادة التشغيل، يستعيد cmux التخطيط والبيانات الوصفية التي يملكها التطبيق:
- تخطيط النوافذ ومساحات العمل واللوحات
- مجلدات العمل
- تمرير الطرفية الخلفي، بأفضل جهد
- رابط المتصفح وسجل التنقل
استئناف جلسات الوكلاء
يمكن استئناف وكلاء البرمجة المدعومين عندما يلتقط cmux معرف الجلسة الأصلي للوكيل. ثبّت hooks بعد تثبيت CLI الخاص بالوكيل حتى يكون الملف التنفيذي على PATH:
cmux hooks setup
cmux hooks setup codex
cmux hooks setup grok
cmux hooks setup antigravity
cmux hooks setup omp
cmux hooks setup --agent opencodeيشغّل cmux hooks setup كل تكامل مدعوم يعثر عليه ويطبع ملخصًا للوكلاء الذين تم تخطيهم. استخدم اسم وكيل عندما تريد تكاملًا واحدًا فقط.
أوامر استئناف surface مخصصة
يمكن للمستخدمين المتقدمين والتكاملات ربط أي surface طرفية بأمر إعادة تشغيل. يحفظ cmux الارتباطات التي ينشئها CLI العام أو socket للفحص والاستئناف اليدوي.
cmux surface resume set --kind tmux --checkpoint work --shell "tmux attach -t work"
cmux surface resume show --json
cmux surface resume clear --checkpoint workيمكن مراجعة البادئات المعتمدة أو تعديلها من Settings > Terminal > Resume Commands. يشغّل cmux تلقائيًا فقط ارتباطات الاستئناف التي يضع عليها علامة موثوقة، مثل ارتباطات tmux المكتشفة من العمليات الحية أو البادئات التي اعتمدها المستخدم. لا يحفظ cmux ذاكرة العمليات العامة. تُسقط مفاتيح البيئة الحساسة مثل الرموز وكلمات المرور والأسرار ومفاتيح API قبل حفظ ربط الاستئناف. ترتبط الموافقات أيضاً بدليل العمل وقيم البيئة الدقيقة عند وجودها.
الوكلاء المدعومون
| الوكيل | الملف التنفيذي | أمر الاستئناف | جسر التغذية |
|---|---|---|---|
| Claude Code | claude | claude --resume <id> | PermissionRequest |
| Codex | codex | codex resume <id> | PreToolUse، PermissionRequest |
| Grok / Grok Build CLI | grok | grok -r <id> | PreToolUse |
| OpenCode | opencode | opencode --session <id> | حافلة أحداث plugin |
| Pi | pi | pi --session <id> | لا يوجد |
| OMP | omp | omp --session <id> | لا يوجد |
| Amp | amp | amp threads continue <id> | لا يوجد |
| Cursor CLI | cursor-agent | cursor-agent --resume <id> | beforeShellExecution |
| Gemini | gemini | gemini --resume <id> | PreToolUse |
| Antigravity CLI | agy | agy --conversation <id> | PreToolUse, PostToolUse |
| Rovo Dev | acli | acli rovodev run --restore <id> | لا يوجد |
| Hermes Agent | hermes | hermes --resume <id> | pre_tool_call, post_tool_call, pre_approval_request, post_approval_response |
| Copilot | copilot | copilot --resume <id> | PreToolUse |
| CodeBuddy | codebuddy | codebuddy --resume <id> | PreToolUse |
| Factory | droid | droid --resume <id> | PreToolUse |
| Qoder | qodercli | qodercli --resume <id> | PreToolUse |
يتعامل cmux Claude wrapper مع Claude Code عندما يكون تكامل Claude مفعّلًا في الإعدادات. يقبل Antigravity أيضًا agy كاسم إعداد مستعار، ويقبل Rovo Dev rovo.
استعادة يدوية
يستعيد cmux آخر snapshot محفوظ عند التشغيل العادي. يمكنك أيضًا إعادة تطبيق snapshot السابقة يدويًا:
- History > Restore Previous App Launch
⌘ ⇧ Ocmux restore-session
تعطيل الاستئناف التلقائي للوكلاء
لاستعادة اللوحات من دون تشغيل أوامر استئناف الوكلاء المحفوظة، أوقف Settings > Terminal > Resume Agent Sessions on Reopen أو اضبط:
{
"terminal": {
"autoResumeAgentSessions": false
}
}يعطّل هذا أوامر استئناف الوكلاء فقط. يستمر cmux في استعادة التخطيط ومجلدات العمل والتمرير الخلفي وسجل المتصفح.
كيف يعمل
- يكتب cmux snapshot JSON بإصدار إلى ~/Library/Application Support/cmux/session-<bundle-id>.json، إضافة إلى cache للجلسة السابقة لإعادة الفتح اليدوي.
- يُحفظ تمرير الطرفية الخلفي كنص محدود ويعاد تشغيله عبر ملف مؤقت عند الاستعادة. هذا بأفضل جهد لأن تطبيقات الطرفية يمكنها إعادة رسم الشاشة أو مسحها.
- تكتب agent hooks الملف ~/.cmuxterm/<agent>-hook-sessions.json وفيه معرف جلسة الوكيل، ومعرف مساحة عمل cmux، ومعرف surface، وcwd، ومعرف العملية عند توفره، وأمر تشغيل منظف.
- عند الاستعادة، يعيد cmux بناء النوافذ واللوحات أولًا. إذا كان استئناف الوكلاء التلقائي مفعّلًا، يشغّل أمر shell لمرة واحدة ينفذ أمر الاستئناف الأصلي للوكيل مع معرف الجلسة المحفوظ.
تغطي وثائق الإعداد العادية cmux.json. تبقي استعادة الجلسة تخطيط التطبيق منفصلًا عن إعدادات عرض طرفية Ghostty.