> ការបកប្រែនេះត្រូវបានបង្កើតដោយ Claude។ ប្រសិនបើអ្នកមានការកែលម្អ សូមបង្កើត PR។
Terminal សម្រាប់ macOS ផ្អែកលើ Ghostty ដែលមាន tab បញ្ឈរ និងការជូនដំណឹងសម្រាប់ AI coding agents
English | 日本語 | Tiếng Việt | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | ភាសាខ្មែរ | Українська
▶ វីដេអូបង្ហាញពីដំណើរការ (Demo) · ទស្សនវិជ្ជារបស់ cmux (The Zen of cmux)
## មុខងារ
រង្វង់ការជូនដំណឹងផ្ទាំង (panes) ទទួលបានរង្វង់ពណ៌ខៀវ ហើយផ្ទាំងផ្លាក (tabs) ភ្លឺឡើង នៅពេលភ្នាក់ងារសរសេរកូដ (coding agents) ត្រូវការការយកចិត្តទុកដាក់ពីអ្នក |
|
បន្ទះការជូនដំណឹងមើលការជូនដំណឹងដែលកំពុងរង់ចាំទាំងអស់នៅកន្លែងតែមួយ លោតទៅកាន់សារដែលមិនទាន់អានថ្មីបំផុត |
|
កម្មវិធីរុករកក្នុងកម្មវិធីបំបែកកម្មវិធីរុករកនៅជាប់នឹង terminal របស់អ្នក ជាមួយ API ដែលអាចសរសេរ script បាន បានបម្លែងពី agent-browser |
|
ផ្ទាំងផ្លាកបញ្ឈរ + ផ្តេករបារចំហៀង (Sidebar) បង្ហាញ git branch, ស្ថានភាព/លេខ PR ដែលភ្ជាប់, directory កំពុងធ្វើការ, ports ដែលកំពុងស្តាប់, និងអត្ថបទការជូនដំណឹងថ្មីបំផុត។ បំបែកតាមផ្តេក និងបញ្ឈរ។ |
|
SSHcmux ssh user@remote បង្កើត workspace សម្រាប់ម៉ាស៊ីនពីចម្ងាយ។ ផ្ទាំងកម្មវិធីរុករកធ្វើដំណើរឆ្លងកាត់បណ្តាញពីចម្ងាយ ដូច្នេះ localhost ដំណើរការបានយ៉ាងស្រួល។ អូសរូបភាពចូលទៅក្នុង session ពីចម្ងាយ ដើម្បីផ្ទុកឡើងតាមរយៈ scp។
|
|
Claude Code Teamscmux claude-teams ដំណើរការ teammate mode របស់ Claude Code ដោយប្រើពាក្យបញ្ជាតែមួយ។ សមាជិកក្រុមកើតឡើងជា splits ដើមកំណើត ជាមួយ metadata របារចំហៀង និងការជូនដំណឹង។ មិនត្រូវការ tmux ឡើយ។
|
|
បើក `.dmg` ហើយអូស cmux ទៅកាន់ថត Applications របស់អ្នក។ cmux ធ្វើបច្ចុប្បន្នភាពដោយស្វ័យប្រវត្តិតាមរយៈ Sparkle ដូច្នេះអ្នកគ្រាន់តែទាញយកម្តងគឺគ្រប់គ្រាន់ហើយ។
### Homebrew
```bash
brew tap manaflow-ai/cmux
brew install --cask cmux
```
ដើម្បីធ្វើបច្ចុប្បន្នភាពពេលក្រោយ៖
```bash
brew upgrade --cask cmux
```
នៅពេលបើកលើកដំបូង macOS អាចសុំឱ្យអ្នកបញ្ជាក់ការបើកកម្មវិធីពីអ្នកអភិវឌ្ឍន៍ដែលបានកំណត់អត្តសញ្ញាណ។ ចុច **Open** ដើម្បីបន្ត។
## ហេតុអ្វីបានជា cmux?
ខ្ញុំដំណើរការ Claude Code និង Codex ច្រើនវគ្គស្របគ្នា។ ខ្ញុំធ្លាប់ប្រើ Ghostty ជាមួយផ្ទាំងបំបែកជាច្រើន ហើយពឹងផ្អែកលើការជូនដំណឹងដើមនៃ macOS ដើម្បីដឹងពេលណាដែលភ្នាក់ងារត្រូវការខ្ញុំ។ ប៉ុន្តែខ្លឹមសារនៃការជូនដំណឹងរបស់ Claude Code តែងតែគ្រាន់តែជា "Claude is waiting for your input" ដោយគ្មានបរិបទ ហើយជាមួយផ្ទាំងបើកច្រើនគ្រប់គ្រាន់ ខ្ញុំមិនអាចសូម្បីតែអានចំណងជើងបានទៀតទេ។
ខ្ញុំបានសាកល្បង orchestrator សរសេរកូដមួយចំនួន ប៉ុន្តែភាគច្រើននៃពួកវាជាកម្មវិធី Electron/Tauri ហើយដំណើរការរបស់វាបានធ្វើឲ្យខ្ញុំធុញ។ ខ្ញុំក៏គ្រាន់តែចូលចិត្ត terminal ច្រើនជាង ដោយសារ orchestrator ប្រភេទ GUI ចាក់សោអ្នកនៅក្នុង workflow របស់ពួកវា។ ដូច្នេះខ្ញុំបានបង្កើត cmux ជាកម្មវិធី macOS ដើមនៅក្នុង Swift/AppKit។ វាប្រើ libghostty សម្រាប់ការបង្ហាញ terminal ហើយអាន config Ghostty ដែលមានស្រាប់របស់អ្នកសម្រាប់ theme ពុម្ពអក្សរ និងពណ៌។
ការបន្ថែមសំខាន់ៗគឺ sidebar និងប្រព័ន្ធជូនដំណឹង។ sidebar មានផ្ទាំងបញ្ឈរដែលបង្ហាញ git branch ស្ថានភាព/លេខ PR ដែលភ្ជាប់ ថតធ្វើការ port ដែលកំពុងស្ដាប់ និងអត្ថបទជូនដំណឹងចុងក្រោយបំផុតសម្រាប់ workspace នីមួយៗ។ ប្រព័ន្ធជូនដំណឹងចាប់យកលំដាប់ terminal (OSC 9/99/777) ហើយមាន CLI (`cmux notify`) ដែលអ្នកអាចភ្ជាប់ចូលទៅក្នុង hook របស់ភ្នាក់ងារសម្រាប់ Claude Code, OpenCode ។ល។ នៅពេលភ្នាក់ងារកំពុងរង់ចាំ ផ្ទាំងរបស់វាទទួលបានរង្វង់ពណ៌ខៀវ ហើយផ្ទាំងភ្លឺឡើងនៅក្នុង sidebar ដូច្នេះខ្ញុំអាចប្រាប់ថាមួយណាត្រូវការខ្ញុំ កាត់ឆ្លងផ្ទាំងបំបែក និងផ្ទាំងផ្សេងៗ។ Cmd+Shift+U លោតទៅសារដែលមិនទាន់អានថ្មីបំផុត។
browser ក្នុងកម្មវិធីមាន API ដែលអាចសរសេរ script បានដែលផ្ទេរមកពី [agent-browser](https://github.com/vercel-labs/agent-browser)។ ភ្នាក់ងារអាចថត snapshot នៃ accessibility tree ទទួល ref នៃ element ចុច បំពេញ form និងវាយតម្លៃ JS។ អ្នកអាចបំបែកផ្ទាំង browser នៅជាប់នឹង terminal របស់អ្នក ហើយឲ្យ Claude Code ធ្វើអន្តរកម្មជាមួយ dev server របស់អ្នកដោយផ្ទាល់។
អ្វីៗគ្រប់យ៉ាងអាចសរសេរ script បានតាមរយៈ CLI និង socket API — បង្កើត workspace/ផ្ទាំង បំបែកផ្ទាំង ផ្ញើ keystroke បើក URL នៅក្នុង browser។
## ហ្សិន (Zen) នៃ cmux
cmux មិនកំណត់ច្បាប់អំពីរបៀបដែលអ្នកអភិវឌ្ឍកាន់ឧបករណ៍របស់ពួកគេទេ។ វាជា terminal និង browser ជាមួយ CLI ហើយផ្នែកដែលនៅសល់គឺអាស្រ័យលើអ្នក។
cmux គឺជា primitive មិនមែនជាដំណោះស្រាយទេ។ វាផ្ដល់ឲ្យអ្នកនូវ terminal មួយ browser មួយ ការជូនដំណឹង workspace ការបំបែក ផ្ទាំង និង CLI មួយដើម្បីគ្រប់គ្រងវាទាំងអស់។ cmux មិនបង្ខំអ្នកចូលទៅក្នុងវិធីដែលមានគំនិតផ្ដាច់ការក្នុងការប្រើភ្នាក់ងារសរសេរកូដទេ។ អ្វីដែលអ្នកសាងសង់ជាមួយ primitive គឺជារបស់អ្នក។
អ្នកអភិវឌ្ឍល្អបំផុតតែងតែបានសាងសង់ឧបករណ៍ផ្ទាល់ខ្លួនរបស់ពួកគេ។ គ្មាននរណាម្នាក់បានរកឃើញវិធីល្អបំផុតក្នុងការធ្វើការជាមួយភ្នាក់ងារនៅឡើយទេ ហើយក្រុមដែលកំពុងសាងសង់ផលិតផលបិទជិតក៏ប្រាកដជាមិនបានរកឃើញដែរ។ អ្នកអភិវឌ្ឍដែលជិតស្និទ្ធបំផុតនឹង codebase ផ្ទាល់ខ្លួនរបស់ពួកគេនឹងរកឃើញវាមុនគេ។
ផ្ដល់ឲ្យអ្នកអភិវឌ្ឍមួយលាននាក់នូវ primitive ដែលអាចផ្គុំបាន ហើយពួកគេនឹងរួមគ្នារកឃើញ workflow ដែលមានប្រសិទ្ធភាពបំផុតលឿនជាងក្រុមផលិតផលណាមួយអាចរចនាពីលើចុះក្រោម។
## ឯកសារ
សម្រាប់ព័ត៌មានបន្ថែមអំពីរបៀបកំណត់រចនាសម្ព័ន្ធ cmux [សូមមកកាន់ឯកសាររបស់យើង](https://cmux.com/docs/getting-started?utm_source=readme)។
## ផ្លូវកាត់ក្ដារចុច
### Workspaces
| Shortcut | Action |
|----------|--------|
| ⌘ N | Workspace ថ្មី |
| ⌘ 1–8 | លោតទៅ workspace 1–8 |
| ⌘ 9 | លោតទៅ workspace ចុងក្រោយ |
| ⌃ ⌘ ] | Workspace បន្ទាប់ |
| ⌃ ⌘ [ | Workspace មុន |
| ⌘ ⇧ W | បិទ workspace |
| ⌘ ⇧ R | ប្ដូរឈ្មោះ workspace |
| ⌥ ⌘ E | កែសម្រួលការពិពណ៌នា workspace |
| ⌘ B | បិទ/បើក sidebar |
| ⌥ ⌘ B | បិទ/បើក sidebar ខាងស្ដាំ |
| ⌘ ⇧ E | បិទ/បើកការផ្ដោតលើ sidebar ខាងស្ដាំ |
### Surfaces
| Shortcut | Action |
|----------|--------|
| ⌘ T | Surface ថ្មី |
| ⌘ ⇧ ] | Surface បន្ទាប់ |
| ⌘ ⇧ [ | Surface មុន |
| ⌃ Tab | Surface បន្ទាប់ |
| ⌃ ⇧ Tab | Surface មុន |
| ⌃ 1–8 | លោតទៅ surface 1–8 |
| ⌃ 9 | លោតទៅ surface ចុងក្រោយ |
| ⌘ W | បិទ surface |
### Split Panes
| Shortcut | Action |
|----------|--------|
| ⌘ D | បំបែកទៅស្ដាំ |
| ⌘ ⇧ D | បំបែកចុះក្រោម |
| ⌥ ⌘ ← → ↑ ↓ | ផ្ដោតលើផ្ទាំងតាមទិសដៅ |
| ⌘ ⇧ H | បញ្ចេញពន្លឺផ្ទាំងដែលផ្ដោត |
### Browser
ផ្លូវកាត់ឧបករណ៍អ្នកអភិវឌ្ឍនៃ browser អនុវត្តតាមលំនាំដើមរបស់ Safari ហើយអាចប្ដូរបានក្នុង `Settings → Keyboard Shortcuts`។
ផ្លូវកាត់រុករក command palette រួមទាំង ⌃ P ក៏អាចប្ដូរបានដែរ ហើយអាចសម្អាតបាន ដើម្បីឲ្យការចុចគ្រាប់ចុចទៅដល់ terminal សកម្ម។
| Shortcut | Action |
|----------|--------|
| ⌘ ⇧ L | បើក browser ក្នុងការបំបែក |
| ⌘ L | ផ្ដោតលើរបារអាសយដ្ឋាន |
| ⌘ [ | ថយក្រោយ |
| ⌘ ] | ទៅមុខ |
| ⌘ R | ផ្ទុកទំព័រឡើងវិញ |
| ⌥ ⌘ I | បិទ/បើក Developer Tools (លំនាំដើម Safari) |
| ⌥ ⌘ C | បង្ហាញ JavaScript Console (លំនាំដើម Safari) |
### Notifications
| Shortcut | Action |
|----------|--------|
| ⌘ I | បង្ហាញផ្ទាំងជូនដំណឹង |
| ⌘ ⇧ U | លោតទៅសារមិនទាន់អានថ្មីបំផុត |
| ⌥ ⌘ U | បិទ/បើកស្ថានភាពមិនទាន់អាននៃធាតុបច្ចុប្បន្ន |
| ⌃ ⌘ U | សម្គាល់ធាតុបច្ចុប្បន្នជាសារមិនទាន់អានចាស់បំផុត ហើយលោតទៅសារមិនទាន់អានថ្មីបន្ទាប់ |
### Find
| Shortcut | Action |
|----------|--------|
| ⌘ F | ស្វែងរក |
| ⌘ ⇧ F | ស្វែងរកក្នុងថត |
| ⌘ G / ⌥ ⌘ G | ស្វែងរកបន្ទាប់ / មុន |
| ⌥ ⌘ ⇧ F | លាក់របារស្វែងរក |
| ⌘ E | ប្រើការជ្រើសរើសសម្រាប់ស្វែងរក |
### Terminal
| Shortcut | Action |
|----------|--------|
| ⌘ K | សម្អាត scrollback |
| ⌘ C | ចម្លង (ជាមួយការជ្រើសរើស) |
| ⌘ V | បិទភ្ជាប់ |
| ⌘ + / ⌘ - | បង្កើន / បន្ថយទំហំពុម្ពអក្សរ |
| ⌘ 0 | កំណត់ទំហំពុម្ពអក្សរឡើងវិញ |
### Window
| Shortcut | Action |
|----------|--------|
| ⌘ ⇧ N | បង្អួចថ្មី |
| ⌘ ⇧ O | បើកវគ្គមុនឡើងវិញ |
| ⌘ , | ការកំណត់ |
| ⌘ ⇧ , | ផ្ទុកការកំណត់រចនាសម្ព័ន្ធឡើងវិញ |
| ⌘ Q | ចាកចេញ |
## ការស្ថាបនាប្រចាំយប់ (Nightly Builds)
[Download cmux NIGHTLY](https://github.com/manaflow-ai/cmux/releases/download/nightly/cmux-nightly-macos.dmg)
cmux NIGHTLY គឺជាកម្មវិធីដាច់ដោយឡែកមួយដែលមាន bundle ID ផ្ទាល់របស់វា ដូច្នេះវាដំណើរការទន្ទឹមនឹងកំណែដែលមានស្ថិរភាព។ វាត្រូវបានស្ថាបនាដោយស្វ័យប្រវត្តិពី commit `main` ចុងក្រោយបង្អស់ និងធ្វើបច្ចុប្បន្នភាពដោយស្វ័យប្រវត្តិតាមរយៈ feed Sparkle ផ្ទាល់របស់វា។
រាយការណ៍ពីបញ្ហា nightly នៅលើ [GitHub Issues](https://github.com/manaflow-ai/cmux/issues) ឬនៅក្នុង [#nightly-bugs on Discord](https://discord.gg/xsgFEVrWCZ)។
## ការស្ដារ Session ឡើងវិញ
ការចាកចេញពី cmux រក្សាទុក session បច្ចុប្បន្ន។ នៅពេលបើកដំណើរការឡើងវិញ cmux ស្ដារស្ថានភាពដែលជាកម្មសិទ្ធិរបស់កម្មវិធីឡើងវិញ៖
- ប្លង់ Window/workspace/pane
- ថតធ្វើការ
- Terminal scrollback (តាមការខិតខំល្អបំផុត)
- URL របស់ browser និងប្រវត្តិការរុករក
cmux មិនធ្វើ checkpoint ស្ថានភាពដំណើរការផ្ទាល់ណាមួយតាមអំពើចិត្តទេ។ tmux, vim, shells និងកម្មវិធី terminal ដែលមិនត្រូវបានគាំទ្រ នឹងបើកឡើងវិញជា terminal ធម្មតា។
Session របស់ agent ដែលត្រូវបានគាំទ្រអាចបន្តដំណើរការវិញបាន នៅពេលដែល hooks បានរក្សាទុក session ID ដើមកំណើត។ ដំឡើង hooks បន្ទាប់ពីដំឡើង agent CLI ដើម្បីឱ្យ binary របស់វាស្ថិតនៅលើ `PATH`៖
```bash
cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode
```
`cmux hooks setup` ដំឡើង agent ដែលត្រូវបានគាំទ្រដែលវាអាចរកឃើញ និងបោះពុម្ពសេចក្ដីសង្ខេបសម្រាប់ agent ដែលត្រូវបានរំលង។ ការរួមបញ្ចូលការបន្តដំណើរការវិញ (resume) ដែលត្រូវបានគាំទ្ររួមមាន Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Rovo Dev, Copilot, CodeBuddy, Factory និង Qoder។ Claude Code ត្រូវបានដោះស្រាយដោយ cmux Claude wrapper នៅពេលដែលការរួមបញ្ចូល Claude ត្រូវបានបើកនៅក្នុង Settings។
អ្នកប្រើកម្រិតខ្ពស់ និងការរួមបញ្ចូលអាចភ្ជាប់ពាក្យបញ្ជាបន្តដំណើរការវិញ (resume) ផ្ទាល់ខ្លួនទៅ surface terminal បច្ចុប្បន្ន។ វាមានប្រយោជន៍សម្រាប់ឧបករណ៍ដែលមានស្ថានភាពស្ថិតស្ថេរផ្ទាល់ខ្លួន ដូចជា session tmux ឬ agent CLI ផ្ទាល់ខ្លួន៖
```bash
cmux surface resume set --kind tmux --checkpoint work --shell "tmux attach -t work"
cmux surface resume show --json
cmux surface resume clear --checkpoint work
```
ការភ្ជាប់នេះនៅតែភ្ជាប់ជាប់នឹង surface របស់ cmux។ ការភ្ជាប់ដែលបង្កើតឡើងតាមរយៈ CLI សាធារណៈ ឬ socket ត្រូវបានរក្សាទុកសម្រាប់ការត្រួតពិនិត្យ និងការស្ដារដោយដៃ លុះត្រាតែអ្នកអនុម័តបុព្វបទពាក្យបញ្ជាដែលបានចុះហត្ថលេខា (signed command prefix) សម្រាប់ការស្ដារដោយស្វ័យប្រវត្តិ។ បុព្វបទដែលបានអនុម័តក៏ត្រូវបានភ្ជាប់ទៅនឹងថតធ្វើការ និងតម្លៃបរិស្ថានពិតប្រាកដផងដែរ នៅពេលដែលមាន។ ត្រួតពិនិត្យ ឬកែសម្រួលការអនុម័តនៅក្នុង **Settings > Terminal > Resume Commands**។ cmux ដំណើរការដោយស្វ័យប្រវត្តិតែការភ្ជាប់ resume ដែលវាសម្គាល់ថាគួរឱ្យទុកចិត្តប៉ុណ្ណោះ ដូចជាការភ្ជាប់ tmux ដែលត្រូវបានរកឃើញពីដំណើរការផ្ទាល់ ឬបុព្វបទដែលអ្នកប្រើបានអនុម័ត។ កូនសោបរិស្ថានរសើបដូចជា tokens, passwords, secrets និង API keys ត្រូវបានលុបចេញមុនពេលការភ្ជាប់ resume ត្រូវបានរក្សាទុក។
ដើម្បីរក្សា terminal របស់ agent ដែលបានស្ដារ ឱ្យនៅទំនេរ ជំនួសឱ្យការដំណើរការពាក្យបញ្ជា resume របស់ពួកវាដោយស្វ័យប្រវត្តិ សូមបិទ **Settings > Terminal > Resume Agent Sessions on Reopen** ឬកំណត់វានៅក្នុង `~/.config/cmux/cmux.json`៖
```json
{
"terminal": {
"autoResumeAgentSessions": false
}
}
```
វាបិទតែពាក្យបញ្ជា resume របស់ agent ដោយស្វ័យប្រវត្តិប៉ុណ្ណោះ។ cmux នៅតែស្ដារប្លង់ដែលបានរក្សាទុក ថតធ្វើការ scrollback និងប្រវត្តិ browser ឡើងវិញ។
ប្រសិនបើអ្នកត្រូវការអនុវត្ត snapshot ដែលបានរក្សាទុកចុងក្រោយឡើងវិញដោយដៃ សូមប្រើ៖
- `File > Reopen Previous Session`
- `⌘ ⇧ O`
- `cmux restore-session`
នៅពីក្រោយឆាក cmux សរសេរ snapshot ដែលមានកំណែ នៅក្រោម `~/Library/Application Support/cmux/` ហើយ agent hooks សរសេរ session mappings នៅក្រោម `~/.cmuxterm/`។ នៅពេលស្ដារ cmux កសាងប្លង់ឡើងវិញជាមុនសិន បន្ទាប់មកដំណើរការពាក្យបញ្ជា resume ដើមកំណើតរបស់ agent ដែលត្រូវបានគាំទ្រ នៅពេលដែលការ resume agent ដោយស្វ័យប្រវត្តិត្រូវបានបើក។
អានការណែនាំពេញលេញនៅ
WeChat: ស្កេនកូដ QR ដើម្បីចូលរួមសហគមន៍។