docs: add progress report for TC-MAC-012 (macOS bridge base dir fix)

This commit is contained in:
Haitao Pan 2026-06-18 11:03:26 +00:00
parent cf97344708
commit d094c27b86

View File

@ -0,0 +1,61 @@
# 进度报告 · TC-MAC-012
| 项目 | 内容 |
|------|------|
| **用例编号** | TC-MAC-012 |
| **报告时间** | 2026-06-18 19:00 (Asia/Shanghai) |
| **关联提交** | `cf97344` fix: relocate xworkmate-bridge base dir under $HOME on macOS |
| **平台** | macOS (Darwin) 本机部署 |
| **状态** | ✅ 已修复并提交(待 Mac 端实跑复验) |
## 1. 问题现象
`curl -sfL .../setup-ai-workspace-all-in-one.sh | bash -` 在 macOS 本机部署时中断:
```
TASK [roles/vhosts/xworkmate_bridge/ : Ensure xworkmate-bridge base directory exists]
fatal: [127.0.0.1]: FAILED! => {"changed": false,
"msg": "There was an issue creating /opt/cloud-neutral as requested:
[Errno 13] Permission denied: b'/opt/cloud-neutral'",
"path": "/opt/cloud-neutral/xworkmate-bridge"}
PLAY RECAP
127.0.0.1 : ok=145 changed=12 unreachable=0 failed=1 skipped=176
```
## 2. 根因分析
- `roles/vhosts/xworkmate_bridge/defaults/main.yml``xworkmate_bridge_base_dir` 硬编码为 `/opt/cloud-neutral/xworkmate-bridge`
- macOS 部署以 `ansible_become=false` 运行(见 TC-MAC-002普通用户无权在 `/opt` 下创建目录,触发 `Errno 13`
- 该 base dir 同时被 `config.yaml`、launchd plist 的 `WorkingDirectory` 引用,因此必须指向用户可写路径。
## 3. 修复方案
沿用本仓库既有的 macOS 适配约定:不改动独立的 playbooks 仓库,而是在 `setup-ai-workspace-all-in-one.sh` 的 Darwin 分支以 `-e` 注入覆盖(与 `gateway_openclaw_home`、`agent_skills_home`、`xworkspace_console_root` 等同样处理)。
```bash
ANSIBLE_EXTRA_VARS+=("-e" "xworkmate_bridge_base_dir=$HOME/.local/state/cloud-neutral/xworkmate-bridge")
```
Ansible extra-vars 优先级高于 role defaults因此对在线`curl | bash`)与离线两种安装路径均生效;`config.yaml` 与 plist 的 `WorkingDirectory` 因派生自该变量而一并迁移。
## 4. 验证情况
- `bash -n` 语法检查通过。
- 已确认提交内 `-e` 覆盖存在且行为正确extra-vars 覆盖 role 默认值)。
- 复核 bridge 角色其余系统路径,确认不会把失败下移:
- `xworkmate_bridge_binary_path` (`/usr/local/bin/...`) 仅 `stat` 读取,非写入。
- 所有 `/etc/systemd` 任务已带 `when: ansible_os_family != 'Darwin'` 守卫。
- `/etc/caddy` 相关任务与 `gateway_openclaw` 完全一致,而该角色已在本次 145 个 OK 任务中通过,说明该机器 `/etc/caddy` 可写。
- 局限:当前环境无 Darwin 主机,未能实跑完整部署,验证基于变量优先级推导 + 路径审计。
## 5. 交付物
- `scripts/setup-ai-workspace-all-in-one.sh`Darwin 分支新增 base dir 覆盖(+4 行)。
- `docs/case/macos_compatibility_tests.md`:新增 TC-MAC-012 及修复维度总结更新。
- `docs/case/{combination_tests,test_prompts}.md`:随提交纳入版本管理。
## 6. 后续建议
1. 在 Mac 上重跑 `COMBO-001` 验证 bridge 任务通过。
2. 若下一阻塞点为 `/etc/caddy` 权限可按同样方式Darwin 守卫或 `-e` 重定向)处理。
3. 未纳入本次提交:预先存在且无关的 `create-ai-workspace-offline-package.sh`(新增 `npm`)改动,以及生成的离线包目录。