一句话定位:Jarvis 是首个完整覆盖「单人单 Agent、单人多 Agent、多人单 Agent、多人多 Agent」四种协作模式的 AI 开发平台——单兵要强,军团要协同。
参赛赛道:开源 AI 工具赛道
项目名称:Jarvis AI 助手(jarvis-ai-assistant)
开源协议:MIT License
技术栈:Python 3.12 / SQLite / tree-sitter / FastAPI / WebSocket / Playwright
当前版本:4.0.0
项目规模:319 个 Python 源文件 / 15.5 万行代码 / 70 个测试文件 / 960 个测试用例
代码仓库:Gitee(https://gitee.com/skyfireitdiy/Jarvis)/ GitHub(https://github.com/skyfireitdiy/Jarvis)
2024 年以来,Claude Code、CodeX、CodeBuddy 等 AI 编程工具相继问世,将大模型能力产品化,让开发者第一次体验到「AI 写代码」的效率。然而,这些工具在设计之初都隐含了一个假设:AI 助手是个人工具,一人一 Agent,单机单节点。
这个假设在个人开发场景下成立,但在真实的企业开发环境中,问题立刻暴露:
核心矛盾:AI 编程工具的能力在「单兵」层面已经很强,但真实开发是「军团作战」——需要多人、多 Agent、多节点协同。现有工具在「军团」层面是空白。
Jarvis 是一个本地运行、开箱即用、可深度定制的协作式 AI 开发助手平台。它的核心命题是:让 AI 从「单兵作战」进化到「军团协同」。
AI 开发工具的协作能力,可以从两个维度交叉分析:
由此得到四种协作模式:
| 协作模式 | 核心场景 | 关键能力 | 技术支撑 |
|---|---|---|---|
| 单人单 Agent | 个人开发者深度编码 | 符号数据库、影响分析、多语言解析 | SQLite 符号图、tree-sitter、图遍历 |
| 单人多 Agent | 个人编排多 Agent 协作 | Agent 编排、多 Agent 通信、对抗式优化 |
<OrganizeAgents>、send_to_agent、自演化网络
|
| 多人单 Agent | 团队共享同一 Agent | Agent 共享、ACL 权限、并发操作 | JWT 认证、权限组、消息队列 |
| 多人多 Agent | 团队级分布式协作 | 多节点、多网关、跨节点通信 | 主从网关、WebSocket、Worktree |
这四种模式并非孤立,而是层层递进:单人单 Agent 是基础,单人多 Agent 是扩展,多人单 Agent 是共享,多人多 Agent 是终极形态。Jarvis 完整覆盖了全部四种模式,这是其区别于主流 AI 开发工具的核心优势。
Jarvis 在 AI 开发工具光谱中的位置:
| 工具 | 定位 | 协作能力 | 代码理解 |
|---|---|---|---|
| Claude Code / CodeX / CodeBuddy | 单兵武器 | 单人单 Agent(CodeX/CodeBuddy 有子代理) | 文本/向量检索 |
| Jarvis | 军团作战系统 | 四象限全覆盖 | 符号级理解 |
主流工具止步于「单兵」象限(CodeX/CodeBuddy 的子代理仍是单人单 Agent 的树状扩展),Jarvis 是唯一完整覆盖「单人 → 多人」「单 Agent → 多 Agent」两个维度的平台。
而这一切的基础,是 Jarvis 的多节点、多 Agent、多网关架构设计。
Jarvis 采用「多节点 + 多网关 + 多 Agent + 多用户」的分布式协作架构:
该架构包含三个核心层次:
网关集群具备以下核心能力:
http_proxy。
regenerate_agent 操作,通过「获取配置 → 保存会话 → 删除 →
同参重建 → 恢复会话」五步流程,会话上下文不丢失。
| 模块 | 职责 | 关键实现 |
|---|---|---|
jarvis_agent |
Agent 基类 | 事件总线、分层记忆、规则加载、任务列表集成 |
jarvis_code_agent |
代码智能体 | 符号数据库、图遍历、影响分析、依赖分析 |
jarvis_web_gateway |
Web 网关 | 多用户认证、节点管理、Agent 生命周期、聊天室 |
jarvis_tools |
工具集 | 元代理自举、虚拟终端、智能 Shell |
jarvis_mcp |
MCP 客户端 | stdio / sse / streamable 三协议 |
jarvis_sec |
安全分析 | 污点分析、数据流分析、C/Rust 检查器 |
jarvis_c2rust |
C→Rust 迁移 | 完整流水线、断点续跑 |
Jarvis 的核心能力可概括为两大支柱:单兵作战能力与军团协同能力。本章以「人 × Agent」四象限为骨架,逐一展开每种协作模式的技术支撑与差异化优势。
这是最基础的协作模式,也是 Jarvis 技术深度的根基。单个 CodeAgent 必须具备超越主流工具的深度代码理解能力——不是「看到」代码,而是「看懂」代码的依赖关系、影响范围、调用链。
Jarvis 使用 SQLite 存储代码符号与依赖边,而非简单的文本索引。核心实现共
1641 行代码(symbol_table_db.py 327 行 +
impact_analyzer.py 934 行 +
graph_traverser.py 257 行 + database.py 123
行):
SymbolTableDB
存储函数、类、方法、变量等符号及其位置信息,支持按名称、类型、文件路径多维查询
GraphTraverser 支持 BFS
前向/后向遍历,可查询「谁调用了这个函数」「这个函数依赖什么」,支持最大深度限制避免遍历爆炸
QueryBuilder 预编译 SQL
语句,避免运行时 SQL 拼接开销,查询性能优异
技术深度:符号数据库不是简单的「文本索引」,而是真正的代码知识图谱。每个符号是一个节点,每条依赖关系是一条有向边。当开发者问「修改
parse_config 函数会影响哪些地方」时,Jarvis
不是模糊匹配关键词,而是在图上做精确的 BFS 遍历,返回确切的调用链。
差异化:主流工具或基于向量检索(CodeBuddy 的 RAG)、或基于 grep 文本搜索(Claude Code)、或依赖模型上下文窗口直接读取文件(CodeX),均无法精确回答「修改这个函数会影响哪些地方」。向量检索只能找到「语义相似」的代码片段,grep 只能找到「包含这个字符串的文件」,模型上下文受窗口大小限制且无跨文件依赖感知,三者都无法保证「调用关系」的完整性。Jarvis 的符号图可以精确回答,且结果可解释、可验证。
符号数据库 vs 向量检索:理论上的必然优势
向量检索方案存在三个固有开销,使其在本地研发场景中必然慢于符号数据库:
结论:符号数据库是「精确、轻量、可解释」的方案,向量检索是「模糊、重载、黑盒」的方案。对于本地研发场景,符号数据库在资源消耗与查询精度上具有理论上的必然优势——无需实验对比,从方案原理即可判定。
性能实测(真实环境:Ubuntu 24.04,Python 3.12,SQLite WAL 模式;测试服务器为 2 核 Intel Xeon Gold 6133 @ 2.50GHz、3.8GB 内存、30GB 磁盘;测试对象为 Django 开源项目——2929 个 Python 文件、52.4 万行代码):
find_definition 平均
6.4ms/次,find_references 平均 1.4ms/次
注:52 万行代码库建库仅需 22 秒,意味着开发者打开一个大型项目后,几乎无需等待即可获得完整的代码知识图谱。查询与图遍历均为毫秒级,可支撑实时代码补全与影响分析场景。
数据库更新时机(增量维护,非全量重建):
read_code
工具读取文件时,若该文件尚未缓存,调用
update_context_for_file
提取符号并入库。这是读取操作触发的唯一建索引场景;此后索引的更新发生在文件被修改之后(见第
2、3 点)。
find_definition /
find_references)前,通过
is_file_stale 比对文件 mtime
与数据库记录,若文件被外部修改(如用户手动编辑、git
切换分支),自动触发
_refresh_file_symbols
重新索引,保证查询结果始终反映最新代码。
edit_file 修改文件后,主动调用
update_context_for_file,执行「清旧数据 → 提取符号 →
分析依赖 →
存缓存」四步增量更新,仅重建被修改文件的索引,其余文件不受影响。
双轨并行:实时文本搜索 + 符号数据库增量构建
需要特别说明的是,Jarvis 的代码理解机制是双轨并行的,符号数据库并非替代实时读取,而是与实时读取互补的结构化理解引擎:
_read_text_with_preferred_encoding),所见即所得,不存在「索引过时」问题——这一点与
Claude Code 的 grep 实时搜索一致。
edit_file 修改文件后主动调用
update_context_for_file,索引与文件内容同步更新;若文件被外部修改(用户手动编辑、git
切换分支),查询符号前 is_file_stale 检测到 mtime
变化,触发
_refresh_file_symbols
惰性刷新。符号数据库的职责是结构化理解——调用链、依赖图、影响范围,而非「文件完整内容」;文件完整内容由第一轨实时文本搜索保证。符号数据库通过「修改后主动更新
+ 查询/读取时惰性刷新」保持与代码同步,其符号信息同样是最新的。
这种双轨设计的关键在于职责分离:实时文本搜索保证「内容永远最新」,符号数据库保证「理解永远结构化」。两者互补而非互斥——Claude Code 只有第一轨(grep 实时搜索),因此只能回答「字符串在哪里」;Jarvis 两轨兼备,既能回答「字符串在哪里」,又能回答「这个符号的调用链是什么、改动它会影响哪些模块」。
差异化:主流 AI 编程工具(Claude Code、CodeX 等)每次查询都需重新读取文件(grep 实时搜索或模型上下文读取),缺乏持久化的符号索引;Jarvis 的符号数据库以「mtime 增量检测 + 单文件粒度更新」实现索引与代码的实时同步,既避免全量重建的开销,又保证查询结果的准确性。
符号数据库的两大应用场景:
read_code
工具读取文件时,调用
get_edit_context
基于符号数据库构建编辑上下文(EditContext),包含五类信息——当前作用域(光标所在函数/类)、使用符号(编辑区域内引用的符号及其定义位置)、导入符号(文件的
import
关系)、相关文件(依赖与被依赖的文件)、上下文摘要(自然语言描述)。Agent
据此理解「这段代码在哪个函数里、调用了哪些符号、这些符号定义在哪、与哪些文件有关联」,而非仅看到孤立的代码片段。
edit_file 修改文件后,ImpactManager 先调用
update_context_for_modified_files 更新符号表,再通过
parse_git_diff_to_edits 解析修改内容,最后
ImpactAnalyzer.analyze_edit_impact
基于符号图计算影响范围,生成影响报告(受影响文件、受影响符号、风险等级),让
Agent 在修改后立即知晓「这次改动波及了哪些模块」。
差异化:主流工具的上下文构建依赖「全文读取 + 模型自行理解」,文件一大就超出上下文窗口,且无法感知跨文件依赖;Jarvis 的符号数据库在读取时提供结构化上下文(作用域、符号、依赖关系),在修改后提供量化影响报告,使 Agent 的代码理解与修改决策都建立在精确的符号图之上,而非模糊的文本匹配。
为何不用 LSP,而用 Tree-sitter:
AI 编程场景与 IDE 场景有本质区别——Agent 修改的往往是代码片段,而非完整的、可编译通过的代码。LSP(Language Server Protocol)的设计前提是「代码处于可编译状态」,它需要完整的项目上下文、正确的构建配置、可解析的类型信息,一旦代码处于中间态(函数写了一半、import 缺失、语法不完整),LSP 就会失效或返回错误结果。
Tree-sitter 则完全不同:
差异化:主流 AI 编程工具(Claude Code、CodeX 等)不做符号级分析(Claude Code 用 grep 文本搜索,CodeX 依赖模型上下文);Jarvis 选择 Tree-sitter 作为符号提取引擎,正是针对「AI 修改代码片段」这一核心场景——容错、轻量、零配置,使符号数据库在代码的任何中间态都能稳定工作。
ImpactAnalyzer(934
行)识别五类影响,每类影响都附带风险等级:
技术深度:影响分析不是简单的「搜索引用」,而是基于符号图的传递闭包计算。当修改一个底层函数时,Jarvis 会沿依赖边向上遍历,找出所有直接和间接的调用者,并按风险等级排序。开发者可以在修改前就预知「这个改动会影响 3 个模块、12 个函数、5 个测试」,从而做出更明智的决策。
差异化:主流工具最多提供「查找引用」功能,返回一个文件列表。Jarvis 提供的是带风险等级的影响评估报告,区分直接/间接影响、区分代码/测试影响,让开发者真正「心中有数」。
通过 tree-sitter 支持 Python / Go / Java / JavaScript / TypeScript / Rust / C / C++ 八种语言的符号提取。每种语言有独立的解析器实现,并有语言注册表机制,可扩展新语言。
技术深度:tree-sitter 提供的是增量解析能力——代码修改后无需重新解析整个文件,只重新解析变化的子树。这意味着符号数据库可以增量更新,而非每次全量重建。对于百万行代码的项目,这是性能的关键。
差异化:主流工具基于文本匹配或模型上下文理解代码,缺乏结构化符号级解析。Jarvis 的八种语言都经过 tree-sitter 的 AST 级解析,符号提取的精度一致。
Jarvis 支持两种粒度的无人值守运行,适合自动化场景:
<AutoComplete>
标记进入自动完成模式,自行判断任务是否完成,完成后自动总结并将控制权交还用户。
no_interaction_mode=True,Agent 全程不询问用户,适合
CI/CD、定时任务等完全自动化场景。
技术深度:这是自动化程度的两个层次。任务级无人值守让 Agent 在单个任务内自主决策;进程级无人值守让 Agent 在整个生命周期内完全自主。两者结合,覆盖从「半自动」到「全自动」的完整光谱。
差异化:主流工具虽提供自动确认模式(如 Claude Code 的
--dangerously-skip-permissions),但缺乏「任务级 +
进程级」的分层无人值守设计。Jarvis 的
<AutoComplete> 标记让 Agent
在单个任务内自主判断完成度,no_interaction_mode 让 Agent
在整个生命周期内完全自主,两者结合覆盖从「半自动」到「全自动」的完整光谱。
Jarvis 内置完整的定时任务体系:
after(延时执行)、at(定时执行)、loop(循环执行)三个参数,无需额外封装即可实现定时自动化。
技术深度:这是时间维度的自动化。传统工具只能「立即执行」,Jarvis 让 Agent 可以「延时执行」「定时执行」「循环执行」。这意味着 Agent 可以自主安排未来的工作。
差异化:主流工具(如 Claude Code 的
Hooks)是「事件触发」——在固定生命周期节点执行命令,无法「延时执行」或「定时执行」。Jarvis
的定时任务让 Agent
从「被动响应」变为「主动调度」,支持相对时间、绝对时间、循环间隔三种方式,且全工具支持
after/at/loop 参数。
CodeReviewer(893 行)创建独立的「Code Reviewer」Agent
执行代码审查,而非由编写代码的 Agent 自审:
技术深度:这是多 Agent 协作在代码质量保障上的具体应用。编写代码的 Agent 与审查代码的 Agent 是两个独立的进程,拥有独立的上下文与判断。审查 Agent 不受编写 Agent 的「思维惯性」影响,能够发现编写 Agent 忽略的问题。
差异化:主流工具的「代码审查」通常是同一个 Agent 的自我检查——它用同样的上下文、同样的思维模式审视自己的输出,盲区无法消除(Claude
Code 的 subagent 审查需手动配置,非内置的「审查→修复」闭环)。Jarvis 的
CodeReviewer 内置独立的审查
Agent,支持「审查→修复」循环,是真正的第二意见。
sub_agent 与 sub_code_agent 采用 fork
式设计,类似操作系统中的进程 fork:
parent_agent.model.get_messages(),过滤系统消息后注入子
Agent)
agent.first = False),直接基于继承的上下文工作
技术深度:fork 式设计的核心价值是解决上下文传递丢失问题,而非并行。单个 Agent 本身不支持并行执行;如果只是创建一个子 Agent、再由父 Agent 复制任务信息传递给它,中间难免有信息丢失——父 Agent 需要把「背景、约束、已完成的步骤、发现的问题」全部重新描述一遍,任何遗漏都会导致子 Agent 重复劳动或做出错误决策。Jarvis 的做法是让子 Agent 直接继承父 Agent 的完整上下文:对话历史、工具集、规则、配置全部原样继承,子 Agent 一启动就「知道父 Agent 知道的一切」,无需父 Agent 重新转述。这既更好地封装了缓存(上下文不经过二次加工),又提供了完整的上下文信息(零丢失)。
差异化:主流工具的「子任务」(如 Claude Code 的 subagent)需要父 Agent 在任务描述中整理并传递上下文,信息在「父 Agent → 任务描述 → 子 Agent」的链路中层层衰减;Jarvis 的 fork 子 Agent 通过上下文直接继承(对话历史、工具集、规则、配置全部原样继承),跳过了「任务描述转述」这一环节,实现上下文的零丢失传递。
Jarvis 支持 CLI(命令行界面) 形式的调用,开发者无需启动完整服务,即可在终端中直接与 Agent 交互:
技术深度:CLI 是「单兵作战」最自然的入口。对于「改一个函数」「查一个调用链」「修一个 bug」这类小需求,启动完整的多节点多网关架构是过重的。CLI 让 Jarvis 在「轻量」与「重量」之间自由切换——小需求用 CLI 秒级响应,大协作用网关架构。
差异化:主流工具(如 Claude Code)也提供 CLI,但其代码检索机制与 Jarvis 有本质区别。据 Anthropic 官方《Effective Context Engineering for AI Agents》一文,Claude Code 明确放弃索引与向量检索,仅用 glob 与 grep 做实时文本搜索——其设计哲学是「绕过 stale indexing 与复杂语法树」,以换取零预处理与实时性。代价是:Claude Code 只能回答「哪些文件包含这个字符串」,无法回答「这个函数被谁调用、修改它会影响哪些模块」这类结构化问题。
Jarvis 的 CLI
背后是同一个符号数据库与影响分析引擎——即使是 CLI
下的单次查询,也能获得符号级的精确回答:find_definition
6.4ms 定位定义、find_references 1.4ms
列出全部引用、影响分析 4.6
秒给出带风险等级的完整影响报告。这不是「文本搜索 vs
向量检索」的差异,而是「文本级匹配 vs 符号级理解」的差异:grep
告诉你「这个字符串出现在哪里」,符号数据库告诉你「这个符号在依赖图中的位置、它的调用链、以及改动它的波及范围」。
当单个开发者需要同时驱动多个 Agent 协作时,Jarvis 提供了完整的编排与通信能力。这是从「单兵」到「军团」的第一步扩展。
Jarvis 内置 Agent 编排(Orchestration) 机制,通过
<OrganizeAgents> 标签与 YAML
编排文件,可一键批量创建多个 Agent 并配置其协作关系,快速部署出复杂的多
Agent 协作拓扑。
编排机制:
agents 列表中解析每个 Agent
的名称、类型、工作目录、任务描述等配置
create_agent 接口批量创建所有配置的 Agent
编排文件格式:
agents:
- name: "agent_name"
type: "code_agent" # Agent 类型
working_dir: "." # 工作目录
task: | # Agent 的任务描述(提示词)
你的角色定义和工作目标...
编排优势:
builtin/agent_orchestration/
目录内置两个现成的编排配置,开箱即用
内置编排案例一:对抗式 Agent(jsec_adversarial.yaml)
builtin/agent_orchestration/jsec_adversarial.yaml
定义了两个角色对立的
Agent:jsec_rule_developer(规则开发 Agent,code_agent
类型)与 jsec_adversary(对抗 Agent,agent
类型),形成对抗式协作闭环。该范式的完整论述与真实成果详见 3.2.4 节。
内置编排案例二:自演化 Agent 网络(self_evolving_network.yaml)
builtin/agent_orchestration/self_evolving_network.yaml
定义了四类协作 Agent:knowledge_base_agent(知识库
Agent)、monitoring_agent(监控
Agent)、tech_learning_agent(技术学习
Agent)、dispatcher_agent(调度
Agent),形成自演化闭环。该范式的完整论述详见 3.2.3 节。
Jarvis 为 Agent 之间设计了专门的关系组织机制:
send_to_agent 允许
Agent 直接向其他 Agent 发送消息,实现一对一的协作
自演化 Agent 网络的目标是为个人用户构建一个知识积累、用户画像、自进化的工作区,使工作区内的内容对日常工作产生有利支撑。其本质是 Jarvis 记忆系统的高阶形态:将分散的会话记忆、任务经验、技术知识、用户偏好统一沉淀为结构化知识,并持续演化。
四类协作 Agent 的职责分工:
自演化闭环:调度 Agent 分派任务 → 执行 Agent 执行任务 → 知识库 Agent 沉淀知识 → 监控 Agent 监控状态 → 技术学习 Agent 搜索新技术,使工作区能力随使用持续增强。
关键洞察:自演化网络将「知识沉淀」从「任务执行」中独立出来,形成专门的反馈回路。主流 AI 工具的经验记录(如 Claude Code 的 Auto Memory)是「被动笔记」——Agent 自行判断何时记录、记录什么,缺乏结构化索引与主动召回;Jarvis 通过知识库 Agent 将经验持久化为结构化知识,通过调度 Agent 在后续任务中主动复用,通过技术学习 Agent 持续引入外部新知,逐步构建起对用户工作习惯、技术栈、项目背景的深度理解(用户画像),使工作区从「被动执行工具」进化为「主动支撑日常工作的自进化环境」。
方法论价值:该范式是记忆系统的高阶形态,可推广至个人知识管理、持续学习、工作区智能化等场景。其编排配置见 3.2.1 节「内置编排案例二」。
对抗式 Agent 优化专家系统是 Jarvis 独有的多 Agent 协作范式,其核心思想借鉴生成对抗网络(GAN):通过两个角色对立的 Agent 进行对抗迭代,将大语言模型的泛化能力逐步沉淀到专家系统的确定性规则中,实现两种范式的优势融合。
对抗式 Agent 的完整工作流程:
真实案例:jsec 静态检查规则的对抗式进化
jsec(Jarvis Security Scanner)是 Jarvis 的 C/C++ 安全漏洞静态扫描模块。在约 2 天内,通过对抗式 Agent 完成了 13 次提交迭代:
关键洞察:AST 污点分析和数据流分析能力并非预先设计,而是在对抗过程中自然产生的。当对抗 Agent 构造出跨函数的 UAF(释放后使用)绕过案例时,正则匹配完全无法应对,迫使开发 Agent 实现了基于数据库的数据流追踪。这种「对抗压力驱动架构演进」的模式,是 Jarvis 区别于静态工具链的核心创新。
方法论价值:对抗式 Agent 的核心是「逐步将模型的不确定能力沉淀为专家系统的确定规则」。该方法可推广至故障定位、专家运维、安全合规审计、代码审查等专家系统与 Agent 混合场景。其编排配置见 3.2.1 节「内置编排案例一」。
当多个开发者需要共享同一个 Agent 时,Jarvis 提供了完整的多用户认证、权限控制与并发操作能力。这是从「单人」到「团队」的关键一步。
接入方式说明:多人单 Agent 的共享与权限能力仅通过 Web 接口提供,CLI 不支持多用户共享。
Jarvis 内置完整的用户认证与权限体系:
技术深度:Jarvis 的权限体系不是简单的「登录/未登录」二元判断,而是两层细粒度 ACL 权限模型:
第一层:管理员系统级权限。管理员负责系统级权限管理,精确控制每个用户能执行哪些操作:
第二层:Agent 创建者资源级权限。每个 Agent 的创建者可以自主控制该 Agent 的访问权限,分为三个级别:
这种「管理员管系统、创建者管资源」的分层权限模型,既保证了平台级的安全管控,又赋予资源所有者灵活的自主权。
差异化:主流 AI 开发工具(如 Claude Code、CodeX)是单用户本地工具,没有本地多用户概念(Claude Code 的 Team 计划是 SaaS 账号体系,非本地多用户协作)。Jarvis 是团队级协作平台,支持多人共享同一个 Agent 实例。
多个用户可以同时操作同一个 Agent:
技术深度:Agent 共享的核心是消息队列 + 会话共享 + 用户标识。多个用户的消息进入同一个 Agent 的输入队列,Agent 按序处理;所有消息在同一会话中共享可见,但每条消息自动附带用户标识,Agent 能准确区分消息来源。这种设计使多人可以围绕同一个 Agent 进行结对编程、协同调试,实时看到彼此的输入与 Agent 的响应。
差异化:主流工具是「一人一 Agent」模式,Agent 无法被团队共享。Jarvis 的 Agent 是团队资产,可以被多个成员共同使用。
Jarvis 内置完整的聊天室系统,支持人与人之间的实时协作:
技术深度:聊天室系统让 Jarvis 不仅是「AI 工具」,更是「团队协作空间」。开发者可以在聊天室中讨论问题、分享进展、协调工作,同时随时召唤 Agent 参与讨论。
差异化:主流 AI 开发工具没有内置聊天室。团队协作需要切换到 Slack、钉钉等外部工具。Jarvis 将「人-人协作」与「人-Agent 协作」统一在同一个平台内。
这是四象限的终极形态:多个开发者、多个 Agent、分布在多个节点上,通过多个网关协同工作。这是 Jarvis 区别于所有主流 AI 开发工具的根本架构优势。
Jarvis 的核心架构是多节点、多 Agent、多网关:
get_node_secret 获取连接私钥,向主网关注册,形成节点网络
list_nodes
查看所有节点信息,update_nodes_code
一键更新所有节点代码,restart_nodes 一键重启所有节点服务
技术深度:多节点架构的核心是网关路由 + 节点注册。每个节点是自治的(独立运行 Agent),但通过网关互联(消息可跨节点路由)。这类似于微服务架构中的服务注册与发现,但针对 Agent 场景做了专门设计。
差异化:主流 AI 开发工具是单机单进程架构,无法跨机器协作。Jarvis 的多节点架构让团队可以构建分布式的 Agent 协作网络,Agent 可以运行在不同的机器上,通过网关协同工作。
Jarvis 支持跨节点的 Agent 通信:
send_to_agent
可指定目标节点,消息经网关路由至目标 Agent
create_agent、delete_agent、regenerate_agent
均可指定目标节点
list_directory
支持跨节点查询文件系统
create_timer
支持指定节点创建定时任务
技术深度:跨节点通信的核心是网关代理。当 Agent A(在节点 1)需要与 Agent B(在节点 2)通信时,消息先发送到节点 1 的网关,网关发现目标 Agent 在节点 2,将消息转发到节点 2 的网关,再由节点 2 的网关投递给 Agent B。整个过程对 Agent 透明。
跨节点通信架构:
两个通信连接代理:
AGENT_HTTP_REQUEST、NODE_HTTP_PROXY_REQUEST、AGENT_WS_OPEN_REQUEST
等)。当 Web 请求的目标 Agent 不在本地节点时,主网关通过
send_request_to_node 将请求转发到目标子网关。
agent_proxy_manager 将请求反向代理到 Agent
的本地端口,支持 HTTP 与 WebSocket
两种协议。这一层解决了云环境下端口管理问题——Agent
无需暴露公网端口,所有流量经网关统一代理。
两层代理架构的设计优势:
agent_route_registry 自动确定目标 Agent
所在节点并转发,对前端完全透明。
get_node_secret
获取连接私钥),无需修改前端或 Agent 代码,系统可平滑扩展。
send_to_agent 即可。
差异化:主流工具无法实现跨机器的 Agent 通信。Jarvis 的跨节点通信让 Agent 可以分布在不同机器上协同工作,突破了单机的资源限制。
Jarvis 的 create_agent 支持
worktree 参数,这是多人多 Agent 协作的关键能力:
人与人协作的两种方式:
Worktree 的价值:
技术深度:Worktree 是 git 的原生能力,但 Jarvis 将其与
Agent 创建深度集成。创建 Agent 时指定 worktree=True,Agent
自动在独立的 worktree 中工作,避免与主工作目录的代码冲突。
定位:Worktree 是 git 的原生能力,主流 AI 开发工具(如
Claude Code、CodeX)也已支持。Jarvis 在此对齐主流,不落后。Jarvis
的独特价值在于将 worktree 与多 Agent 编排深度集成——创建
Agent 时指定 worktree=True,Agent 自动在独立 worktree
中工作,且多个 worktree 中的 Agent
可通过网关互相通信、协同推进不同需求,这是「多人多 Agent
并行开发」的完整闭环。
Jarvis 提供节点级的运维能力:
update_nodes_code
更新所有节点代码到 main 分支并拉取最新
restart_nodes
一键重启所有节点服务,跳过当前节点,先启动子节点,最后启动 master 节点
list_nodes
查看节点配置、运行状态、已注册子节点等
技术深度:节点级运维的核心是拓扑感知的重启顺序。重启时先启动子节点,最后启动 master 节点,确保 master 节点启动时所有子节点已就绪。这种拓扑感知的运维能力是分布式系统的关键。
差异化:主流工具没有节点概念,自然没有节点级运维。Jarvis 的节点级运维让团队可以像管理微服务一样管理 Agent 网络。
四象限协作模式是 Jarvis 的骨架,但 Jarvis 的创新能力不止于此。以下能力让 Jarvis 从「协作平台」进一步进化为「可自我进化的 AI 开发生态」。
Jarvis 采用内核 + 插件包的扩展架构,工具集可随需求增长:
jarvis_code_agent、jarvis_mcp、jarvis_sec、jarvis_c2rust)以独立模块形式扩展能力
meta_agent)支持根据自然语言描述生成新工具代码并注册,实现工具集的自我扩展
插件包的设计与实现:
config.yaml 的目录或压缩包(支持 .tar /
.tar.gz / .tgz / .zip)
config.yaml 定义插件的
name、description、version
等元信息
install_plugin 校验
config.yaml 后,将插件复制或解压到
~/.jarvis/plugins/<插件名>/ 目录
filter='data' 防止路径遍历攻击(CVE-2007-4559),插件名经
Path(name).name 处理
_load_plugin_configs
自动加载所有插件的配置并合并到主配置,支持 Jinja2 模板渲染
list_plugins
扫描插件目录,uninstall_plugin 安全删除插件目录
Agent 自举开发实证:Jarvis 的开发过程本身就是「Agent 开发 Agent」的最佳证明。据 GitHub 官方统计,2025 年提交 5795 次、2026 年提交 4524 次,两年累计超 1 万次,其中 99% 以上由 Jarvis 的 CodeAgent 自主完成,涵盖功能开发、重构、Bug 修复、文档撰写等各类任务。
注:项目经历过两次大规模瘦身与 git 历史压缩,本地 git 统计因 backup 分支重复提交而不准确,故以 GitHub 官方统计为准。
技术深度:这是可扩展性设计在 AI 工具领域的应用。Jarvis 的内核 + 插件包架构让工具集可以按需扩展,且扩展过程不影响内核稳定性。更关键的是,Jarvis 用自己开发自己——超 1 万次 Agent 自主提交证明了这个闭环的真实性。
差异化:主流工具通过 MCP 接入外部工具(Claude Code 作为 MCP 创造者、CodeX/CodeBuddy 均已支持),但 MCP 是「外部工具接入」,工具逻辑在外部进程,Agent 无法修改其行为。Jarvis 的插件包机制是「内核能力扩展」——插件直接纳入内核工具集,Agent 可调用、可修改、可编排;且扩展过程完全自动化,不需要开发者写代码、不需要重新部署、不需要重启服务。更重要的是,Jarvis 的「自举开发」不是宣传口号,而是有 git 历史可查的客观事实。
Jarvis 采用三层记忆体系,模拟人类记忆的分层机制:
技术深度:三层记忆的核心是按需召回 + 标签过滤。短期记忆保证当前任务的连贯性;项目长期记忆让 Agent 在多次会话间「记住」项目细节;全局长期记忆让 Agent 在不同项目间「迁移」经验。
差异化:Claude Code 的记忆是 Markdown 文件(CLAUDE.md + Auto Memory),CodeBuddy 依赖 RAG 向量检索。Jarvis 采用标签化存储 + 智能语义检索,不依赖向量数据库,轻量、可解释、无额外基础设施依赖;且三层记忆(短期/项目长期/全局长期)可跨 Agent 共享,在多 Agent 协作场景下,子 Agent 可继承父 Agent 的项目记忆与全局经验。
成功的问题解决经验会被自动提取为可复用的方法论,支持:
技术深度:这是知识管理在 AI 工具中的落地。Claude Code 的 Auto Memory 以 Markdown 笔记形式记录经验,但缺乏结构化索引,召回依赖 Agent 自行判断。Jarvis 将成功经验自动提取为结构化方法论,按问题类型索引,下次遇到同类问题时自动加载,召回更精准、更可预期。
差异化:Claude Code 的 Auto Memory 是个人笔记,CodeBuddy 的 RAG 是文档检索,均缺乏「按问题类型索引 + 自动加载」的结构化方法论机制。Jarvis 让团队经验从「散落的笔记」升级为「可索引、可复用、可共享的知识资产」,且支持中心 Git 仓库共享,实现团队级知识沉淀。
Jarvis 支持规则文件的按需加载:
auto_select_rule
自动匹配最相关规则,至多 5 个)
current_dir、git_root_dir、jarvis_src_dir
等)
技术深度:这是上下文窗口管理的关键优化。LLM 的上下文窗口是有限且昂贵的资源。Jarvis 通过任务描述自动匹配最相关的规则,只加载需要的规则,避免上下文膨胀。
与 Skill 概念的关系:Jarvis 的 rule
概念出现比业界流行的 skill
概念更早,命名上不一致,但功能上别无二致——两者都是渐进式披露(progressive
disclosure):按需加载、按任务匹配、只注入相关上下文。因此 Jarvis
可以直接使用技能市场中的 skill,无需改造。更进一步,Jarvis 的 rule 比
skill 还扩展支持了环境相关的模板渲染——通过 Jinja2
模板变量(current_dir、git_root_dir、jarvis_src_dir、rule_file_dir
等),规则内容可以根据当前工作目录、项目根路径等环境信息动态渲染,这是
skill 所不具备的能力。
差异化:Claude Code 的 Skills
也采用渐进式披露(按需加载),但需 Agent 自行判断何时加载哪个
Skill。Jarvis 的
auto_select_rule
基于任务描述自动匹配最相关规则(至多 5 个),无需 Agent
自行判断;且 rule 兼容 skill 生态,可直接复用技能市场资源,同时以 Jinja2
模板渲染能力(环境变量动态渲染)超越 skill。
完整支持 MCP(Model Context Protocol)三种传输方式:
技术深度:MCP 是 AI 工具生态的「USB 接口」标准。Jarvis 完整支持三种传输方式,意味着可以接入任何符合 MCP 标准的第三方工具——从数据库客户端到浏览器自动化,从文件系统到云服务。
差异化:Claude Code 作为 MCP 的创造者支持完整,CodeX、CodeBuddy 也已支持 MCP。Jarvis 完整支持 stdio/sse/streamable 三种传输方式,与主流对齐,且 MCP 工具可直接纳入 Jarvis 的多 Agent 协作体系——Agent 间可通过网关共享 MCP 工具能力。
支持 normal / cheap / smart 三档模型:
按任务复杂度智能调度,兼顾成本与效果。
技术深度:这是成本与能力的动态平衡。简单任务(如文件读取、命令执行)用 cheap 模型即可,复杂任务(如代码生成、架构设计)用 smart 模型。Jarvis 根据任务复杂度自动选择合适的模型档位,在保证质量的同时大幅降低成本。
差异化:主流工具支持手动切换模型(Claude Code 的 Haiku/Sonnet/Opus、CodeBuddy 的混元/DeepSeek),但需开发者自行判断任务复杂度并手动切换。Jarvis 的 normal/cheap/smart 三档模型按任务复杂度自动调度,无需人工干预,在保证质量的同时自动优化成本。
技术深度:这些专项能力覆盖了 AI 开发工具从「代码生成」到「工程落地」的完整链路。C→Rust 迁移解决遗留系统现代化问题;安全分析解决代码安全审计问题;GUI/终端/浏览器自动化解决跨环境操作问题。
差异化:主流工具覆盖「代码生成 + 终端操作 + 文件编辑」的常规开发链路,但缺乏领域专项能力。Jarvis 的专项能力(C→Rust 迁移流水线、污点分析安全审计、GUI/终端/浏览器自动化)让 AI 助手从「写代码」延伸到「改代码、审代码、迁移代码、操作环境」,覆盖主流工具未触及的工程深水区。
本章将 Jarvis 与当前主流的 AI 开发工具(Claude Code、CodeX、CodeBuddy)进行系统对比,突出 Jarvis 的差异化优势。
| 维度 | Jarvis | Claude Code | CodeX | CodeBuddy |
|---|---|---|---|---|
| 架构 | 多节点多网关多 Agent | 单机单进程 | 单机单进程 | 单机单进程 |
| 协作模式 | 人×Agent 四象限全覆盖 | 单人单 Agent | 单人单 Agent | 单人单 Agent |
| 多用户 | JWT + ACL 权限组 | 无 | 无 | 无 |
| 多 Agent | 编排、群聊、点对点、对抗式 | Subagents 子代理 | Subagents 子代理 | 多智能体协作 |
| 代码理解 | SQLite 符号图 + BFS 遍历 | grep 文本搜索 | 文本匹配 | 向量检索 |
| 影响分析 | 五类影响 + 风险等级 | 查找引用 | 无 | 查找引用 |
| 多语言 | 8 种(tree-sitter AST) | 文本级(无 AST) | 文本级(无 AST) | 文本级(无 AST) |
| Agent 自举 | meta_agent 自然语言生成工具 | 无 | 无 | 无 |
| 分层记忆 | 短期/项目/全局(无向量) | Markdown 笔记 | 无 | RAG 向量检索 |
| 方法论沉淀 | 内置方法论管理系统 | 无 | 无 | 无 |
| 规则按需加载 | auto_select_rule 自动匹配 | Skills 渐进式披露 | 无 | 无 |
| MCP 集成 | stdio/sse/streamable | 完整(MCP 创造者) | 支持 | 支持 |
| 多模型分层 | normal/cheap/smart 三档自动调度 | Haiku/Sonnet/Opus 手动切换 | 多模型可选 | 混元/DeepSeek 双模型 |
| 定时任务 | 全工具延迟调用 + 跨节点定时 | 无 | 无 | 无 |
| Worktree 并行 | 深度集成(与多 Agent 编排联动) | 支持 | 支持 | 支持 |
| 节点级运维 | 一键更新/重启/拓扑感知 | 无 | 无 | 无 |
| 开源协议 | MIT(完全开源) | 闭源 | 闭源 | 闭源 |
| 部署方式 | 多节点分布式 | 单机 | 单机 | 单机 |
主流 AI 开发工具的本质是单机单进程的代码助手:一个用户、一个 Agent、一个工作目录。它们擅长「单兵作战」,但无法支撑「军团协同」。
Jarvis 的本质是协作式 AI 开发平台:
即使只看「单人单 Agent」象限,Jarvis 的单兵作战能力也超越主流工具:
在「多人多 Agent」象限,Jarvis 的优势是根本性的:
结论:Jarvis 不是「更好的 Claude Code」,而是不同物种。主流工具是「单兵武器」,Jarvis 是「军团作战系统」。
本章以「军团协同」为主线,按协作模式从简到繁展示 Jarvis 在真实开发场景中的应用价值。
Jarvis 的四种协作模式对应四类真实开发场景,从个人日常开发到团队级解决方案:
| 协作模式 | 典型场景 | 核心价值 |
|---|---|---|
| 单人单 Agent | 日常开发、修 bug、理解代码 | 单兵深度:符号数据库 + 影响分析 |
| 单人多 Agent | 一人扛全流程(方案+编码+测试+部署) | 一人成军:Agent 编排 + 无人值守 |
| 多人单 Agent | 多人共享一个 AI 助手协作开发 | 共享协作:ACL 权限 + 聊天室 |
| 多人多 Agent | 团队级分布式开发 | 军团作战:多节点 + 跨节点通信 |
以下 5.1-5.4 按协作模式从简到繁展开,5.5 展示专项能力,5.6 为真实落地验证。
场景描述:单个开发者使用 Jarvis 的 CodeAgent 进行日常开发,利用符号数据库和影响分析提升开发效率。这是最高频的使用模式。
典型工作流:
parse_config 函数会影响哪些地方」,Agent
基于符号图精确回答
大型项目代码理解与重构(单兵深度):
面对百万行代码的项目,Jarvis 的 CodeAgent 提供:
运行截图(待补充):
场景描述:小 A 独立负责一个微服务项目,既要设计方案、又要编码、测试、部署。他编排一个 Agent Team 来分担工作。
适用场景:一个人既要负责方案、又要负责编码、测试和部署。单人多 Agent 让「一人成军」成为现实——一个人就是一个团队。
场景描述:团队要开发一个 RAG 问答系统。小 A 熟悉业务(订单、退款、物流),小 B 熟悉平台侧技术(中间件、业务调度)。两人需要协作,但共享同一个 Agent。
适用场景:多人合作开发同一需求——一人熟悉业务、一人熟悉技术,需要将两部分集成。多人单 Agent 让「共享一个 AI 助手」成为可能,而非各自为战。
场景描述:团队协作开发的核心价值在于跨节点资源协作。本场景聚焦 Jarvis 最具代表性的闭环——跨节点「编译→测试」流水线,展示多用户、多 Agent、多节点如何协同完成一次完整的开发迭代。
流水线闭环:
该流程展示了跨节点资源协作、多用户共享、实时通信和协作决策的完整闭环。
运行截图(待补充):
场景描述:使用 Jarvis 的对抗式 Agent 优化专家系统,为 C/C++ 项目构建安全漏洞静态扫描器。
实际成果(jsec 案例):
安全审计与代码迁移(专项能力):
运行截图(待补充):
场景描述:使用 Jarvis 的 meta_agent 用自然语言生成新工具,实现 Agent 自举开发。
实际成果:
场景描述:团队希望将 AI 使用经验系统化,避免「每次从零开始」。
Jarvis 方案:
运行截图(待补充):
场景一:中兴通讯研发流程基座
Jarvis 已在中兴通讯研发流程中实际使用,并作为公司内部多个系统的基座:
这验证了 Jarvis 在真实企业环境中的可用性与稳定性——不是实验室玩具,而是经受了企业级研发流程考验的工具,且具备「作为 SDK 被集成」的开放能力。
注:中兴通讯内部的具体使用规模、效率数据与协作细节属企业研发机密,不便在公开文档中披露。
场景二:第三届开放原子大赛总冠军
Jarvis 参加了第三届开放原子大赛「智锻代码·开源鸿蒙全球 AI Agent 代码生成挑战赛」(主办:开放原子开源基金会,承办:CSDN,协办:Rust 基金会等),在 99 支报名团队中脱颖而出,获得一等奖(总冠军)。
这一成绩验证了 Jarvis 在代码安全分析与代码生成 Agent 能力上的技术领先性,也证明了其在真实竞赛环境中的竞争力。
本章展示 Jarvis 在开源治理方面的实践,覆盖协议合规、贡献机制、文档规范、CI/CD 与许可证合规。
可运行、可测试:
pytest 一键运行 960
个测试用例,覆盖核心功能,保证可复现验证
Jarvis 采用 MIT 许可证,这是最宽松的开源许可证之一:
Jarvis 提供完整的贡献指南(CONTRIBUTING.md):
Jarvis 提供完善的文档体系:
Jarvis 的 Agent 自举能力有 git 提交历史作为实证:超 1 万次 Agent 自主提交、两次代码瘦身与历史压缩保持仓库健康。详细数据见 6.8 节「开发活跃度与运营现状」。
Jarvis 配置了四条 CI/CD 流水线:
Jarvis 的许可证合规实践:
开发活跃度(GitHub 官方统计):
真实场景验证:
社区数据(GitHub 官方统计):
运营规划:
贡献机制(详见 6.3 节):
本章展示 Jarvis 的长期发展规划、治理结构与社区支撑。
2026 Q3-Q4(主题:降低门槛,扩大用户基础):
2027 Q1-Q2(主题:生态与用户体验):
2027 Q3-Q4(主题:性能优化):
Jarvis 采用内核 + 插件包的治理路径:
| 层级 | 职责 | 维护方 | 原则 |
|---|---|---|---|
| 内核 | Agent 基类、网关、记忆、规则等核心能力 | 核心团队 | 稳定性优先 |
| 插件包 | 代码理解、安全分析、C2Rust 等扩展能力 | 社区贡献 | 灵活性优先 |
| 贡献机制 | Fork → PR → CI → 审查 → 合并 | 核心维护者把关 | 先测试、后合并 |
| 版本管理 | 语义化版本(SemVer) | 核心团队 | 兼容性保证 |
治理路径说明:内核由核心团队维护,保证稳定性;插件包由社区贡献,保证灵活性。所有贡献(无论内核还是插件包)都经过统一的「Fork → PR → CI → 审查 → 合并」流程,由核心维护者把关。重大特性走 RFC 流程,安全漏洞 48 小时内响应。
决策机制:
社区运营计划:
skyfireitdiy/Jarvis)与 GitHub,覆盖国内外开发者
Jarvis 是一个协作式 AI 开发助手平台,其核心价值可概括为一句话:
单兵要强,军团要协同。
在「单人单 Agent」象限,Jarvis 的 CodeAgent 具备超越主流工具的深度代码理解能力:
在「多人多 Agent」象限,Jarvis 具备主流工具完全不具备的协作能力:
Jarvis 不是「更好的 Claude Code」,而是不同物种:
Jarvis 为「开源 AI 工具赛道」带来的核心价值,是人 × Agent 多维度协作:
主流 AI 开发工具止步于「单人单 Agent」,Jarvis 是唯一完整覆盖「人 × Agent」两个维度、四种协作模式的平台。这是 Jarvis 区别于一切同类工具的根本所在。
围绕这一核心价值,其余能力共同支撑协作价值的落地:
Jarvis 的独特之处在于:它用自己开发自己——超 1 万次 Agent 自主提交是「开源向实」最有力的注脚。
文档版本:2.8(本轮:头部代码仓库补 GitHub 地址)
最后更新:2026-08-22