chore: archive AgentDock v1 implementation
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
# AgentDock 网页控制台部署说明
|
||||
|
||||
## 访问范围
|
||||
|
||||
控制台固定绑定服务器地址 `192.168.200.36`,默认端口为 `8443`:
|
||||
|
||||
```text
|
||||
https://192.168.200.36:8443
|
||||
```
|
||||
|
||||
Caddy 同时检查来源 IP,只接受 `192.168.200.0/24`。Compose 不映射
|
||||
Runner 和 Console 的内部端口,局域网只能接触 HTTPS 代理。
|
||||
|
||||
## 准备 `.env`
|
||||
|
||||
在服务器执行:
|
||||
|
||||
```bash
|
||||
cd /vol1/1000/docker/ai-toools
|
||||
cp -n .env.example .env
|
||||
chmod 600 .env
|
||||
```
|
||||
|
||||
必须设置三个独立的机密值:
|
||||
|
||||
```dotenv
|
||||
ADMIN_PASSWORD=一个至少12位的管理员密码
|
||||
RUNNER_TOKEN=至少32位随机字符串
|
||||
CONFIG_ENCRYPTION_KEY=至少32位随机字符串
|
||||
```
|
||||
|
||||
可以用 OpenSSL 生成随机值:
|
||||
|
||||
```bash
|
||||
openssl rand -base64 36
|
||||
```
|
||||
|
||||
不要把三个值写进 `compose.yaml`、Dockerfile 或 Git。`CONFIG_ENCRYPTION_KEY`
|
||||
丢失后,设置页中保存的 API Key 将无法解密。
|
||||
|
||||
## 构建和启动
|
||||
|
||||
```bash
|
||||
cd /vol1/1000/docker/ai-toools
|
||||
mkdir -p workspace data console-data
|
||||
chmod +x scripts/generate-console-certificate.sh
|
||||
./scripts/generate-console-certificate.sh /vol1/1000/docker/ai-toools
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
docker compose ps
|
||||
docker compose logs --tail=100 ai-tools ai-console ai-proxy
|
||||
```
|
||||
|
||||
健康状态应为 `healthy`。检查内部服务:
|
||||
|
||||
```bash
|
||||
docker compose exec ai-tools curl -fsS http://127.0.0.1:4174/health
|
||||
docker compose exec ai-console wget -qO- http://127.0.0.1:4173/health
|
||||
```
|
||||
|
||||
## 信任局域网证书
|
||||
|
||||
Caddy 使用部署目录中为服务器 IP 生成的自签名证书。把证书复制到 Windows:
|
||||
|
||||
```bash
|
||||
cd /vol1/1000/docker/ai-toools
|
||||
scp nas:/vol1/1000/docker/ai-toools/proxy/certs/agentdock.crt .
|
||||
```
|
||||
|
||||
复制到 Windows 后,在当前用户的受信任根证书存储中安装:
|
||||
|
||||
```powershell
|
||||
certutil -user -addstore Root .\agentdock.crt
|
||||
```
|
||||
|
||||
只应信任从自己的 `192.168.200.36` 服务器导出的证书。安装后重新打开浏览器,
|
||||
访问 `https://192.168.200.36:8443`。
|
||||
|
||||
## 第一次使用
|
||||
|
||||
1. 使用 `.env` 中的 `ADMIN_PASSWORD` 登录。
|
||||
2. 在顶部选择 `/workspace` 下的项目。
|
||||
3. 在设置页填写需要的 API Key,或点击“打开终端”进入独立授权终端完成设备授权。
|
||||
4. 回到工作台,选择 CLI 后直接发送消息。
|
||||
5. DeepSeek Harness 必须先填写任务再发送,使用 `headless` 执行一次后自动退出。
|
||||
|
||||
工作台的“会话”页使用非交互 CLI 输出和单一多行输入框。每条消息对应一次任务,
|
||||
回复按时间连续显示。按 Enter 发送,按 Shift+Enter 换行。初始化授权使用独立的
|
||||
可交互终端;“原始输出”页只用于查看本次非交互任务的底层输出,不接收键盘输入。
|
||||
|
||||
当前 `@deepseek-ai/dsh@0.1.1-rc.2` 没有发布可直接安装的 TUI profile bundle。
|
||||
CLI 帮助中的 `tui` 只是自定义 profile 示例,不能直接执行。AgentDock 因此只开放
|
||||
官方内置并适合本控制台的 `headless` profile,不开放 Harness 自带 Web 服务。
|
||||
DeepSeek Harness 不使用其他 CLI 的网页登录状态,必须在设置页配置
|
||||
`DEEPSEEK_API_KEY` 才能运行。
|
||||
|
||||
API Key 使用 AES-256-GCM 加密后存放于 `console-data/settings.enc.json`,接口只返回
|
||||
掩码。原有 CLI 自己的登录状态仍保存在 `data` 目录。
|
||||
|
||||
## 会话生命周期
|
||||
|
||||
- 浏览器关闭:CLI 进程继续运行,重新登录后可继续连接。
|
||||
- `ai-console` 重启:CLI 进程不受影响,但管理员需要重新登录。
|
||||
- `ai-tools` 重启:其中的所有 CLI 进程会停止;历史输出仍保留。
|
||||
- `docker compose down`:所有 CLI 进程停止,`data` 和 `console-data` 不删除。
|
||||
|
||||
## 安全检查
|
||||
|
||||
```bash
|
||||
# 不应出现 docker.sock
|
||||
docker inspect ai-tools --format '{{json .Mounts}}' | grep docker.sock
|
||||
|
||||
# 主机只应监听 HTTPS 端口,不应监听 4173/4174
|
||||
ss -lnt | grep -E '(:8443|:4173|:4174)'
|
||||
```
|
||||
|
||||
第一条命令没有输出是正确结果。第二条只应看到 `192.168.200.36:8443`。
|
||||
@@ -0,0 +1,161 @@
|
||||
# 部署说明
|
||||
|
||||
## 1. 部署前提
|
||||
|
||||
Ubuntu 主机需要满足:
|
||||
|
||||
- Ubuntu 22.04 或 24.04,x86_64 或 ARM64
|
||||
- 已安装 Docker Engine 和 Docker Compose Plugin
|
||||
- 能访问各 CLI 的官网、npm Registry 和模型接口
|
||||
- 当前用户有运行 Docker 的权限
|
||||
- 建议至少 4 核 CPU、8 GB 内存和 15 GB 可用磁盘
|
||||
|
||||
这些 CLI 通常调用云端模型,本容器不在本机加载大模型权重,因此一般不需要 GPU。
|
||||
|
||||
## 2. 放置部署文件
|
||||
|
||||
建议把本目录放到 Ubuntu:
|
||||
|
||||
```text
|
||||
/opt/ai-toolbox
|
||||
```
|
||||
|
||||
项目统一放到:
|
||||
|
||||
```text
|
||||
/srv/projects
|
||||
```
|
||||
|
||||
创建项目目录:
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /srv/projects
|
||||
sudo chown -R "$(id -u):$(id -g)" /srv/projects
|
||||
```
|
||||
|
||||
## 3. 准备配置
|
||||
|
||||
```bash
|
||||
cd /opt/ai-toolbox
|
||||
cp .env.example .env
|
||||
chmod +x scripts/ai
|
||||
id -u
|
||||
id -g
|
||||
```
|
||||
|
||||
把 `id -u` 和 `id -g` 的结果填写进 `.env`:
|
||||
|
||||
```dotenv
|
||||
WORKSPACE_PATH=/srv/projects
|
||||
AI_HOME_PATH=/opt/ai-toolbox/data
|
||||
AI_UID=1000
|
||||
AI_GID=1000
|
||||
AI_CONTAINER_NAME=ai-tools
|
||||
TZ=Asia/Shanghai
|
||||
```
|
||||
|
||||
不要把 API Key 写进 Dockerfile。`.env` 也不要提交到 Git。
|
||||
|
||||
## 4. 构建并启动
|
||||
|
||||
```bash
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
docker compose ps
|
||||
docker compose exec ai-tools ai-tools-check
|
||||
```
|
||||
|
||||
检查结果中以下命令都应显示 `OK`:
|
||||
|
||||
```text
|
||||
codex claude codebuddy kimi opencode qwen dsh cc-switch multica
|
||||
```
|
||||
|
||||
## 5. 首次登录
|
||||
|
||||
每个工具需要分别登录一次:
|
||||
|
||||
```bash
|
||||
./scripts/ai codex .
|
||||
./scripts/ai claude .
|
||||
./scripts/ai codebuddy .
|
||||
./scripts/ai kimi .
|
||||
./scripts/ai opencode .
|
||||
./scripts/ai qwen .
|
||||
```
|
||||
|
||||
按照终端显示的链接或验证码,在 Windows 浏览器中完成登录。Kimi 进入界面后使用 `/login`。
|
||||
|
||||
远程服务器上,浏览器自动打开通常不会成功,这是正常的。优先使用工具提供的设备验证码登录;如果某个工具只支持浏览器回调,可以改用它支持的 API Key,或者为回调端口建立 SSH 隧道。
|
||||
|
||||
登录信息和会话文件保存在 `.env` 的 `AI_HOME_PATH` 目录中,不会因为重新构建镜像而丢失。
|
||||
|
||||
## 6. 初始化 CC Switch
|
||||
|
||||
打开网页的“设置 -> Provider”,点击“打开 CC Switch TUI”。先为 Claude、Codex 和 OpenCode 导入或创建 Provider,并确认三个 CLI 都有当前 Provider。
|
||||
|
||||
也可以在 SSH 中操作:
|
||||
|
||||
```bash
|
||||
ai cc-switch
|
||||
ai cc-switch --app codex provider list
|
||||
```
|
||||
|
||||
配置完成后,在网页启用“CC Switch 配置接管”。启用后,AgentDock 不再向 Claude、Codex 和 OpenCode 会话注入网页账号页保存的旧 API Key,避免环境变量覆盖 CC Switch 配置。CodeBuddy、Kimi、Qwen 和 DeepSeek 仍由 AgentDock 管理。
|
||||
|
||||
## 7. 初始化 Multica Runtime
|
||||
|
||||
打开网页的“设置 -> Runtime”,填写现有自托管 Multica 的 Server URL 和 App URL,然后点击“初始化 Runtime”。授权只在独立终端中进行,完成后 Supervisor 会自动启动前台 daemon。
|
||||
|
||||
也可以在 SSH 中检查:
|
||||
|
||||
```bash
|
||||
ai multica config show
|
||||
ai multica daemon status --output json
|
||||
docker compose logs --tail=100 ai-tools
|
||||
```
|
||||
|
||||
Multica 当前公开支持 Claude、Codex、CodeBuddy、Kimi 和 OpenCode。Qwen 与 DeepSeek 会显示为“已安装,待验证支持”。本部署仅安装 Multica 客户端 Runtime,不包含也不替换用户现有的自托管服务端。
|
||||
|
||||
如果网页终端中的 OAuth 回调无法从 Windows 返回容器,可在 NAS SSH 中运行一次临时初始化。将两个示例 URL 替换为实际地址:
|
||||
|
||||
```bash
|
||||
docker run --rm -it \
|
||||
--network host \
|
||||
--user 1000:1001 \
|
||||
-e HOME=/home/ai \
|
||||
-v /vol1/1000/docker/ai-toools/data:/home/ai \
|
||||
local/ai-toolbox:0.2.0 \
|
||||
multica-setup \
|
||||
--server-url https://multica-api.example.com \
|
||||
--app-url https://multica.example.com \
|
||||
--callback-host 192.168.200.36
|
||||
```
|
||||
|
||||
该容器只在授权期间使用宿主机网络,完成后自动退出。正式 Multica daemon 仍由 `ai-tools` 内的 Supervisor 管理,不使用 host 网络。
|
||||
|
||||
## 8. DeepSeek Harness
|
||||
|
||||
DeepSeek Harness 的命令是 `dsh`,当前属于 developer preview,官方提示未来可能出现不兼容更新。
|
||||
|
||||
无界面执行一次任务:
|
||||
|
||||
```bash
|
||||
./scripts/ai dsh my-project --profile headless "检查项目并运行测试"
|
||||
```
|
||||
|
||||
查看当前版本支持的参数:
|
||||
|
||||
```bash
|
||||
docker compose exec ai-tools dsh --help
|
||||
```
|
||||
|
||||
当前 npm 包只提供 `headless` 与 `web` profile,没有可安装的原生 TUI。AgentDock 使用 `headless`,每次提交一个任务,完成后进程自动退出。`web` profile 不纳入 Compose,也不额外暴露端口。
|
||||
|
||||
## 9. OpenClaw 和 Cursor
|
||||
|
||||
- 不修改 Ubuntu 主机现有的 OpenClaw。
|
||||
- 不占用 OpenClaw 的 Gateway 端口。
|
||||
- Cursor 桌面版保留在 Windows。
|
||||
- Cursor 使用 Remote SSH 打开 `/srv/projects/项目名`。
|
||||
- AI 容器通过 `/workspace/项目名` 访问同一批文件。
|
||||
@@ -0,0 +1,72 @@
|
||||
# 升级和备份
|
||||
|
||||
## 升级 CLI
|
||||
|
||||
默认版本是 `latest`。升级时重新构建镜像:
|
||||
|
||||
```bash
|
||||
cd /opt/ai-toolbox
|
||||
docker compose build --pull --no-cache
|
||||
docker compose up -d
|
||||
docker compose exec ai-tools ai-tools-check
|
||||
```
|
||||
|
||||
为了避免上游突然更新造成故障,首次部署成功后建议记录版本:
|
||||
|
||||
```bash
|
||||
docker compose exec ai-tools npm list -g --depth=0
|
||||
```
|
||||
|
||||
然后把 `.env` 中的 `latest` 改成确定的版本号,再重新构建。例如:
|
||||
|
||||
```dotenv
|
||||
CODEX_VERSION=具体版本号
|
||||
CLAUDE_VERSION=具体版本号
|
||||
```
|
||||
|
||||
DeepSeek Harness 目前是 developer preview,尤其建议锁定版本。
|
||||
|
||||
CC Switch 与 Multica 使用固定原生二进制版本和 SHA256 校验。升级时同时修改 Dockerfile 中的版本号和对应架构校验值,不要只修改 `.env` 版本而保留旧校验值。
|
||||
|
||||
## 备份账号和会话
|
||||
|
||||
所有 CLI 的用户配置位于 `.env` 的 `AI_HOME_PATH`。默认示例为:
|
||||
|
||||
```text
|
||||
/opt/ai-toolbox/data
|
||||
```
|
||||
|
||||
这个目录也包含 `~/.cc-switch`、`~/.multica`、各 CLI 登录信息以及 Multica Runtime 身份,必须整体备份。
|
||||
|
||||
创建备份:
|
||||
|
||||
```bash
|
||||
mkdir -p "$HOME/ai-toolbox-backups"
|
||||
docker run --rm \
|
||||
-v /opt/ai-toolbox/data:/source:ro \
|
||||
-v "$HOME/ai-toolbox-backups:/backup" \
|
||||
ubuntu:24.04 \
|
||||
tar -C /source -czf /backup/ai-toolbox-home.tar.gz .
|
||||
```
|
||||
|
||||
备份中包含登录凭证,应当像密码一样保护。
|
||||
|
||||
网页控制台还需要备份:
|
||||
|
||||
```text
|
||||
/vol1/1000/docker/ai-toools/console-data
|
||||
/vol1/1000/docker/ai-toools/.env
|
||||
```
|
||||
|
||||
`.env` 内的 `CONFIG_ENCRYPTION_KEY` 必须与 `console-data` 成对保存,否则无法解密
|
||||
网页中保存的 API Key。备份中还包含管理员密码,也应按密码文件保护。
|
||||
|
||||
## 不要执行的命令
|
||||
|
||||
停止使用:
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
`docker compose down` 不会删除 `AI_HOME_PATH` 中的配置。不要手动删除该目录,除非明确要清除全部登录状态和会话。
|
||||
@@ -0,0 +1,124 @@
|
||||
# 192.168.200.36 实际部署记录
|
||||
|
||||
部署时间:2026-08-23
|
||||
|
||||
## 已部署状态
|
||||
|
||||
- SSH 主机:`192.168.200.36:22`
|
||||
- 实际可用账户:`leefer`
|
||||
- Windows SSH 别名:`nas`
|
||||
- 部署目录:`/vol1/1000/docker/ai-toools`
|
||||
- 项目目录:`/vol1/1000/docker/ai-toools/workspace`
|
||||
- CLI 账号数据:`/vol1/1000/docker/ai-toools/data`
|
||||
- 容器名称:`ai-tools`
|
||||
- 镜像:`local/ai-toolbox:latest`
|
||||
|
||||
## 网页控制台
|
||||
|
||||
- 局域网 URL:`https://192.168.200.36:8443`
|
||||
- 局域网域名:`https://agent.solsum.cn`
|
||||
- 代理:`ai-proxy`
|
||||
- 控制服务:`ai-console`
|
||||
- CLI Runner:`ai-tools:4174`,仅 Docker 内部网络可达
|
||||
- Runtime:Runner 与 Multica daemon 同处 `ai-tools`,共享 `/home/ai`、`/workspace` 和 CLI PATH
|
||||
- 控制台数据:`/vol1/1000/docker/ai-toools/console-data`
|
||||
- 允许来源:`192.168.200.0/24`
|
||||
- Docker Socket:未挂载
|
||||
|
||||
注意:本机 SSH 配置把直接使用 IP `192.168.200.36` 指向了 Gitea 的 `222` 端口。日常系统 SSH 应使用已有别名 `nas`:
|
||||
|
||||
```powershell
|
||||
ssh nas
|
||||
```
|
||||
|
||||
`root` 账户没有接受本机现有私钥,因此本次部署使用已验证且属于 Docker 组的 `leefer` 账户。没有修改服务器的 root SSH 设置。
|
||||
|
||||
## 已锁定版本
|
||||
|
||||
```text
|
||||
Codex CLI 0.149.0
|
||||
Claude Code 2.1.241
|
||||
CodeBuddy Code 2.137.1
|
||||
Kimi Code CLI 0.38.0
|
||||
OpenCode 1.18.21
|
||||
Qwen Code 0.22.0
|
||||
DeepSeek Harness 0.1.1-rc.2
|
||||
CC Switch CLI 5.10.2
|
||||
Multica CLI 0.1.53
|
||||
Node.js 22.23.2
|
||||
```
|
||||
|
||||
## 第一次登录
|
||||
|
||||
从 Windows 进入服务器:
|
||||
|
||||
```powershell
|
||||
ssh nas
|
||||
```
|
||||
|
||||
然后逐个启动并完成登录:
|
||||
|
||||
```bash
|
||||
ai codex .
|
||||
ai claude .
|
||||
ai codebuddy .
|
||||
ai kimi .
|
||||
ai opencode .
|
||||
ai qwen .
|
||||
ai cc-switch
|
||||
```
|
||||
|
||||
Kimi 进入界面后输入 `/login`。网页登录在 Windows 浏览器完成即可。DeepSeek Harness 按实际模型提供方配置使用,不需要作为常驻服务启动。
|
||||
|
||||
## 日常调用
|
||||
|
||||
在 Ubuntu SSH 终端调用:
|
||||
|
||||
```bash
|
||||
ai codex 项目名
|
||||
ai claude 项目名
|
||||
ai kimi 项目名
|
||||
ai qwen 项目名
|
||||
ai dsh 项目名 --profile headless "运行测试"
|
||||
ai multica daemon status --output json
|
||||
```
|
||||
|
||||
这里的 `项目名` 是项目目录相对于 `workspace` 的路径。例如:
|
||||
|
||||
```text
|
||||
/vol1/1000/docker/ai-toools/workspace/my-app
|
||||
```
|
||||
|
||||
对应:
|
||||
|
||||
```bash
|
||||
ai codex my-app
|
||||
```
|
||||
|
||||
从 Windows 直接调用:
|
||||
|
||||
```powershell
|
||||
.\scripts\remote-ai.ps1 -Server nas -Tool codex -Project my-app
|
||||
.\scripts\remote-ai.ps1 -Server nas -Tool claude -Project my-app
|
||||
.\scripts\remote-ai.ps1 -Server nas -Tool kimi -Project my-app
|
||||
```
|
||||
|
||||
## 管理命令
|
||||
|
||||
```bash
|
||||
cd /vol1/1000/docker/ai-toools
|
||||
|
||||
docker compose ps
|
||||
docker compose exec ai-tools ai-tools-check
|
||||
docker compose logs --tail=100 ai-tools
|
||||
docker compose restart
|
||||
docker compose down
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
`docker compose down` 不会删除登录数据。不要手动删除 `data` 目录。
|
||||
|
||||
## Cursor 和 OpenClaw
|
||||
|
||||
- Windows Cursor 使用 Remote SSH 的 `nas` 连接,打开 `workspace` 下的项目。
|
||||
- OpenClaw 没有安装进 `ai-tools`,现有 OpenClaw 配置和端口均未修改。
|
||||
@@ -0,0 +1,17 @@
|
||||
# 官方资料来源
|
||||
|
||||
以下资料在 2026-08-23 核对。上游安装方式可能继续变化。
|
||||
|
||||
- Codex CLI:[官方 CLI 文档](https://developers.openai.com/codex/cli/);官方当前提供 Linux 安装方式,并支持 ChatGPT 或 API Key 登录。
|
||||
- Codex 登录:[官方认证文档](https://learn.chatgpt.com/docs/auth);凭证可能保存在 `~/.codex/auth.json` 或系统凭证存储中。
|
||||
- Claude Code:[官方安装文档](https://code.claude.com/docs/en/setup);支持 Ubuntu 20.04+,官方推荐原生安装,也保留 npm 安装方式。
|
||||
- Kimi Code CLI:[官方入门文档](https://www.kimi.com/code/docs/en/kimi-code-cli/guides/getting-started.html);npm 包为 `@moonshot-ai/kimi-code`,要求 Node.js 22.19.0+。
|
||||
- DeepSeek Harness:[官方仓库](https://github.com/deepseek-ai/deepseek-harness);npm 包为 `@deepseek-ai/dsh`,命令为 `dsh`,当前处于 developer preview。
|
||||
- DeepSeek Harness CLI:[官方 CLI 说明](https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md);支持 `web` 和 `headless` profile。
|
||||
- CodeBuddy Code:[npm 包](https://www.npmjs.com/package/@tencent-ai/codebuddy-code)
|
||||
- OpenCode:[官方站点](https://opencode.ai/)
|
||||
- Qwen Code:[官方仓库](https://github.com/QwenLM/qwen-code)
|
||||
- CC Switch CLI:[社区 CLI 仓库](https://github.com/SaladDay/cc-switch-cli);本部署锁定 `v5.10.2`,管理 Claude、Codex 和 OpenCode。
|
||||
- Multica CLI:[公开二进制分发仓库](https://github.com/zimplemedia/multica-cli);本部署锁定 `v0.1.53`,仅运行连接现有自托管服务端的客户端 daemon。
|
||||
|
||||
本部署选择 npm 统一安装,是为了让所有工具共用同一套 Node.js 运行环境并简化 Docker 镜像维护。对于提供原生安装器的工具,这不代表 npm 是其唯一安装方式。
|
||||
@@ -0,0 +1,101 @@
|
||||
# 常见故障
|
||||
|
||||
## 1. 命令不存在
|
||||
|
||||
```bash
|
||||
docker compose exec ai-tools ai-tools-check
|
||||
docker compose build --no-cache
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
如果只缺少一个命令,查看构建日志中对应 npm 包的安装错误。
|
||||
|
||||
## 2. 项目目录没有权限
|
||||
|
||||
在 Ubuntu 主机执行:
|
||||
|
||||
```bash
|
||||
grep -E '^(AI_UID|AI_GID)=' .env
|
||||
id -u
|
||||
id -g
|
||||
sudo chown -R "$(id -u):$(id -g)" /srv/projects
|
||||
```
|
||||
|
||||
`.env` 中的 UID/GID 应与操作项目文件的 Ubuntu 用户一致。修改后重新构建容器。
|
||||
|
||||
## 3. 登录完成后重建容器又要求登录
|
||||
|
||||
检查持久化目录:
|
||||
|
||||
```bash
|
||||
docker compose config
|
||||
grep '^AI_HOME_PATH=' .env
|
||||
ls -ld "$(grep '^AI_HOME_PATH=' .env | cut -d= -f2-)"
|
||||
```
|
||||
|
||||
确认 Compose 仍把 `AI_HOME_PATH` 挂载到了 `/home/ai`,并且目录没有被手动删除。
|
||||
|
||||
## 4. Windows 运行脚本后界面显示异常
|
||||
|
||||
使用 Windows Terminal,并确保 SSH 分配终端:
|
||||
|
||||
```powershell
|
||||
ssh -tt mobai@192.168.1.100 "docker exec -it ai-tools codex"
|
||||
```
|
||||
|
||||
本部署包的 `remote-ai.ps1` 已经使用 `ssh -tt`。
|
||||
|
||||
## 5. 登录链接跳回 localhost 后失败
|
||||
|
||||
原因是网页在 Windows 打开,但登录回调服务在 Ubuntu 容器里。优先选择设备验证码登录或 API Key。只有在工具明确显示回调端口时,才建立对应的 SSH 端口转发。
|
||||
|
||||
不要直接把随机回调端口开放到公网。
|
||||
|
||||
## 6. 无法访问模型接口或 npm
|
||||
|
||||
在容器内检查 DNS 和 HTTPS:
|
||||
|
||||
```bash
|
||||
docker compose exec ai-tools getent hosts registry.npmjs.org
|
||||
docker compose exec ai-tools curl -I https://registry.npmjs.org/
|
||||
```
|
||||
|
||||
如果 Ubuntu 主机需要代理,应把代理地址配置到 Docker daemon 或 Compose 环境中。代理凭证不要写入会提交的文件。
|
||||
|
||||
## 7. DeepSeek Harness 更新后参数变化
|
||||
|
||||
它目前是 developer preview。先查看当前帮助:
|
||||
|
||||
```bash
|
||||
docker compose exec ai-tools dsh --help
|
||||
docker compose exec ai-tools dsh web --help
|
||||
```
|
||||
|
||||
确认工作后,把 `.env` 的 `DSH_VERSION` 从 `latest` 改为当前版本号并重新构建。
|
||||
|
||||
## 8. OpenClaw 受到影响
|
||||
|
||||
本 Compose 文件没有安装 OpenClaw、没有映射 OpenClaw 端口,也没有挂载 OpenClaw 配置目录。若现有 OpenClaw 出现问题,应单独检查它原来的服务,不要删除 AI 工具箱的 `data` 目录试图修复。
|
||||
|
||||
## 9. CC Switch 切换后没有生效
|
||||
|
||||
先检查冲突环境变量和当前 Provider:
|
||||
|
||||
```bash
|
||||
ai cc-switch env check --app codex
|
||||
ai cc-switch --app codex provider current
|
||||
```
|
||||
|
||||
确认网页“设置 -> Provider”中的“CC Switch 配置接管”已启用,并重新创建 CLI 会话。已经运行中的会话不会自动切换 Provider。
|
||||
|
||||
## 10. Multica daemon 离线
|
||||
|
||||
```bash
|
||||
ai multica config show
|
||||
ai multica daemon status --output json
|
||||
docker compose logs --tail=150 ai-tools
|
||||
```
|
||||
|
||||
若 `workspace_id` 未设置,回到网页 Runtime 页面重新初始化。若配置完整但 daemon 未上线,执行 `docker compose restart ai-tools`,Supervisor 会重新拉起它。不要在容器内额外运行后台 daemon,否则会与 Supervisor 管理的前台进程重复。
|
||||
|
||||
若授权页面最终跳回无法访问的本地回调地址,使用部署文档“初始化 Multica Runtime”中的一次性 host 网络命令。它只负责写入 `/home/ai/.multica`,不会改变正式 Compose 的网络边界。
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
# 日常使用
|
||||
|
||||
## 使用网页控制台
|
||||
|
||||
局域网浏览器访问:
|
||||
|
||||
```text
|
||||
https://192.168.200.36:8443
|
||||
```
|
||||
|
||||
登录后可以选择项目、发送消息、查看文字回复、Git Diff 和历史会话。
|
||||
关闭浏览器不会停止 CLI;停止 `ai-tools` 容器才会停止其中全部 CLI 进程。
|
||||
|
||||
日常任务使用“会话”页的单一多行输入框;Enter 发送,Shift+Enter 换行。首次登录时从“设置 -> CLI 账号”打开独立终端。
|
||||
“原始输出”只用于故障排查。日常任务使用非交互模式,不会弹出原生确认提示。
|
||||
DeepSeek Harness 没有空会话,必须先输入完整任务再发送。
|
||||
|
||||
Provider 切换在“设置 -> Provider”完成,只影响切换后新启动的 CLI 会话。MCP 与 Skills 的完整编辑仍在 CC Switch TUI 中完成。Multica 的连接、Workspace 和 daemon 状态在“设置 -> Runtime”查看。
|
||||
|
||||
网页中的“运行中实例”表示当前真实 CLI 进程数量,不是已安装工具数量。
|
||||
|
||||
## 在 Ubuntu 上使用
|
||||
|
||||
先登录 Ubuntu:
|
||||
|
||||
```powershell
|
||||
ssh nas
|
||||
```
|
||||
|
||||
进入部署目录后调用工具:
|
||||
|
||||
```bash
|
||||
ai codex my-project
|
||||
ai claude my-project
|
||||
ai codebuddy my-project
|
||||
ai kimi my-project
|
||||
ai opencode my-project
|
||||
ai qwen my-project
|
||||
ai cc-switch
|
||||
ai multica daemon status --output json
|
||||
```
|
||||
|
||||
`my-project` 对应 NAS 的 `/vol1/1000/docker/ai-toools/workspace/my-project`。`cc-switch` 和 `multica` 是管理命令,不接项目参数。
|
||||
|
||||
如果不使用辅助脚本,原始命令是:
|
||||
|
||||
```bash
|
||||
docker compose exec --workdir /workspace/my-project ai-tools codex
|
||||
```
|
||||
|
||||
## 从 Windows 一条命令调用
|
||||
|
||||
在包含本部署包的 Windows 目录执行:
|
||||
|
||||
```powershell
|
||||
.\scripts\remote-ai.ps1 `
|
||||
-Server mobai@192.168.1.100 `
|
||||
-Tool codex `
|
||||
-Project my-project
|
||||
```
|
||||
|
||||
调用其他工具只需要修改 `-Tool`:
|
||||
|
||||
```powershell
|
||||
.\scripts\remote-ai.ps1 -Server mobai@192.168.1.100 -Tool claude -Project my-project
|
||||
.\scripts\remote-ai.ps1 -Server mobai@192.168.1.100 -Tool kimi -Project my-project
|
||||
.\scripts\remote-ai.ps1 -Server mobai@192.168.1.100 -Tool qwen -Project my-project
|
||||
```
|
||||
|
||||
传递额外参数:
|
||||
|
||||
```powershell
|
||||
.\scripts\remote-ai.ps1 `
|
||||
-Server mobai@192.168.1.100 `
|
||||
-Tool kimi `
|
||||
-Project my-project `
|
||||
-ToolArguments @("-p", "解释这个项目")
|
||||
```
|
||||
|
||||
DeepSeek Harness 无界面任务:
|
||||
|
||||
```powershell
|
||||
.\scripts\remote-ai.ps1 `
|
||||
-Server mobai@192.168.1.100 `
|
||||
-Tool dsh `
|
||||
-Project my-project `
|
||||
-ToolArguments @("--profile", "headless", "运行测试")
|
||||
```
|
||||
|
||||
## 推荐的工作方式
|
||||
|
||||
1. Windows Cursor 使用 Remote SSH 打开 Ubuntu 的 `/srv/projects/my-project`。
|
||||
2. Windows Terminal 使用 `remote-ai.ps1` 启动需要的 CLI。
|
||||
3. Cursor 和容器看到的是同一份 Ubuntu 项目文件。
|
||||
4. OpenClaw继续按现有方式运行,与本容器互不影响。
|
||||
|
||||
## 查看容器状态
|
||||
|
||||
```bash
|
||||
cd /opt/ai-toolbox
|
||||
docker compose ps
|
||||
docker compose logs --tail=100 ai-tools
|
||||
docker compose exec ai-tools ai-tools-check
|
||||
```
|
||||
|
||||
## 停止和启动
|
||||
|
||||
```bash
|
||||
docker compose stop
|
||||
docker compose start
|
||||
```
|
||||
|
||||
Codex、Claude 等任务 CLI 只在会话期间运行。容器常驻 Runner、Supervisor 和 Multica daemon;停止 `ai-tools` 容器会同时停止 daemon 和全部会话。配置保存在宿主机 `data` 目录,重新启动或重建容器后仍在。
|
||||
Reference in New Issue
Block a user