mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-27 12:56:01 -06:00
refactor(config): retire redundant settings (#113174)
* refactor(config): retire redundant settings * style: apply current formatter * chore: update plugin sdk baseline * fix: keep Codex tool caps context-aware * chore: remove stale imports * test: align WhatsApp QA debounce config * fix(config): clean up retired config checks * fix(ci): align config cleanup checks
This commit is contained in:
committed by
GitHub
parent
1603781bb0
commit
bb657eec93
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"core": 2308,
|
||||
"channel": 3632,
|
||||
"core": 2299,
|
||||
"channel": 3630,
|
||||
"plugin": 3556
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
f3efbf17f96d7bc331bf9655625c9e41387707d6e12ac1e000a5c6518581f826 config-baseline.json
|
||||
686273ffd3d3d8034bf68d0cc9acee9e1ec83191e68b40b0c8f58f72521d4f97 config-baseline.core.json
|
||||
8f64ad7f21d2d1aa18a956243f1a67c86f6cfa3fe2cddbf3ebfafb263ea02092 config-baseline.channel.json
|
||||
54416b69e0b764d3505677b143f1698cc2454fce8e9f69dd1d59867e3747598e config-baseline.json
|
||||
e57bb6bda49f3e895633269dae7ea7e1ae31a051c20eeb8db38f6b5694996ffe config-baseline.core.json
|
||||
af6ca0e70007113462270d46fa14ef0551e577e2fa157d2b9f6d0a93d36f96f1 config-baseline.channel.json
|
||||
28460228b14a94a2b93040ab3f43b214bdc6d4fda4139a75b21e70fc5983dd56 config-baseline.plugin.json
|
||||
|
||||
@@ -667,7 +667,8 @@ Primary reference: [Configuration reference - WhatsApp](/gateway/config-channels
|
||||
| Access | `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups` |
|
||||
| Delivery | `textChunkLimit`, `streaming.chunkMode`, `mediaMaxMb`, `sendReadReceipts`, `ackReaction`, `reactionLevel` |
|
||||
| Multi-account | `accounts.<id>.enabled`, `accounts.<id>.authDir`, and other per-account overrides |
|
||||
| Operations | `configWrites`, `debounceMs`, `enabled` |
|
||||
| Operations | `configWrites`, `enabled` |
|
||||
| Inbound batching | `messages.inbound.debounceMs`, `messages.inbound.byChannel.whatsapp` |
|
||||
| Session behavior | `session.dmScope`, `historyLimit`, `dmHistoryLimit`, `dms.<id>.historyLimit` |
|
||||
| Prompts | `groups.<id>.systemPrompt`, `groups["*"].systemPrompt`, `direct.<id>.systemPrompt`, `direct["*"].systemPrompt` |
|
||||
|
||||
|
||||
@@ -50,7 +50,6 @@ Override the policy for one agent:
|
||||
entries: {
|
||||
support: {
|
||||
typingMode: "message",
|
||||
typingIntervalSeconds: 8,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -63,7 +62,7 @@ Override the policy for one agent:
|
||||
- `thinking` still reacts to streamed reasoning (`reasoningLevel: "stream"`), and can also start from active execution before reasoning deltas arrive.
|
||||
- Heartbeat typing is a liveness signal for the resolved delivery target. It starts at heartbeat run start instead of following `message` or `thinking` stream timing. Set `typingMode: "never"` to disable it.
|
||||
- Heartbeats do not show typing when the heartbeat target is `"none"`, when the target cannot be resolved, when chat delivery is disabled for the heartbeat, or when the channel does not support typing.
|
||||
- `agents.defaults.typingIntervalSeconds` controls the **refresh cadence**, not the start time. Default: 6 seconds. `agents.entries.*.typingIntervalSeconds` can override it per agent.
|
||||
- `agents.defaults.typingIntervalSeconds` controls the **refresh cadence** for every agent, not the start time. Default: 6 seconds.
|
||||
|
||||
## Related
|
||||
|
||||
|
||||
@@ -227,7 +227,6 @@ Shared defaults for bounded runtime context surfaces.
|
||||
defaults: {
|
||||
contextLimits: {
|
||||
memoryGetMaxChars: 12000,
|
||||
memoryGetDefaultLines: 120,
|
||||
postCompactionMaxChars: 1800,
|
||||
},
|
||||
},
|
||||
@@ -237,15 +236,10 @@ Shared defaults for bounded runtime context surfaces.
|
||||
|
||||
- `memoryGetMaxChars`: default `memory_get` excerpt cap before truncation
|
||||
metadata and continuation notice are added.
|
||||
- `memoryGetDefaultLines`: default `memory_get` line window when `lines` is
|
||||
omitted.
|
||||
- `toolResultMaxChars`: advanced live tool-result ceiling used for persisted
|
||||
results and overflow recovery. Leave unset for the model-context auto cap:
|
||||
`16000` chars below 100K tokens, `32000` chars at 100K+ tokens, and `64000`
|
||||
chars at 200K+ tokens. Explicit values up to `1000000` are accepted for
|
||||
long-context models, but the effective cap is still limited to about 30% of
|
||||
the model context window. `openclaw doctor --deep` prints the effective cap,
|
||||
and doctor warns only when an explicit override is stale or has no effect.
|
||||
- When `memory_get` omits `lines`, OpenClaw uses a built-in 120-line window and
|
||||
then applies `memoryGetMaxChars`.
|
||||
- Live tool results use a model-context auto cap: `16000` chars below 100K
|
||||
tokens, `32000` chars at 100K+ tokens, and `64000` chars at 200K+ tokens.
|
||||
- `postCompactionMaxChars`: AGENTS.md excerpt cap used during post-compaction
|
||||
refresh injection.
|
||||
|
||||
@@ -265,7 +259,6 @@ from `agents.defaults.contextLimits`.
|
||||
id: "tiny-local",
|
||||
contextLimits: {
|
||||
memoryGetMaxChars: 6000,
|
||||
toolResultMaxChars: 8000, // advanced ceiling for this agent
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -712,7 +705,7 @@ See [Streaming](/concepts/streaming) for behavior + chunking details.
|
||||
|
||||
- Defaults: `instant` for direct chats/mentions, `message` for unmentioned group chats.
|
||||
- `typingIntervalSeconds` default: `6`.
|
||||
- Per-agent overrides: `agents.entries.*.typingMode` and `agents.entries.*.typingIntervalSeconds`.
|
||||
- Per-agent override: `agents.entries.*.typingMode`.
|
||||
|
||||
See [Typing Indicators](/concepts/typing-indicators).
|
||||
|
||||
|
||||
@@ -510,7 +510,6 @@ See [Plugins](/tools/plugin).
|
||||
prefs: {
|
||||
theme: "claw", // claw | knot | dash | custom
|
||||
themeMode: "system", // light | dark | system
|
||||
textScale: 100, // 90 | 100 | 110 | 125 | 140
|
||||
locale: "en",
|
||||
chatShowThinking: true,
|
||||
chatShowToolCalls: true,
|
||||
@@ -525,7 +524,7 @@ See [Plugins](/tools/plugin).
|
||||
|
||||
- `seamColor`: accent color for native app UI chrome (Talk Mode bubble tint, etc.).
|
||||
- `assistant`: Control UI identity override. Falls back to active agent identity.
|
||||
- `prefs`: operator display preferences. This is the canonical home so agents can
|
||||
- `prefs`: cross-device operator preferences. This is the canonical home so agents can
|
||||
change them through the approval gate and every Control UI client stays in
|
||||
sync; browsers mirror the values into local storage for instant boot and keep
|
||||
a device-local copy when they cannot write config (viewer scope, offline).
|
||||
@@ -535,6 +534,8 @@ See [Plugins](/tools/plugin).
|
||||
delivery remains separate and unchanged.
|
||||
`showAdvancedSettings` defaults to `false`; Settings search may temporarily
|
||||
open one matching advanced group without changing this preference.
|
||||
Presentation-only preferences such as text scale, chat width, and live
|
||||
sidebar activity stay browser-local and are configured in Settings.
|
||||
Connected clients apply server-side changes live: the gateway broadcasts a
|
||||
hash-only `config.changed` event after every persisted config write and
|
||||
clients refresh their snapshot (skipped while a local settings draft has
|
||||
@@ -574,7 +575,6 @@ See [Plugins](/tools/plugin).
|
||||
// toolTitles: false, // opt-in AI purpose titles for tool calls (spends utility-model tokens)
|
||||
// embedSandbox: "scripts", // strict | scripts | trusted
|
||||
// allowExternalEmbedUrls: false, // dangerous: allow absolute external http(s) embed URLs
|
||||
// chatMessageMaxWidth: "min(1280px, 82%)", // optional centered chat transcript max-width
|
||||
// allowedOrigins: ["https://control.example.com"], // required for non-loopback Control UI
|
||||
// dangerouslyAllowHostHeaderOriginFallback: false, // dangerous Host-header origin fallback mode
|
||||
},
|
||||
@@ -656,7 +656,6 @@ See [Plugins](/tools/plugin).
|
||||
Default `false`.
|
||||
- `controlUi.allowedOrigins`: explicit browser-origin allowlist for Gateway WebSocket connects. Required for public non-loopback browser origins. Private same-origin LAN/Tailnet UI loads from loopback, RFC1918/link-local, `.local`, `.ts.net`, or Tailscale CGNAT hosts are accepted without enabling Host-header fallback.
|
||||
- `controlUi.toolTitles`: opt in to AI-generated purpose titles for tool calls in Control UI chat. Default: `false` (tool rendering stays fully deterministic with no background model calls). When enabled, the `chat.toolTitles` method labels complex calls through standard utility-model routing — the agent's `utilityModel` (an operator decision that may send bounded tool arguments to the chosen provider, like every utility task), or the session provider's declared small-model default (OpenAI → `gpt-5.6-luna`, Anthropic → `claude-haiku-4-5`) — and caches results in the per-agent state database so repeat views never re-bill. `utilityModel: \"\"` disables titles like every other utility task; titles never fall back to the primary model.
|
||||
- `controlUi.chatMessageMaxWidth`: optional max-width for the centered Control UI chat transcript. Accepts constrained CSS width values such as `960px`, `82%`, `min(1280px, 82%)`, and `calc(100% - 2rem)`.
|
||||
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: dangerous mode that enables Host-header origin fallback for deployments that intentionally rely on Host-header origin policy.
|
||||
- `terminal.enabled`: opt in to the admin-scoped operator terminal. Default: `false`. The terminal starts a host PTY in the selected agent workspace, inherits the Gateway process environment, and is refused for agents with `sandbox.mode: "all"`. Enable it only for trusted operator deployments; changing it restarts the Gateway and updates the Control UI content security policy.
|
||||
- `terminal.shell`: optional shell executable. When unset, OpenClaw uses `$SHELL` on Unix and `%ComSpec%` on Windows.
|
||||
|
||||
@@ -312,7 +312,7 @@ That stages grounded durable candidates into the short-term dreaming store while
|
||||
| `channels.whatsapp.messagePrefix` and legacy `messages.messagePrefix` | `channels.whatsapp.responsePrefix` |
|
||||
| `channels.whatsapp.ackReaction` | global `messages.ackReaction` and `ackReactionScope` where translatable |
|
||||
| `cron.failureDestination` | destination fields on `cron.failureAlert` |
|
||||
| `gateway.controlUi.chatMessageMaxWidth` | `ui.prefs.chatMessageMaxWidth` |
|
||||
| `gateway.controlUi.chatMessageMaxWidth`, presentation-only `ui.prefs` keys | removed (text scale, chat width, and live sidebar activity are browser-local) |
|
||||
| `agents.list` | keyed `agents.entries` |
|
||||
| top-level `defaultModel` | `agents.defaults.model` |
|
||||
| `messages.messagePrefix` | `channels.whatsapp.responsePrefix` |
|
||||
|
||||
@@ -71,19 +71,17 @@ Runtime-heavy surfaces have their own explicit caps under
|
||||
| Key | Purpose |
|
||||
| ------------------------ | ------------------------------------------------------------------------ |
|
||||
| `memoryGetMaxChars` | Max characters `memory_get` returns before truncation. |
|
||||
| `memoryGetDefaultLines` | Default `memory_get` line window when a request omits `lines`. |
|
||||
| `toolResultMaxChars` | Advanced ceiling for a single live tool result (up to `1000000` chars). |
|
||||
| `postCompactionMaxChars` | Max characters retained from `AGENTS.md` during post-compaction refresh. |
|
||||
|
||||
These are bounded runtime excerpts and injected runtime-owned blocks,
|
||||
separate from bootstrap limits, startup-context limits, and skills prompt
|
||||
limits.
|
||||
|
||||
`toolResultMaxChars` is unset by default, so OpenClaw derives the live
|
||||
tool-result cap from the effective model context window: `16000` chars below
|
||||
OpenClaw derives the live tool-result cap from the effective model context
|
||||
window: `16000` chars below
|
||||
100K tokens, `32000` chars at 100K+ tokens, `64000` chars at 200K+ tokens.
|
||||
The runtime context-share guard still caps a single tool result at 30% of the
|
||||
context window even when a larger explicit ceiling is configured.
|
||||
The runtime context-share guard also caps a single tool result at 30% of the
|
||||
context window.
|
||||
|
||||
Large provider windows are not enabled automatically when they materially
|
||||
change cost or latency. For example, direct OpenAI GPT-5.5 and GPT-5.6 models
|
||||
|
||||
@@ -20,7 +20,6 @@ Most skills configuration lives under `skills` in
|
||||
extraDirs: ["~/Projects/agent-scripts/skills"],
|
||||
allowSymlinkTargets: ["~/Projects/manager/skills"],
|
||||
watch: true,
|
||||
watchDebounceMs: 250,
|
||||
},
|
||||
install: {
|
||||
preferBrew: true,
|
||||
@@ -73,10 +72,6 @@ Most skills configuration lives under `skills` in
|
||||
change. Covers nested files under grouped skill roots.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="skills.load.watchDebounceMs" type="number" default="250">
|
||||
Debounce window for skill watcher events in milliseconds.
|
||||
</ParamField>
|
||||
|
||||
## Install (`skills.install`)
|
||||
|
||||
<ParamField path="skills.install.preferBrew" type="boolean" default="true">
|
||||
|
||||
@@ -555,13 +555,13 @@ aligned.
|
||||
extraDirs: ["~/Projects/agent-scripts/skills"],
|
||||
allowSymlinkTargets: ["~/Projects/manager/skills"],
|
||||
watch: true, // default
|
||||
watchDebounceMs: 250, // default
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Use `allowSymlinkTargets` for intentional symlinked layouts where a skill
|
||||
Watcher events use a built-in 250 ms debounce. Use `allowSymlinkTargets`
|
||||
for intentional symlinked layouts where a skill
|
||||
root symlink points outside the configured root, for example
|
||||
`<workspace>/skills/manager -> ~/Projects/manager/skills`.
|
||||
Enable `skills.workshop.allowSymlinkTargetWrites` only when Skill Workshop
|
||||
|
||||
+5
-13
@@ -566,19 +566,11 @@ The chat transcript uses a centered readable frame aligned with the composer. As
|
||||
|
||||
## Chat message width
|
||||
|
||||
Wide-monitor deployments can override the transcript width without patching bundled CSS by setting `ui.prefs.chatMessageMaxWidth`:
|
||||
|
||||
```json5
|
||||
{
|
||||
gateway: {
|
||||
controlUi: {
|
||||
chatMessageMaxWidth: "min(1280px, 82%)",
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
The value is validated before it reaches the browser. Supported forms include plain lengths and percentages such as `960px` or `82%`, plus constrained `min(...)`, `max(...)`, `clamp(...)`, `calc(...)`, and `fit-content(...)` width expressions.
|
||||
Wide-monitor users can override the transcript width under **Settings → Chat →
|
||||
Message width**. The preference stays in that browser's local storage. Supported
|
||||
forms include plain lengths and percentages such as `960px` or `82%`, plus
|
||||
constrained `min(...)`, `max(...)`, `clamp(...)`, `calc(...)`, and
|
||||
`fit-content(...)` width expressions.
|
||||
|
||||
## Tailnet access (recommended)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user