模块由三个并列子包组成,职责清晰且依赖方向单向: - providers/:以 llm.py 中的 build_llm 为工厂入口,通过 capabilities.py 的 ProviderCapabilities 数据类集中声明各厂商(OpenAI、Anthropic、DeepSeek、Moonshot、Gemini、Ollama 等)的凭据环境变量、base URL、推理字段转发策略;llm_providers.json 作为运行时 provider 目录表,openai_codex.py、chat.py、content_filter.py 按能力开关动态启用对应适配器。对可选依赖(langchain-openai、langchain-anthropic、httpx、dotenv)采用 try/except 延迟导入,保证无额外安装时仍可降级。 - config/:以 Pydantic 模型(schema.py 中的 AgentConfig / MCPServerConfig / ChannelsConfig)定义配置结构,loader.py 负责从 ~/.vibe-trading/agent.{json,yaml} 或 swarm 专用路径加载并合并运行时覆盖,accessor.py 暴露 get_env_config 供 providers 读取;limits.py、paths.py、env_schema.py、migrate.py 分别处理限制、路径解析、环境变量 schema 与历史迁移。__init__.py 仅暴露高层 API。 - security/:scanner.py 实现基于正则的 prompt-injection 规则集与 neutralize_special_tokens 控制符中和,对外部工具返回内容标注 security_warnings;network.py 与 workspace_policy.py 是薄包装层,将 src.channels.utils 中的 URL 校验与路径白名单检查重新导出,保持向后兼容;workspace_access.py 承载工作区访问策略。该子包不直接依赖 providers/config,仅被上层 channel/tool 调用。 依赖方向:providers → config.accessor + config.env_schema;config 自包含;security 仅依赖 channels.utils,三者之间无循环依赖。