大量更新
This commit is contained in:
18
35-黑苹果DELL/4-windows协同MacOS/2-260625-协同方案-prompt.md
Normal file
18
35-黑苹果DELL/4-windows协同MacOS/2-260625-协同方案-prompt.md
Normal file
@@ -0,0 +1,18 @@
|
||||
你是一名精通利用大模型Agent开发的工程师,你熟练的使用各类的Agent工具,如ClaudeCode Codex Reasonix OpenCode等
|
||||
|
||||
你更加偏向于使用桌面客户端的形式
|
||||
|
||||
你熟练使用windows和macos系统,你熟悉这两个系统的文件管理方式,文件权限管理方式,系统服务管理方式,网络配置管理方式
|
||||
|
||||
我有MacOS和Windows两台电脑,我的工作主力是Windows,我能否将MacOS设置为Agent执行的中枢,永不停机
|
||||
|
||||
MacOS的性能不是那么的好,所以编辑器IDEA Antigravity还是放置在Windows上面
|
||||
|
||||
现在的方案是
|
||||
1. 通过Windows的Codex桌面客户端远程控制MacOS上面的桌面客户端
|
||||
2. 通过Mutagen进行双向同步,将Windows的人工编辑内容同步到MacOS, 以及将MacOS的Agent执行的代码增量同步到Windows
|
||||
|
||||
|
||||
我的windows使用UniGetUI,内部有winget,chocalaty等包管理工具
|
||||
|
||||
请你基于上述的信息,给出完整包含Windows和MacOS双端的Mutagen设置方法以及使用注意实现
|
||||
258
35-黑苹果DELL/4-windows协同MacOS/3-260625-同步方案.md
Normal file
258
35-黑苹果DELL/4-windows协同MacOS/3-260625-同步方案.md
Normal file
@@ -0,0 +1,258 @@
|
||||
以下是基于你的 **Windows (主力开发) + macOS (Agent 执行中枢)** 架构的完整 Mutagen 双端配置方案。
|
||||
|
||||
***
|
||||
|
||||
## 整体架构说明
|
||||
|
||||
核心思路是:macOS 作为永不停机的 Agent 执行节点,Windows 上的 IDEA/Antigravity 负责人工编辑,Mutagen 在两端之间保持代码实时双向同步。 `.git` 目录仅保留在 macOS 侧(Agent 提交端),Windows 侧只同步 working tree。
|
||||
|
||||
```
|
||||
Windows (IDEA/Antigravity 编辑)
|
||||
↕ Mutagen SSH 双向同步 (two-way-resolved)
|
||||
macOS (Codex / ClaudeCode Agent 执行中枢,永不停机)
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 安装 Mutagen
|
||||
|
||||
**macOS 端:**
|
||||
```bash
|
||||
brew install mutagen-io/mutagen/mutagen
|
||||
# 注册为登录项,实现永不停机自启
|
||||
mutagen daemon register
|
||||
mutagen daemon start
|
||||
```
|
||||
|
||||
**Windows 端(PowerShell,推荐 Scoop):**
|
||||
```powershell
|
||||
scoop bucket add mutagen https://github.com/mutagen-io/mutagen-scoop
|
||||
scoop install mutagen
|
||||
# 注册为 Windows 登录自启动
|
||||
mutagen daemon register
|
||||
mutagen daemon start
|
||||
```
|
||||
|
||||
Mutagen daemon 支持通过 `mutagen daemon register` 命令在 macOS(launchd)和 Windows(登录启动项)上注册系统级自动启动 ,无需手动编写 plist 或注册表。 [mutagen](https://mutagen.io/documentation/introduction/daemon/)
|
||||
|
||||
***
|
||||
|
||||
## SSH 互信配置
|
||||
|
||||
Mutagen 通过 SSH 建立连接,Windows 侧作为发起端(client),macOS 侧作为服务端。
|
||||
|
||||
**macOS 端开启 SSH:**
|
||||
```bash
|
||||
# 系统偏好设置 → 共享 → 远程登录 开启
|
||||
# 或命令行
|
||||
sudo systemsetup -setremotelogin on
|
||||
# 确认监听
|
||||
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
|
||||
```
|
||||
|
||||
**Windows 端配置 SSH 密钥免密登录:**
|
||||
```powershell
|
||||
# 生成密钥(若已有可跳过)
|
||||
ssh-keygen -t ed25519 -C "mutagen-win-to-mac"
|
||||
|
||||
# 将公钥追加到 macOS 的 authorized_keys
|
||||
# 在 Windows PowerShell 中:
|
||||
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh robert@<MAC_IP> "cat >> ~/.ssh/authorized_keys"
|
||||
```
|
||||
|
||||
验证免密连通性:
|
||||
```powershell
|
||||
ssh robert@<MAC_IP> "echo ok"
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 全局配置文件(两端均建议配置)
|
||||
|
||||
在 **macOS** 和 **Windows** 的 `~/.mutagen.yml`(Windows 为 `%USERPROFILE%\.mutagen.yml`)中写入:
|
||||
|
||||
```yaml
|
||||
sync:
|
||||
defaults:
|
||||
mode: two-way-resolved
|
||||
maxEntryCount: 1000000
|
||||
scanMode: accelerated
|
||||
watch:
|
||||
mode: portable # ✅ 正确:嵌套在 watch 下
|
||||
ignore:
|
||||
vcs: true
|
||||
paths:
|
||||
- ".idea/**"
|
||||
- "*.class"
|
||||
- "*.pyc"
|
||||
- "__pycache__/**"
|
||||
- "node_modules/**"
|
||||
- ".venv/**"
|
||||
- "venv/**"
|
||||
- "dist/**"
|
||||
- "build/**"
|
||||
- "*.log"
|
||||
- ".DS_Store"
|
||||
- "Thumbs.db"
|
||||
symlink:
|
||||
mode: portable
|
||||
permissions:
|
||||
defaultFileMode: 0644
|
||||
defaultDirectoryMode: 0755
|
||||
```
|
||||
|
||||
`two-way-resolved` 模式在冲突时以修改时间较新的一方为准,适合人工编辑(Windows)与 Agent 自动生成(macOS)并行的场景 。`--ignore-vcs` 保证 `.git` 目录只留在 macOS Agent 端,Windows 只是纯 working tree 。 [github](https://github.com/mutagen-io/mutagen/issues/235)
|
||||
|
||||
***
|
||||
|
||||
## 创建同步会话
|
||||
|
||||
在 **Windows PowerShell** 中执行(由 Windows 侧发起 Session):
|
||||
|
||||
```powershell
|
||||
# 主项目同步
|
||||
mutagen sync create `
|
||||
--name="RMDC-CLOUD-SYNC" `
|
||||
--mode=two-way-resolved `
|
||||
--ignore-vcs `
|
||||
--ignore=".idea/**" `
|
||||
--ignore="*.class" `
|
||||
--ignore="__pycache__/**" `
|
||||
--ignore="node_modules/**" `
|
||||
--ignore=".venv/**" `
|
||||
--ignore="*.log" `
|
||||
--symlink-mode=portable `
|
||||
"C:\Users\wdd\Documents\IdeaProjects\RMDC-CLOUD" `
|
||||
"wdd@192.168.1.30:/Users/wdd/Documents/IdeaProjects/RMDC-CLOUD"
|
||||
```
|
||||
|
||||
如果有多个项目,可以为每个项目单独创建 session,用 `--name` 区分:
|
||||
|
||||
```powershell
|
||||
mutagen sync create `
|
||||
--name="AGI-PROMPT-SYNC" `
|
||||
--mode=two-way-resolved `
|
||||
--ignore-vcs `
|
||||
--ignore=".idea/**" `
|
||||
--ignore="*.class" `
|
||||
--ignore="__pycache__/**" `
|
||||
--ignore="node_modules/**" `
|
||||
--ignore=".venv/**" `
|
||||
--ignore="*.log" `
|
||||
--symlink-mode=portable `
|
||||
"C:\Users\wdd\Documents\IdeaProjects\ProjectAGiPrompt" `
|
||||
"wdd@192.168.1.30:/Users/wdd/Documents/IdeaProjects/ProjectAGiPrompt"
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 使用 Mutagen Project 编排多项目(推荐)
|
||||
|
||||
在项目根目录创建 `mutagen.yml`,方便一键启停所有 session:
|
||||
|
||||
```yaml
|
||||
# Windows 项目根目录下的 mutagen.yml
|
||||
sync:
|
||||
backend:
|
||||
alpha: "."
|
||||
beta: "robert@<MAC_IP>:~/Projects/myproject"
|
||||
mode: "two-way-resolved"
|
||||
ignore:
|
||||
vcs: true
|
||||
paths:
|
||||
- ".idea/**"
|
||||
- "__pycache__/**"
|
||||
- "node_modules/**"
|
||||
- ".venv/**"
|
||||
- "*.log"
|
||||
- "dist/**"
|
||||
- "build/**"
|
||||
symlink:
|
||||
mode: "portable"
|
||||
watch:
|
||||
mode: "portable"
|
||||
```
|
||||
|
||||
使用方式:
|
||||
```powershell
|
||||
cd C:\Users\Robert\Projects\myproject
|
||||
mutagen project start # 启动所有 session
|
||||
mutagen project list # 查看状态
|
||||
mutagen project flush # 强制立即同步一次
|
||||
mutagen project pause # 暂停
|
||||
mutagen project terminate # 终止
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## macOS 永不停机配置
|
||||
|
||||
除了 `mutagen daemon register` 之外,还需要防止 macOS 休眠中断同步:
|
||||
|
||||
```bash
|
||||
# 禁止 macOS 休眠(适合作为 Agent 服务器)
|
||||
sudo pmset -a sleep 0
|
||||
sudo pmset -a disksleep 0
|
||||
sudo pmset -a displaysleep 30 # 屏幕可以睡,系统不睡
|
||||
sudo pmset -a powernap 1 # 开启 Power Nap 保持网络
|
||||
```
|
||||
|
||||
确认当前电源策略:
|
||||
```bash
|
||||
pmset -g
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 关键使用注意事项
|
||||
|
||||
### ⚠️ 冲突处理规则
|
||||
`two-way-resolved` 会以**修改时间较新**的文件覆盖较旧的,Agent 批量生成文件时速度很快,如果你在 Windows 同时手动编辑同一文件,存在覆盖风险。建议:
|
||||
- Agent 执行期间,避免在 Windows 上同时修改 Agent 正在处理的文件
|
||||
- 利用 `mutagen sync pause --name=agent-project-sync` 在需要时临时暂停
|
||||
|
||||
### ⚠️ `.git` 目录仅留 macOS 侧
|
||||
由于配置了 `--ignore-vcs`,Windows 侧没有 `.git`,**不能在 Windows 侧执行 git 操作**,所有 commit / branch 操作需要在 macOS 上进行(或通过 SSH 远程到 macOS 执行)。 [mutagen](https://mutagen.io/documentation/synchronization/version-control-systems/)
|
||||
|
||||
### ⚠️ 大文件 / 二进制文件
|
||||
模型权重、数据集等大文件不应纳入同步范围,在 `ignore` 中明确排除:
|
||||
```yaml
|
||||
- "models/**"
|
||||
- "*.bin"
|
||||
- "*.safetensors"
|
||||
- "*.gguf"
|
||||
- "data/**"
|
||||
```
|
||||
|
||||
### ⚠️ 网络中断恢复
|
||||
Mutagen 会自动重连,SSH 断线后 daemon 保持 session 状态,重新连接后会自动 reconcile。可以通过以下命令检查 session 健康状态:
|
||||
```powershell
|
||||
mutagen sync list # 查看所有 session 状态
|
||||
mutagen sync monitor agent-project-sync # 实时监控某个 session
|
||||
```
|
||||
|
||||
### ⚠️ Windows 路径与权限
|
||||
Windows 侧文件默认没有 POSIX 权限概念,Mutagen 会使用 `--default-file-mode` 和 `--default-directory-mode` 来为同步到 macOS 的文件设置权限:
|
||||
```powershell
|
||||
mutagen sync create `
|
||||
--default-file-mode=0644 `
|
||||
--default-directory-mode=0755 `
|
||||
...
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 日常操作速查
|
||||
|
||||
| 操作 | 命令(Windows PowerShell) |
|
||||
|---|---|
|
||||
| 查看所有 session | `mutagen sync list` |
|
||||
| 实时监控同步状态 | `mutagen sync monitor <name>` |
|
||||
| 强制立即同步 | `mutagen sync flush <name>` |
|
||||
| 暂停同步 | `mutagen sync pause <name>` |
|
||||
| 恢复同步 | `mutagen sync resume <name>` |
|
||||
| 重置冲突 | `mutagen sync reset <name>` |
|
||||
| 停止并删除 session | `mutagen sync terminate <name>` |
|
||||
| 守护进程状态 | `mutagen daemon stop && mutagen daemon start` |
|
||||
|
||||
Mutagen daemon 升级后需要重启:先 `mutagen daemon stop` 再 `mutagen daemon start`,直接升级不重启会有 API 版本不匹配警告 。 [mutagen](https://mutagen.io/documentation/introduction/getting-started/)
|
||||
Reference in New Issue
Block a user