jcode · 文档
架构 · 模块 · 文件结构
jcode 的内部架构由严格的五层分层设计驱动,每一层通过明确的接口隔离职责。本页详细拆解各层的核心模块、Rust crates 子系统边界、完整文件树以及命名约定。
■ 五层分层架构
从顶层入口到底层持久化,数据流自上而下单向传递,相邻层通过 trait 接口通信,保证各层可独立测试与替换。
L1
入口层
入口层
▼
L2
Agent 核心
Agent 核心
▼
L3
协作层
协作层
▼
L4
执行层
执行层
▼
L5
持久化
持久化
■ 10 大核心模块
每个模块职责单一,通过 Rust trait 定义公开接口,跨模块调用均通过接口而非直接依赖具体实现。
conversation_loop
L2
主 Agent 循环:读取输入 → 调用 LLM → 分发工具调用 → 渲染输出 → 持久化。是整个 jcode 的心跳,每轮对话的调度中枢。
memory_engine
L2/L5
语义嵌入 + 余弦相似度检索。每轮对话生成 1536 维向量,检索时返回 top-k 相关记忆注入上下文。后台 ambient 模式周期合并。
swarm_coordinator
L3
多智能体编排核心。Primary Agent 调用此模块分析可并行子任务、spawn Worker Agent、收集结果、整合输出。包含冲突检测与仲裁。
provider_registry
L4
统一 LLM Provider 路由。支持 Claude、OpenAI、Gemini、Copilot、Azure、Ollama、LM Studio、Custom 8+ 提供商,单一 LlmProvider trait 抽象差异。
tool_dispatcher
L4
20+ 工具注册与并行分发。LLM 返回 tool_calls 时,dispatcher 并发执行 file_read/write、shell、grep、web、browser、git、mcp_call 等工具。
browser_agent
L4
内置 Firefox 自动化,通过 Agent Bridge 协议控制浏览器。支持:navigate、snapshot、click、type、fill_form、screenshot、eval、scroll、upload。
skill_manager
L2
Skill 文件加载与语义注入。会话启动时扫描 ~/.jcode/skills/,通过语义相似度匹配当前任务,将匹配的 Skill 注入 System Prompt。
handterm
L1
自研终端渲染引擎。1000+ FPS 渲染帧率,Mermaid 图表渲染比 JS 版快 1800×,支持平滑部分行滚动、diff 侧边栏、Info widgets 叠加。
server_mode
L1
多客户端 Server 模式。jcode serve 监听 TCP 端口,管理多 Session 并发,jcode connect 客户端通过协议连接,共享同一后端 Agent 资源。
self_dev
L4
自我开发循环:Agent 修改 Rust 源码 → cargo build 自动触发 → 构建成功后热重载二进制,会话状态不丢失。构建失败则返回错误让 Agent 自我修正。
🐝 Swarm 多智能体架构
Swarm 模式下,单个仓库中可同时运行多个 jcode 实例,通过 swarm_coordinator 协调任务分配,通过 messenger 进行跨 Agent 通信(DM / 广播 / repo channel),通过 conflict resolver 处理同一文件的并发修改。
Primary
jcode --swarm primary
→
Worker A
feature implementation
Worker B
test writing
Worker C
documentation update
DM 点对点直接消息
Broadcast 广播所有 Agent
Channel Repo 主题频道
Conflict 文件冲突自动通知
■ Provider 支持矩阵
Claude
原生支持 · Streaming
OpenAI
原生支持 · GPT-4o
Gemini
原生支持 · Pro/Flash
Copilot
GitHub OAuth
Azure OpenAI
企业部署
Ollama
本地运行 · 免费
LM Studio
本地 GUI · GGUF
Custom
OpenAI-compat API
■ Rust 文件树
jcode 采用 Cargo workspace 多 crate 结构,主 crate 在 src/,子系统拆分到 crates/ 目录下独立 crate。
jcode/
├── Cargo.toml # workspace 根配置
├── src/
│ ├── main.rs # Entry: mode dispatch (TUI/run/serve/swarm...)
│ ├── agent/
│ │ ├── conversation.rs # 核心 Agent 对话循环
│ │ ├── context.rs # Context window 管理 (128K)
│ │ └── session.rs # Session 生命周期管理
│ ├── memory/
│ │ ├── engine.rs # 向量嵌入 + 余弦相似度检索
│ │ ├── ambient.rs # 后台 ambient 合并整理
│ │ └── graph.rs # 图结构记忆查询
│ ├── swarm/
│ │ ├── coordinator.rs # 多 Agent 编排 + Worker spawn
│ │ ├── messenger.rs # 跨 Agent 消息总线 (DM/broadcast)
│ │ └── conflict.rs # 文件修改冲突检测与解决
│ ├── provider/
│ │ ├── claude.rs # Anthropic Claude provider
│ │ ├── openai.rs # OpenAI / Azure provider
│ │ ├── gemini.rs # Google Gemini provider
│ │ ├── copilot.rs # GitHub Copilot provider
│ │ └── router.rs # Provider 路由 + LlmProvider trait
│ ├── tools/
│ │ ├── file.rs # file_read / file_write / file_list
│ │ ├── shell.rs # shell 命令执行 (sandboxed)
│ │ ├── browser.rs # Firefox Agent Bridge 自动化
│ │ ├── grep.rs # 高性能代码搜索 (ripgrep-like)
│ │ └── registry.rs # 20+ 工具注册 + 并行分发
│ ├── ui/
│ │ ├── handterm.rs # 自研终端渲染器 (1000+ FPS)
│ │ ├── side_panel.rs # 文件/diff 侧边栏
│ │ ├── mermaid.rs # Mermaid 图表渲染 (1800× faster)
│ │ └── widgets.rs # Info widgets 叠加层
│ ├── skill/
│ │ ├── loader.rs # Skill 文件加载 (~/.jcode/skills/)
│ │ └── injector.rs # 语义匹配 + System Prompt 注入
│ ├── server/
│ │ ├── serve.rs # 多客户端 Server (jcode serve)
│ │ └── client.rs # Client 连接 (jcode connect)
│ └── self_dev/
│ ├── builder.rs # cargo build 自动化
│ └── reloader.rs # 二进制热重载 (保留会话状态)
├── crates/
│ ├── jcode-core/ # 核心 Agent 逻辑 crate
│ ├── jcode-memory/ # 记忆子系统 crate
│ ├── jcode-swarm/ # Swarm 协作 crate
│ └── jcode-tools/ # 工具实现 crate
├── docs/ # 40+ 架构文档
│ ├── MEMORY_ARCHITECTURE.md
│ ├── SWARM_ARCHITECTURE.md
│ ├── SERVER_ARCHITECTURE.md
│ └── SAFETY_SYSTEM.md
├── ios/ # iOS 原生 App(开发中)
│ └── *.swift
├── scripts/
│ ├── install.sh # macOS / Linux 安装脚本
│ └── install.ps1 # Windows PowerShell 安装脚本
├── .jcode/ # 项目级 jcode 配置
│ ├── config.toml
│ ├── AGENTS.md
│ └── mcp.json
└── .claude/ # Claude Code 兼容配置
└── mcp.json
Crates 子系统边界
📦 jcode-core
核心 Agent 逻辑,包含对话循环、上下文管理、Session 生命周期的可复用抽象层。iOS App 和 Server 模式均依赖此 crate。
ConversationLoop
ContextManager
Session
📦 jcode-memory
记忆子系统完整实现:向量嵌入接口(local / API)、SQLite 向量索引、余弦相似度计算、ambient 合并逻辑、图查询引擎。
MemoryEngine
VectorStore
AmbientConsolidator
📦 jcode-swarm
Swarm 多智能体协调的完整实现:Worker 生命周期管理、消息总线(DM/broadcast/channel)、文件冲突检测、结果聚合。
SwarmCoordinator
MessageBus
ConflictResolver
📦 jcode-tools
全部 20+ 工具的实现:文件操作、shell 执行、浏览器自动化、grep、web 请求、git 操作、MCP 调用。定义 Tool trait 供注册。
Tool trait
ToolRegistry
BrowserAgent
■ 命名约定
| 约定 | 规则 | 示例 |
|---|---|---|
| 文件与模块名 | snake_case(Rust 惯例) | conversation_loop, memory_engine |
| 结构体 / Trait 名 | PascalCase | ConversationLoop, LlmProvider |
| 编排模块后缀 | _coordinator / _manager / _engine | swarm_coordinator, memory_engine |
| Crate 命名 | jcode-{subsystem} | jcode-core, jcode-swarm |
| 主关注点原则 | 每模块仅负责一个主要关注点,跨关注点通过 trait 通信 | tool_dispatcher 分发但不实现工具 |
| 配置文件 | SCREAMING_SNAKE_CASE 用于 env,UPPER_CASE 用于全局常量 | ANTHROPIC_API_KEY |
| 文档文件 | UPPER_CASE_WITH_UNDERSCORES.md | MEMORY_ARCHITECTURE.md |
| Registry 模式 | 注册中心统一管理可扩展的实现集合 | provider_registry, tool registry |