716ef407fe
Wire Portal and TKMind proxy to loopback Goose v1.49 via canary env blocks, with verification scripts, Phase 2/3 evidence baselines, and rollback runbooks so local upgrade stays isolated from stable 1.41 and production. Co-authored-by: Cursor <cursoragent@cursor.com>
78 lines
3.2 KiB
Markdown
78 lines
3.2 KiB
Markdown
# Goose v1.49 本地升级 Phase 0 基线
|
||
|
||
> 范围:仅本机 loopback,禁止连接 103/105 或生产库。
|
||
> 决策表:[TKMIND_V1_49_MIGRATION.md](../TKMIND_V1_49_MIGRATION.md)
|
||
|
||
## Stable 基线(103 生产,只读对照)
|
||
|
||
| 项 | 值 |
|
||
|---|---|
|
||
| goosed 版本 | `goose-server 1.41.0` |
|
||
| 二进制 | `tkmind_go-native/releases/goosed-20260729-v141-m1` |
|
||
| 源码分支 | `upgrade/goose-1.47`(TKMind 补丁) |
|
||
| 端口 | `18006`–`18014`(native launchd × 9) |
|
||
| Session PG | `memind_sessions` @ `127.0.0.1:5432`(103) |
|
||
| 记录时间 | 2026-09-08 |
|
||
|
||
## v1.49 候选(本地隔离)
|
||
|
||
| 项 | 值 |
|
||
|---|---|
|
||
| worktree | `/Users/john/Project/tkmind_go-v149` |
|
||
| 分支 | `upgrade/v1.49-tkmind` |
|
||
| upstream tag | `v1.49.0` |
|
||
| 端口 | `18049` |
|
||
| 启动命令 | `goose serve --tls`(**v1.49 已移除 `goosed`/`goose-server`**,改为 ACP HTTP/WS) |
|
||
| Session PG | `goose_sessions_v149_dev` @ `127.0.0.1:5432` |
|
||
| XDG 隔离 | `/tmp/goose-v149-runtime/{config,data,state,cache}` |
|
||
| Portal 目标 | `TKMIND_API_TARGET_V149=https://127.0.0.1:18049`(独立 H5 进程时使用) |
|
||
|
||
## Memory 本地策略(Phase 1 初始)
|
||
|
||
```bash
|
||
MEMORY_BACKEND=legacy
|
||
MEMORY_VECTOR_ENABLED=0
|
||
MEMORY_AGENT_INJECTION_MODE=off
|
||
MEMORY_LIFECYCLE_ENABLED=0
|
||
MEMORY_CANDIDATE_ENABLED=0
|
||
```
|
||
|
||
upstream / v1.49 goosed 不得写入 MySQL 业务记忆;只走现有 Portal `conversation-memory` owner。
|
||
|
||
## Phase 0 检查项
|
||
|
||
- [x] 记录 stable 1.41 基线
|
||
- [x] 拉取 upstream `v1.49.0` tag
|
||
- [x] 创建 `upgrade/v1.49-tkmind` worktree
|
||
- [x] 创建隔离 PG 库 `goose_sessions_v149_dev`
|
||
- [x] 编译 v1.49 goosed 并通过 `GET /status`(`goose 1.49.0` @ `:18049` → `ok`)
|
||
- [x] 移植 legacy REST(`/agent/start`、`/sessions`、`/sessions/{id}/events|reply|cancel` 等,见 `tkmind_compat`)
|
||
- [x] 导出 Memory manifest(`node scripts/export-goose-v149-memory-manifest.mjs` → `docs/baselines/goose-v149-memory-latest.json`)
|
||
- [x] 保存 runtime 基线样本(`node scripts/capture-goose-v149-baseline.mjs` → `docs/baselines/`)
|
||
- [x] Canary 开关与一键回滚(`scripts/switch-goose-v149-canary.sh`,见 [goose-v149-canary-runbook.md](./goose-v149-canary-runbook.md))
|
||
|
||
## Phase 1 验证
|
||
|
||
```bash
|
||
node scripts/run-goosed-v149-phase2.mjs # Phase 2 聚合(cost + drift + phase1)
|
||
node scripts/check-goosed-v149-cost-smoke.mjs # Finish token_state / billing
|
||
node scripts/compare-goose-v149-memory-manifest.mjs
|
||
bash scripts/switch-goose-v149-canary.sh on all # 全量 canary 后重启 pnpm dev
|
||
```
|
||
|
||
```bash
|
||
bash scripts/ensure-goose-v149-vendor.sh # 离线 vendor(GitHub 不可用时)
|
||
bash scripts/build-goosed-v149-local.sh # 编译 goose CLI(首次较久)
|
||
bash scripts/ensure-goose-v149-local-db.sh
|
||
bash scripts/run-goosed-v149-local.sh # goose serve @ 18049
|
||
curl -sk https://127.0.0.1:18049/status
|
||
```
|
||
|
||
> v1.49 已通过 `crates/goose/src/acp/tkmind/` 重移植 legacy REST;聚合验证:`node scripts/check-goosed-v149-all.mjs`。
|
||
|
||
## 禁止项
|
||
|
||
- 不得使用生产 `DATABASE_URL`、`GOOSE_SESSION_DB_URL`(含 RDS / 103 / 105 地址)
|
||
- 不得修改 103 launchd、105 nginx、Portal `:8081`
|
||
- 不得在本阶段删除 1.41 定制或 `:18036` DeepSeek 代理
|