From 05d4ca79e712a50b9f1305d6f9d8917849046c72 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 23 Aug 2026 02:51:25 +0800 Subject: [PATCH] refactor: route agent tool settings through runtime --- app/agent/skills/registry.py | 7 +++++-- app/agent/tools/impl/_plugin_tool_utils.py | 4 +++- app/agent/tools/impl/_terminal_session.py | 4 +++- app/agent/tools/impl/send_voice_message.py | 4 +++- docs/refactor/backend-architecture-next-stage.md | 2 ++ .../architecture/configuration-debt-baseline.json | 6 +----- .../fixtures/architecture/dependency-baseline.json | 14 ++++++++------ 7 files changed, 25 insertions(+), 16 deletions(-) diff --git a/app/agent/skills/registry.py b/app/agent/skills/registry.py index 349b7d7d5..bd626d423 100644 --- a/app/agent/skills/registry.py +++ b/app/agent/skills/registry.py @@ -11,7 +11,10 @@ from urllib.parse import urlencode, urljoin, urlparse from app.agent.skills.metadata import parse_skill_metadata from app.runtime.cache import cached, fresh -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat +from app.application.configuration import get_runtime_settings + +settings = RuntimeSettingsCompat() from app.runtime.log import logger from app.adapters.network.http import RequestUtils from app.foundation.singleton import WeakSingleton @@ -200,7 +203,7 @@ class SkillHelper(metaclass=WeakSingleton): 将技能源列表写回配置文件,并同步更新内存中的 settings。 """ filtered_sources = [item.strip() for item in sources if item and item.strip()] - success, message = settings.update_setting( + success, message = get_runtime_settings().update( key="SKILL_MARKET", value=",".join(filtered_sources), ) diff --git a/app/agent/tools/impl/_plugin_tool_utils.py b/app/agent/tools/impl/_plugin_tool_utils.py index f0e752cd6..cca3d5909 100644 --- a/app/agent/tools/impl/_plugin_tool_utils.py +++ b/app/agent/tools/impl/_plugin_tool_utils.py @@ -4,7 +4,9 @@ import json import shutil from typing import Any, Optional -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.application.plugin.runtime import get_plugin_manager from app.application.plugin.install import PluginInstallCommand from app.application.configuration import get_configured_system_config as SystemConfigOper diff --git a/app/agent/tools/impl/_terminal_session.py b/app/agent/tools/impl/_terminal_session.py index be57e2b7f..8126af25f 100644 --- a/app/agent/tools/impl/_terminal_session.py +++ b/app/agent/tools/impl/_terminal_session.py @@ -14,7 +14,9 @@ from pathlib import Path from typing import Any, Optional from app.agent.tools.impl._command_safety import validate_command_safety -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.runtime.log import logger if os.name == "posix": diff --git a/app/agent/tools/impl/send_voice_message.py b/app/agent/tools/impl/send_voice_message.py index eafecf34b..982336ac5 100644 --- a/app/agent/tools/impl/send_voice_message.py +++ b/app/agent/tools/impl/send_voice_message.py @@ -6,7 +6,9 @@ from pydantic import BaseModel, Field from app.agent.llm.capability import AgentCapabilityManager from app.agent.tools.base import MoviePilotTool from app.agent.tools.tags import ToolTag -from app.runtime.config import settings +from app.runtime.settings import RuntimeSettingsCompat + +settings = RuntimeSettingsCompat() from app.runtime.log import logger from app.schemas.message import Message from app.schemas.message import MessageType diff --git a/docs/refactor/backend-architecture-next-stage.md b/docs/refactor/backend-architecture-next-stage.md index 47c8e05ea..e94871dad 100644 --- a/docs/refactor/backend-architecture-next-stage.md +++ b/docs/refactor/backend-architecture-next-stage.md @@ -1050,6 +1050,8 @@ Agent 能力适配器、记忆和提示词模块改用 `RuntimeSettingsCompat` 导入早期回退;配置债务由 101 个文件降至 98 个,Agent 能力、提示词与运行时专项测试通过。 随后将 LLM capability/helper/provider、Agent orchestrator 和工具基础类统一切换到同一动态运行时端口; 配置债务由 98 个文件降至 93 个,LLM、Agent 生命周期与工具专项测试通过。 +技能注册表、插件工具辅助、终端会话和语音工具也已切换到动态运行时端口,技能市场写入改走配置服务; +配置债务由 93 个文件降至 89 个,技能、工具和安全专项测试通过。 同日修正适配器配置下沉边界:OCR、CookieCloud、DoH、Rust 和资源签名等低层实现不再直接依赖 `app.application`,由 `app.runtime.settings` 端口承接组合根注入;未启动装配时仍回退旧 Settings ABI, diff --git a/tests/fixtures/architecture/configuration-debt-baseline.json b/tests/fixtures/architecture/configuration-debt-baseline.json index 71a21a402..d9a2280af 100644 --- a/tests/fixtures/architecture/configuration-debt-baseline.json +++ b/tests/fixtures/architecture/configuration-debt-baseline.json @@ -9,19 +9,15 @@ "root": "app" }, "settings_imports": { - "count": 93, + "count": 89, "files": [ "app/adapters/system/fsproxy.py", - "app/agent/skills/registry.py", - "app/agent/tools/impl/_plugin_tool_utils.py", - "app/agent/tools/impl/_terminal_session.py", "app/agent/tools/impl/add_download_tasks.py", "app/agent/tools/impl/create_agent_task.py", "app/agent/tools/impl/query_agent_tasks.py", "app/agent/tools/impl/recognize_media.py", "app/agent/tools/impl/scrape_metadata.py", "app/agent/tools/impl/search_web.py", - "app/agent/tools/impl/send_voice_message.py", "app/agent/tools/impl/update_agent_task.py", "app/cli.py", "app/db/base.py", diff --git a/tests/fixtures/architecture/dependency-baseline.json b/tests/fixtures/architecture/dependency-baseline.json index f529cc0e3..5fc684d7b 100644 --- a/tests/fixtures/architecture/dependency-baseline.json +++ b/tests/fixtures/architecture/dependency-baseline.json @@ -13,8 +13,8 @@ "runtime_to_db": [], "workflow_to_db": [] }, - "edge_count": 6419, - "edge_sha256": "91e14e6acb6220fccd8ac3e2df899303f4e4fe6532c92079378d4b350be4d06e", + "edge_count": 6421, + "edge_sha256": "808e0a96b5cce123d86ce90ae4538258c6cc817a6204dc06346888c4f69d344b", "edges": [ "app -> app.runtime", "app -> app.runtime.compat", @@ -404,13 +404,15 @@ "app.agent.skills.registry -> app.agent", "app.agent.skills.registry -> app.agent.skills", "app.agent.skills.registry -> app.agent.skills.metadata", + "app.agent.skills.registry -> app.application", + "app.agent.skills.registry -> app.application.configuration", "app.agent.skills.registry -> app.foundation", "app.agent.skills.registry -> app.foundation.singleton", "app.agent.skills.registry -> app.foundation.url", "app.agent.skills.registry -> app.runtime", "app.agent.skills.registry -> app.runtime.cache", - "app.agent.skills.registry -> app.runtime.config", "app.agent.skills.registry -> app.runtime.log", + "app.agent.skills.registry -> app.runtime.settings", "app.agent.tools.base -> app.agent", "app.agent.tools.base -> app.agent.callback", "app.agent.tools.base -> app.agent.policy", @@ -566,7 +568,7 @@ "app.agent.tools.impl._plugin_tool_utils -> app.application.plugin.runtime", "app.agent.tools.impl._plugin_tool_utils -> app.application.scheduling", "app.agent.tools.impl._plugin_tool_utils -> app.runtime", - "app.agent.tools.impl._plugin_tool_utils -> app.runtime.config", + "app.agent.tools.impl._plugin_tool_utils -> app.runtime.settings", "app.agent.tools.impl._plugin_tool_utils -> app.schemas", "app.agent.tools.impl._plugin_tool_utils -> app.schemas.plugin", "app.agent.tools.impl._plugin_tool_utils -> app.schemas.types", @@ -582,8 +584,8 @@ "app.agent.tools.impl._terminal_session -> app.agent.tools.impl", "app.agent.tools.impl._terminal_session -> app.agent.tools.impl._command_safety", "app.agent.tools.impl._terminal_session -> app.runtime", - "app.agent.tools.impl._terminal_session -> app.runtime.config", "app.agent.tools.impl._terminal_session -> app.runtime.log", + "app.agent.tools.impl._terminal_session -> app.runtime.settings", "app.agent.tools.impl._torrent_search_utils -> app.agent", "app.agent.tools.impl._torrent_search_utils -> app.agent.tools", "app.agent.tools.impl._torrent_search_utils -> app.agent.tools.impl", @@ -1313,8 +1315,8 @@ "app.agent.tools.impl.send_voice_message -> app.agent.tools.base", "app.agent.tools.impl.send_voice_message -> app.agent.tools.tags", "app.agent.tools.impl.send_voice_message -> app.runtime", - "app.agent.tools.impl.send_voice_message -> app.runtime.config", "app.agent.tools.impl.send_voice_message -> app.runtime.log", + "app.agent.tools.impl.send_voice_message -> app.runtime.settings", "app.agent.tools.impl.send_voice_message -> app.schemas", "app.agent.tools.impl.send_voice_message -> app.schemas.message", "app.agent.tools.impl.switch_persona -> app.agent",