工作区模块参考
工作空间包参考
相关源文件
本章引用的主要源码文件:
Cargo.lockCargo.tomldocs/COMPILE_PERFORMANCE_PLAN.mddocs/CRATE_OWNERSHIP_BOUNDARIES.mdscripts/bench_selfdev_checkpoints.shscripts/check_dependency_boundaries.pysrc/ambient/directives.rssrc/ambient/manager.rssrc/ambient/paths.rssrc/ambient/persistence.rssrc/ambient_tests.rssrc/tool/ambient/tests.rs
jcode 项目被组织为 Cargo 工作空间,旨在提升编译速度、加强模块化,并允许根据条件包含专门的功能集(例如嵌入向量支持)Cargo.toml:8-61。这种模块化设计受到严格的所有权规则约束,该规则将稳定的数据契约与根运行时行为分离,从而缩小根包的重新编译范围 docs/CRATE_OWNERSHIP_BOUNDARIES.md:1-15。
架构总览
下图将高级系统功能映射到实现这些功能的具体工作空间包和代码实体。
系统到代码实体映射
来源:crates/jcode-provider-core/src/lib.rs:8-22、crates/jcode-provider-openrouter/src/lib.rs:228-241、crates/jcode-embedding/src/lib.rs:99-122、crates/jcode-notify-email/src/lib.rs:16-26、crates/jcode-overnight-core/src/lib.rs:1-20。
提供商与认证包 {#16.1}
这些包处理不同大语言模型(LLM)后端的抽象以及企业级认证的复杂性。
jcode-provider-core:包含所有提供商共用的基础shared_http_client,用于最小化 TLS 开销。它定义了成本估算类型(如RouteCheapnessEstimate)以及openai_schema规范化的共享逻辑。jcode-provider-metadata:管理模型目录和配置文件选择,使系统能够将用户友好的模型名称映射到特定的 API 端点。jcode-provider-openrouter:实现 OpenRouter 的专用逻辑,包括模型规范解析(例如model@provider!语法)和端点健康/延迟缓存。jcode-provider-gemini:处理与 Google Code Assist 的集成,包括 Google Cloud 的原生 OAuth 流程。jcode-azure-auth:一个专用工具,用于获取 Microsoft Entra ID(原 Azure AD)令牌,以安全访问 Azure OpenAI 实例。
详情请参阅提供商与认证包。
运行时与工具包 {#16.2}
这些包为代理运行时、向量嵌入向量和辅助通信通道提供"繁重工作"。
核心运行时与嵌入向量
jcode-agent-runtime:定义基础错误类型(StreamError)和信号队列(如SoftInterruptQueue和BackgroundToolSignal),允许 TUI 中断正在运行的大语言模型(LLM)生成或工具执行。jcode-embedding:封装tractONNX 运行时,以在本地运行all-MiniLM-L6-v2模型。它提供Embedder结构体,该结构体使用 384 维空间执行文本 Token 化和向量推理。
通知与用户界面
jcode-notify-email:提供 SMTP 和 IMAP 集成。它可以发送带有"批准/拒绝"按钮的富 HTML 权限请求,并通过 IMAP 轮询回复。它被AmbientRunner用于处理远程用户指令src/ambient/directives.rs:13-21。jcode-pdf:一个工具包,用于从 PDF 文档中提取文本和结构,作为代理的上下文。jcode-tui-workspace:包含专门的 TUI 组件,例如WorkspaceMapWidget,用于可视化多会话环境中不同活动会话之间的关系。jcode-overnight-core:定义自主长期运行任务的数据结构,包括OvernightManifest和任务卡片定义。
运行时交互流程
来源:crates/jcode-embedding/src/lib.rs:99-122、src/ambient/directives.rs:45-55、docs/COMPILE_PERFORMANCE_PLAN.md:42-60。
详情请参阅运行时与工具包。
--- 来源:docs/CRATE_OWNERSHIP_BOUNDARIES.md:1-100、Cargo.toml:8-61、src/ambient/manager.rs:14-29、src/ambient/persistence.rs:13-51、scripts/check_dependency_boundaries.py:19-51。