agentscope-ai / agentscope-ai/AgentTeams

model-switch openclaw.json `reasoning` undone by Manager reconcile / agents/manager sync

Offen
#1,128 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Go
Sterne
5.6k
Forks
692
Ø Merge
5 T. 4 Std.
Gemergte PRs (30 T.)
23

Beschreibung

### Bug Description

Environment (where reproduced):
- Install: AgentTeams embedded / Docker (local), `AGENTTEAMS_RUNTIME=k8s`
- Manager runtime: CoPaw
- Host workspace bind-mounted into Manager **and** Controller (`agents/manager`)
- OS: macOS (Docker Desktop)

What happened:
After `model-switch` (or a direct edit) sets `openclaw.json` model `reasoning: false`, within ~1–4 seconds the value flips back to `true`.

What I expected:
Hot-updates to manager `openclaw.json` (especially `--no-reasoning` / bridge SoT) should survive Controller Manager reconcile and MinIO Remote→Local sync.

## Root cause

Two writers conflict:

1. **Controller `DeployManagerConfig` → `PutManagerConfig`** regenerates `openclaw.json` from the Manager CR (default `reasoning: true` for custom models), merges only `groupAllowFrom` + plugins, then:
- `PutObject` to MinIO `agents/manager/openclaw.json`
- `writeManagerLocalConfig` overwrites the **shared live workspace** bind-mount
2. Controller also mirrors MinIO `agents/` onto `/root/agentteams-fs/agents/`, which is the same host dir as Manager’s workspace — a stale `agents/manager/openclaw.json` in MinIO will pull over the live file.

Related: CoPaw `--no-reasoning` no-op is #1126. This issue is persistence after a correct local write.

### Steps to Reproduce

1. Embedded install with Manager workspace on host (default `~/agentteams-manager`).
2. Set reasoning false on the active model in `openclaw.json` (via model-switch or jq).
3. Wait a few seconds (Manager reconcile).
4. Observe `reasoning` flip back to `true` on disk / in MinIO `agents/manager/openclaw.json`.

### AI Analysis

Tool used: Cursor

Analysis:
- `manager_config.go` `PutManagerConfig` did not preserve per-model `reasoning` and preferred OSS over the live workspace file.
- Manager `mc cp` to `agents/manager/` often 403s (no ACL); pushing only `manager/openclaw.json` is insufficient because Controller regenerates `agents/manager/`.
- Fix: load existing config from the shared local mount first; `mergeModelReasoning`; model-switch best-effort MinIO push.

### Relevant Logs

```shell
Shared mount (Manager workspace == Controller `agents/manager`):

# manager
/Users/.../agentteams-manager -> /root/manager-workspace

# controller
/Users/.../agentteams-manager -> /root/agentteams-fs/agents/manager

After writing `reasoning=false` locally and pushing `manager/openclaw.json`, 100ms poll of local vs two MinIO keys:

t0 local=false manager/=false agents/manager/=false
t=3.23 local=false manager/=false agents/manager/=true ← Controller PutObject
t=3.49 local=true manager/=false agents/manager/=true ← live workspace overwritten

Only field that changes in the flip (diff of openclaw.json):

- "reasoning": false
+ "reasoning": true

Manager cannot update the Controller SoT path (explains why skill-only MinIO push is not enough):

Pushed openclaw.json to agentteams/agentteams-storage/manager/openclaw.json
WARN: failed to push openclaw.json to agentteams/agentteams-storage/agents/manager/openclaw.json
# mc: Insufficient permissions to access this path .../agents/manager/openclaw.json

Flip still happens after killing Manager’s own `mc` sync loops — so the writer is Controller reconcile / shared-mount write, not Manager `start-manager-agent` MinIO→Local alone.
```

### Component

Controller (Manager config) / Manager Agent (model-switch)

### Version / Commit

v1.2.0-class embedded; found while validating #1126 / #1127

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.