feat(webui): add context window setting

This commit is contained in:
Xubin Ren
2026-05-29 13:09:08 +08:00
parent 3a420136bb
commit 404b68cdd4
17 changed files with 280 additions and 64 deletions
+31 -1
View File
@@ -4,7 +4,10 @@ from unittest.mock import MagicMock
from nanobot.agent.loop import AgentLoop
from nanobot.bus.queue import MessageBus
from nanobot.providers.factory import ProviderSnapshot
from nanobot.config.loader import save_config
from nanobot.config.schema import Config
from nanobot.providers.factory import ProviderSnapshot, load_provider_snapshot
from nanobot.webui.settings_api import update_agent_settings
def _provider(default_model: str, max_tokens: int = 123) -> MagicMock:
@@ -72,3 +75,30 @@ def test_llm_runtime_refreshes_provider_snapshot(tmp_path: Path) -> None:
assert runtime.model == "new-model"
assert loop.provider is new_provider
assert loop.runner.provider is new_provider
def test_settings_context_window_refreshes_runtime_state(
tmp_path: Path,
monkeypatch,
) -> None:
config_path = tmp_path / "config.json"
config = Config()
config.agents.defaults.workspace = str(tmp_path / "workspace")
config.agents.defaults.model = "openai/gpt-4o"
config.agents.defaults.provider = "openai"
config.agents.defaults.context_window_tokens = 65_536
config.providers.openai.api_key = "sk-test"
save_config(config, config_path)
monkeypatch.setattr("nanobot.config.loader._current_config_path", config_path)
def loader(*, preset_name: str | None = None) -> ProviderSnapshot:
return load_provider_snapshot(config_path, preset_name=preset_name)
loop = AgentLoop.from_config(config, provider_snapshot_loader=loader)
payload = update_agent_settings({"context_window_tokens": ["262144"]})
loop._refresh_provider_snapshot()
assert payload["requires_restart"] is False
assert loop.context_window_tokens == 262_144
assert loop.consolidator.context_window_tokens == 262_144