首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >jcode 深度解析:纯 Rust 打造,它凭什么号称「最强 Coding Agent」?

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

作者头像
勇哥AI笔记
发布2026-05-07 15:18:23
发布2026-05-07 15:18:23
300
举报
文章被收录于专栏:技术人生黄勇技术人生黄勇

最近在使用 AI 编程,同时用三款 Codex/WorkdBuddy/Trae。

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

所以今天看到这个开源项目: 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

先只读探索 → 呈现计划 → 批准后再修改

安装与使用

代码语言:javascript
复制
# 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
代码语言:javascript
复制
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 是严格的三级角色分工

代码语言:javascript
复制
用户
 │
 ▼
协调者 (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(通信路由器)+ 通知队列(软中断机制)

代码语言:javascript
复制
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. 如何发起任务?任务如何流转?

完整流程:

代码语言:javascript
复制
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 生命周期状态机:

代码语言:javascript
复制
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 文件

实际存储布局

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

核心数据结构

代码语言:javascript
复制
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 字段,会话结束自动失效。

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

代码语言:javascript
复制
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-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术人生黄勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特点
    • 极致性能(最大差异化优势)
    • 持久化语义记忆系统
    • Swarm 多智能体协作
    • OpenClaw:后台环境 Agent
    • 其他核心功能
  • 安装与使用
  • 对比
  • 适用场景与局限
  • 多 Agent 协作如何实现?
    • 1. 角色体系:三层分工
    • 2. Agent 间通信靠什么?
    • 3. 如何发起任务?任务如何流转?
    • 4. 需要编排吗?
  • 持久化语义记忆:文件还是向量库?
    • 实际存储布局
    • 核心数据结构
    • 全局记忆 vs 项目记忆
    • 记忆图谱的检索流程(级联检索)
  • 架构总览
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档