chore: add 105 runtime and openhands ops tooling

This commit is contained in:
john
2026-06-29 07:01:26 +08:00
parent 615a1e9bf4
commit f8787bd330
22 changed files with 1263 additions and 50 deletions
+85 -11
View File
@@ -1,18 +1,22 @@
# OpenHands 安装说明
> 目标:先把 OpenHands 独立安装并跑起来,确认可用后,再接入 `memindadm` 的 Goose 网关策略中心
> 目标:先把 OpenHands 独立安装并跑起来,确认可用后,再接入 Goose / 路由策略
>
> 原则:安装阶段不改动现有 Goose 服务,不影响当前生产/测试链路。
## 1. 推荐方案
如果你的目标是后续和 Goose 做集成,建议先用 **OpenHands CLI + GUI Server** 方式启动
如果你的目标是后续和 Goose 做集成,要先分清两条链
- 本地直接运行
- 可挂载当前仓库目录
- 便于后续做执行器接入验证
- `OpenHands Web / GUI`:浏览器访问的服务,适合人工打开页面验证
- `Goose -> OpenHands`Goose 直接拉起 `OpenHands CLI` 进程做委托执行,不走 `127.0.0.1:3000` 这个网页入口
官方文档对 `openhands serve` 的说明是:它会通过 Docker 启动本地 GUI Server,支持挂载当前目录,适合直接对仓库做任务。
本仓库当前建议:
- 页面服务用 `Colima + docker compose`
- Goose 委托执行继续用本机 `OpenHands CLI`
这样边界最清楚,也不会把 Goose 和 OpenHands 强耦合到一个镜像里。
## 2. 前置条件
@@ -73,6 +77,44 @@ openhands serve --mount-cwd
如果你更偏向容器化,可按 OpenHands 的 Agent Canvas / Docker 文档走容器启动方式。这个方式适合未来把 OpenHands 作为更独立的执行环境来跑。
### 方式 D:本仓库 Colima compose
如果本机 Docker 实际跑在 Colima,而不是 Docker Desktop 默认 socket,可以直接使用仓库内置的 compose 文件:
```bash
cd /Users/john/Project/Memind
bash scripts/openhands-colima.sh pull
bash scripts/openhands-colima.sh build
bash scripts/openhands-colima.sh up
```
默认行为:
- 启动 `postgres:16-alpine`
- 启动本地 overlay 镜像 `memind/openhands-colima:local`
- 挂载 Colima socket`/Users/john/.colima/default/docker.sock`
- 挂载当前仓库到容器内:`/workspace`
- 对外暴露 GUI 端口:`3000`
- OpenHands 持久化走本地 Postgres,而不是 SQLite
常用命令:
```bash
bash scripts/openhands-colima.sh build
bash scripts/openhands-colima.sh status
bash scripts/openhands-colima.sh logs
bash scripts/openhands-colima.sh restart
bash scripts/openhands-colima.sh down
```
当前 PG 默认值:
- `OPENHANDS_DB_NAME=openhands`
- `OPENHANDS_DB_USER=openhands`
- `OPENHANDS_DB_PASS=openhands_dev_password`
如果需要自定义,可在执行脚本前导出环境变量。
### 端口与资源
- GUI Server 默认会占用 `3000` 端口
@@ -133,11 +175,28 @@ openhands serve --mount-cwd
启动成功后,确认以下几点:
1. 浏览器能打开 OpenHands 的界面。
2. 可以创建一次简单任务
3. 如果用了 `--mount-cwd`,任务可以看到当前仓库
2. `curl http://127.0.0.1:3000` 返回 `200 OK`
3. Postgres 中可以看到 OpenHands 表,例如 `event_callback``conversation_metadata`
4. Docker 不报权限或 socket 错误。
## 7. 用于后续 Goose 集成时的建议
## 7. Goose 集成边界
当前 Goose 不是调用 `http://127.0.0.1:3000` 这个 GUI 服务,而是直接执行本机 `OpenHands CLI`
- `GOOSE_OPENHANDS_BIN=/Users/john/.openhands/bin/studio-openhands`
- `GOOSE_OPENHANDS_RUNNER=host`
其中:
- `/Users/john/.openhands/bin/studio-openhands` 目前只是一个 wrapper
- 实际执行的是 `/Users/john/.local/bin/openhands`
这意味着:
- `Colima` 里的 OpenHands Web 服务,主要用于人手打开页面和验证 PG 持久化
- Goose 的 OpenHands 委托执行,主要取决于本机 CLI 是否可用、模型环境变量是否齐全
## 8. 用于后续 Goose 集成时的建议
为了后面接入 `memindadm`,建议你先准备好这些信息:
@@ -152,7 +211,7 @@ openhands serve --mount-cwd
如果你后面已经决定把 `Goose / Aider / OpenHands` 的模型统一收口到 `memindadm`,那么 OpenHands 这边也不要再单独维护自己的模型配置,统一从后台读取即可。
## 8. 和现有 Goose 服务的关系
## 9. 和现有 Goose 服务的关系
这一步是旁路安装,不会改动现有 Goose 服务。
@@ -163,7 +222,22 @@ openhands serve --mount-cwd
- OpenHands 先作为独立执行器接入
- 真正切流之前,先做只读审计和联调验证
## 9. 官方参考
## 10. 本地验证结论
本仓库本机 `Colima` 已验证通过:
- OpenHands Web 服务可访问
- OpenHands 数据落本地 Postgres
- 官方镜像直接切 PG 有迁移坑,因此当前 compose 使用的是仓库内的薄 overlay 镜像修复
相关文件:
- `/Users/john/Project/Memind/docker-compose.openhands-colima.yml`
- `/Users/john/Project/Memind/docker/openhands-colima/Dockerfile`
- `/Users/john/Project/Memind/docker/openhands-colima/002.py`
- `/Users/john/Project/Memind/docker/openhands-colima/010.py`
## 11. 官方参考
- OpenHands 安装文档
- OpenHands GUI Server