jcode 深度解析:纯 Rust 打造,它凭什么号称「最强 Coding Agent」?

最近在使用 AI 编程,同时用三款 Codex/WorkdBuddy/Trae:让OpenClaw替你打工(五):没花什么钱养了6只虾,还赚到了钱

为什么同时用三个,因为各有各的长处,也有着一些不能满足需求的地方。

所以今天看到这个开源项目: jcode ,纯 Rust 编写,9.2 万行代码,空闲内存只有 28MB(Trae 启动时,经常内存告警),很是吸引我。

吸引我的是:Swarm 多智能体协作和持久化语义记忆系统。

Github地址:https://github.com/1jehuang/jcode


特点

极致性能(最大差异化优势)

指标 jcode 典型 AI IDE/Agent 倍率
空闲内存 ~28 MB 300-800 MB ~20x
启动时间 即时 3-10 秒 ---
帧渲染 0.67ms (1400+ FPS) 16ms (60 FPS) ~20x
运行时依赖 Node.js/Python/Electron ---

作者实测:同时跑 10+ 个 jcode 会话(客户端、服务器、子 Agent 全开),总内存还比不上一个 Electron 窗口。

持久化语义记忆系统

  • • 基于向量嵌入的语义记忆图(memory graph)

  • • 跨会话自动提取、存储、注入上下文

  • • 分为全局记忆 + 项目记忆两级,四类记忆:事实、偏好、实体、修正

  • • 后台 Memory SideAgent 自动整理:合并重复、消除矛盾、验证过期信息

Swarm 多智能体协作

  • • 同一代码库同时运行多个 Agent 实例

  • • 自动冲突感知:Agent A 修改了 Agent B 已读文件,B 立即收到通知

  • • Agent 可自主 fork 子 Agent 团队(主 Agent → 协调者,子 Agent → 执行者)

OpenClaw:后台环境 Agent

  • • 持续运行的后台进程,做记忆图谱整理

  • • 主动预判:分析最近会话和 Git 历史,提前完成你可能想做的事

  • • 类比:大脑睡眠时的记忆巩固------你休息时它帮你整理知识

其他核心功能

功能 说明
30+ 内置工具 文件读写编辑、glob/grep 搜索、bash 执行、Web 抓取、记忆管理、Agent 间通信等
TUI 界面 Rust 原生终端 UI,侧边栏、内联 diff、Mermaid 流程图渲染
20+ 模型 Provider Claude / OpenAI / Gemini / Copilot / Azure / MiniMax 等,OAuth 登录,有订阅就能用
Self-Dev 模式 Agent 可修改自身源码并自动构建热重载
MCP 集成 支持 Model Context Protocol 扩展
Plan Mode 先只读探索 → 呈现计划 → 批准后再修改

安装与使用

go 复制代码
# macOS / Linux 一键安装
curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash

# 源码编译(需 Rust 工具链)
git clone https://github.com/1jehuang/jcode.git && cd jcode
cargo build --release && scripts/install_release.sh
go 复制代码
jcode                                    # 启动交互式 TUI
jcode run "用 Python 写一个 hello world"  # 非交互单次命令
jcode --resume fox                        # 恢复历史会话
jcode serve                               # 后台服务模式
jcode connect                             # 多客户端接入

有 Claude Max 或 ChatGPT Pro 订阅,OAuth 登录直接用,不额外花钱。

对比

维度 jcode Claude Code aider Codex CLI
语言 Rust --- Python TypeScript
内存效率 ~28MB ~200MB+/会话
启动速度 即时 3-10s
跨会话记忆 ✅ 语义向量记忆图 ❌ 每次从零开始 ⚠️ 有限
多 Agent 协作 ✅ Swarm 原生
后台 Agent ✅ OpenClaw
Self-Dev
OAuth 登录 ✅ 20+ Provider ✅ 有限
MCP
开源 ✅ MIT ---

适用场景与局限

适用: 服务器/SSH 远程开发、多项目管理、长周期项目记忆复用、隐私敏感(可接自托管 LLM)、追求终端原生体验的开发者。

局限: 项目仍在活跃开发期,API 可能 Breaking Change;Rust 代码库对非 Rust 开发者贡献门槛高;性能数据未经独立第三方验证。


最想要的多 Agent 协作和持久化语义记忆,它们的底层实现来自项目核心文档 SWARM_ARCHITECTURE.mdMEMORY_ARCHITECTURE.md


多 Agent 协作如何实现?

1. 角色体系:三层分工

jcode Swarm 是严格的三级角色分工

go 复制代码
用户
 │
 ▼
协调者 (Coordinator)          ← 唯一管理人,唯一面向用户
 │
 ├── 工作树管理器 (WTM)        ← 可选,管理 git worktree 隔离
 │   ├── Agent 1
 │   └── Agent 2
 │
 └── 工作树管理器 (WTM)
     ├── Agent 3
     └── Agent 4
角色 核心权限
协调者 唯一可生成/关闭 Agent;制定 Plan;审批 Plan 更新;不负责合并代码
工作树管理器 管理一个 git worktree;负责该范围内的集成
Agent 并行执行任务;不可生成或关闭其他 Agent;通过 DM/频道直接与其他 Agent 协商

关键约束:Agent 不能链式生成。

A 生成 B,B 也不能生成 C,保证树形结构可控。

2. Agent 间通信靠什么?

核心:Comms Router(通信路由器)+ 通知队列(软中断机制)

go 复制代码
Agent 1 ── DM ──┐
Agent 2 ── DM ──┤
Agent 3 ── 频道 ─┼──→ Comms Router ──→ 通知队列 ──软中断──→ 目标 Agent
Agent 4 ── 广播 ─┘

5 种通信通道:

通道 类型 场景
DM 点对点私信 Agent 间直接协商冲突
Swarm Broadcast 全群广播 全局状态同步、生命周期事件
Topic Channels 主题群聊 围绕特定话题的多方讨论
Shared Context Keys 共享键值 set/read/append 操作
Channel Discovery 频道发现 查找相关频道和参与者

通知以软中断 形式在 Agent 的安全点注入,消息可以穿插在同一个 turn 中,不需要启动新 turn

这避免了"等 Agent 忙完才能收到消息"的延迟。

上下文读取分三档,防止膨胀:

层级 内容 开销
Status Snapshot 元数据 + 当前工具快照 极轻,即使目标 Agent 忙碌也能读
Summary Feed 工具调用名称 + 意图 + 简要结果 轻量
Full Context 完整上下文和工具输出 重量,谨慎使用

3. 如何发起任务?任务如何流转?

完整流程:

go 复制代码
Step 1: 用户 → 协调者(唯一入口)
  用户:"帮我重构这个认证模块"

Step 2: 协调者制定 Plan v1
  Plan 是服务级内存对象,不存到仓库文件
  包含:任务分解 + scope 分配 + 依赖关系

Step 3: 协调者生成 Agent + 分发 Plan
  Agent 收到:完整 Plan + 自己的 scope 指令

Step 4: Agent 并行执行
  每个 Agent 独立工作在分配的 scope 内

Step 5: 冲突时 Agent 自行协商
  Agent A 要改 Agent B 已读的文件
  → File Touch Notification(冲突感知)
  → Agent A 和 B 通过 DM 自行协商
  → 不经过协调者

Step 6: 计划更新
  Agent 发现 Plan 有问题 → propose update → 协调者审批 → 广播给 Plan 参与者

Step 7: 完成报告
  Agent 完成 → 自动转发 completion report 给协调者
  报告必须含:outcome/status、changes/findings、validation、blockers

Step 8: 集成
  协调者不负责 merge → 各 WTM 负责 integration

Agent 生命周期状态机:

go 复制代码
spawned → ready → running ⇄ blocked → completed → stopped
                                              ↘ failed → crashed

4. 需要编排吗?

不需要外部编排器。 编排逻辑内化在协调者角色中:

  • • 协调者制定 Plan → Agent 自主执行 → 冲突时 Agent 自行协商

  • • 协调者不是中央调度器,不插手执行细节

  • • 协调者的编排职责仅限于:分解任务、生成 Agent、审批 Plan 更新、处理失败重试/替换

恢复机制(Agent 挂了怎么办):

操作 含义
retry 同一 Agent 重试
reassign 转给另一个现有 Agent
replace 安全状态检查后换新 Agent
salvage 保留 task-progress context 重新分配

持久化语义记忆:文件还是向量库?

jcode 没有接入 Pinecone、Weaviate、Qdrant 等外部向量数据库。所有嵌入计算本地完成:

  • 嵌入模型all-MiniLM-L6-v2,通过 tract-onnx 在本地 CPU 运行

  • 向量搜索 :内存中余弦相似度计算,在 petgraph::DiGraph 图结构中直接查找

  • 嵌入向量 :存储为独立的 .vec 文件

实际存储布局

go 复制代码
~/.jcode/memory/
├── graph.json                          # 核心:序列化的 petgraph 有向图
├── global.json                         # 用户全局记忆
├── projects/
│   └── <project_hash>.json             # 每个项目的独立记忆文件
├── embeddings/
│   └── <memory_id>.vec                 # 每个记忆的嵌入向量
├── clusters/
│   └── cluster_metadata.json           # HDBSCAN 聚类中心点
└── tags/
    └── tag_index.json                  # 标签到记忆的映射

核心数据结构

go 复制代码
pub struct MemoryGraph {
    graph: DiGraph<MemoryNode, EdgeKind>,  // petgraph 有向图
    memory_index: HashMap<String, NodeIndex>,  // 快速查找索引
    tag_index: HashMap<String, NodeIndex>,
    cluster_index: HashMap<String, NodeIndex>,
}

pub enum MemoryNode {
    Memory(MemoryEntry),  // 核心记忆(内容 + 嵌入向量 + 元数据)
    Tag(TagEntry),        // 显式标签节点
    Cluster(ClusterEntry),// 自动聚类节点
}

pub enum EdgeKind {       // 6 种边关系
    HasTag, RelatesTo { weight: f32 }, Supersedes,
    Contradicts, InCluster, DerivedFrom,
}

设计文档明确:"人类可读"------所有记忆以 JSON 存储,用户可直接查看/编辑。

全局记忆 vs 项目记忆

维度 全局 项目
存储文件 global.json projects/<hash>.json
隔离方式 独立文件 hash(项目根目录绝对路径) 分文件
生命周期 永久 直到项目被删除
切换时机 始终加载 自动检测项目切换时加载

另有一层 Session 记忆 (当前会话临时),存于图中但标记 active 字段,会话结束自动失效。

记忆图谱的检索流程(级联检索)

go 复制代码
Step 1: 嵌入相似度搜索(top-10)
  → 用上下文嵌入向量找最相似的记忆

Step 2: BFS 图遍历(深度 2)
  → 从命中节点沿边扩散(HasTag 0.8, InCluster 0.6,
     RelatesTo 实际权重, Supersedes 0.9)
  → 衰减公式:decayed_score = edge_weight × (0.7)^depth

Step 3: 侧车验证
  → GPT-5.3 Codex Spark 轻量验证关联性

Step 4: 去重排序返回 top-10

后台自动维护机制:

HDBSCAN 自动聚类、信心衰减公式(不同类型记忆不同半衰期:Correction 365 天,Preference 90 天,Fact 30 天,Inferred 仅 7 天)、检索后自动创建/加强关联边。


架构总览

多 Agent 协作和记忆系统是如何工作的:


最近在试用 OpenCode,突然发现这个开源项目,吸引我的最开始是内存占用少,因为其他的还好,一启动 Trae 就提示内存警告。

后来发现它把OpenAI 开源的 Swam 框架下的多 Agent 实现了,正好是我最近需要的功能。

而且它支持多个20多个大模型,无缝衔接现有的官方订阅,切换起来没有负担。

你在用哪些AI 编程工具,欢迎评论区留言。

-END-


推荐阅读:

GitNexus 把代码库变成知识图谱|审核 AI 产出更清晰,改 Bug 更精准

从73.7到89.5,HALO 智能体用"轨迹分析"实现了递归自我进化

DeepSeek 新视觉模型论文:以视觉原语思考让 AI 学会"指图说话"

小米模型 MiMo V2.5 全系列 Pro · TTS 免费用

让 AI 帮你修 bug,结果它把整个代码重写了一遍

Claude Code 写攻击脚本 OpenClaw 自动指挥|900家公司3万密钥外泄

89.2%攻击成功率!腾讯、字节研究发现 OpenClaw Agent 存在可利用结构性漏洞

没人整理过的 DeepSeek 进化史:25篇论文里的技术蜕变