Jarvis Agent 高级主题

项目地址:https://github.com/skyfireitdiy/Jarvis
6. 高级主题
本章面向希望深度定制和挖掘 Jarvis 潜力的用户,将介绍一些高级配置和功能。
6.1 模型组配置
在不同的任务场景下,您可能希望使用不同的 AI 模型组合。例如,使用一个强大的模型进行复杂的代码生成(“思考”模型),同时使用一个快速、经济的模型处理常规对话(“普通”模型)。模型组功能就是为此设计的。
配置方法
在您的全局配置文件 ~/.jarvis/config.yaml
中,您可以定义 JARVIS_MODEL_GROUPS
列表,并用 JARVIS_MODEL_GROUP
来选择当前激活的组。
配置优先级
Jarvis 按以下顺序(从高到低)应用配置:
独立环境变量: 直接设置的
JARVIS_PLATFORM
,JARVIS_MODEL
等,会覆盖所有其他设置。模型组配置: 由
JARVIS_MODEL_GROUP
选中的配置。代码默认值: 如果以上均未配置,则使用系统内置的默认模型。
6.2 快捷指令
为了提升交互效率,Jarvis 支持两种快捷指令机制:元命令和输入替换映射。它们都在输入被发送给 AI 模型之前由 input_handler
处理。
元命令 (Meta-Commands)
元命令是硬编码在 builtin_input_handler
中的特殊指令,用于执行系统级操作,通常会中断正常的 AI 交互流程。
使用格式: 在交互界面输入 '<命令名>'
,例如 '<Clear>'
。

输入替换映射 (Replace Map)
这种机制允许您定义一些短标签,当输入这些标签时,系统会自动将其替换为更长的、预设好的模板字符串,然后再交给 AI 处理。这非常适合固化一些常用的高频指令。
使用格式: 在交互界面输入 '<标签名>'
,例如 '<Web>'
。
内置替换指令

自定义替换指令
您可以在配置文件 ~/.jarvis/config.yaml
中通过 JARVIS_REPLACE_MAP
定义自己的快捷指令。
配置后,当您在 jvs
中输入 '<my_check>'
时,它会被自动替换为 template
中的长指令。
6.3 自定义代理 (jarvis-agent
/ ja
)
虽然 jvs
(Jarvis) 和 jca
(Code Agent) 等预置代理能满足大部分需求,但有时您可能需要一个具有特定“人设”、特定工具集和特定行为模式的代理。jarvis-agent
(ja
) 就是用于创建和运行这种高度自定义代理的工具。
代理定义文件
自定义代理的核心是一个 YAML 格式的定义文件。
使用方法
您可以使用 -c
或 --agent_definition
参数来加载您的代理定义文件。
通过这种方式,您可以创建出各种各样专注于特定领域的专家代理,如“文档撰写专家”、“k8s 运维专家”或“安全分析专家”,极大地扩展了 Jarvis 的应用场景。
6.4 多代理协作系统 (jma
)
除了单个的自定义代理,Jarvis 还提供了一个更强大的范式:多代理协作系统。您可以定义一个由多个具有不同角色和能力的 Agent
组成的团队,让它们通过对话和协作来共同完成一个复杂的任务。
核心机制
团队定义: 您在一个 YAML 文件中定义整个团队,包括每个代理的角色、能力(可使用的工具)和系统提示。
主代理 (Entry Point): 您需要指定一个“主代理”(通常是项目经理或协调者角色),它将首先接收用户的初始任务。
基于消息的通信: 代理之间不直接调用彼此。它们通过生成一个特殊的
<SEND_MESSAGE>
输出来进行通信。协调器: 一个名为
MultiAgent
的隐形协调器负责拦截这些消息,并将其路由给目标代理,从而驱动整个团队的协作流程。
定义多代理系统 (YAML 文件)
多代理系统的核心是一个定义文件,它包含两个顶级键:main_agent
和 agents
列表。
下面是一个“软件开发团队”的示例 dev_team.yaml
:
使用方法
使用 jma
(Jarvis Multi-Agent) 命令和 -c
参数来启动您的多代理团队。
当命令执行后:
用户输入 "请用 python 写一个快速排序算法..." 会首先被发送给 项目经理。
项目经理 会分析需求,然后向 程序员 发送一条消息,如:“请编写一个快速排序的 Python 实现”。
程序员 接收到消息,编写代码,然后向 项目经理 回复:“代码已完成,位于 quick_sort.py”。
项目经理 接收到回复,再向 测试工程师 发送消息:“请测试 quick_sort.py 的功能和正确性”。
测试工程师 执行测试,并将结果(如 “测试通过”)报告给 项目经理。
最后,项目经理 总结所有工作,并向用户报告最终结果。
通过这种方式,您可以构建出高度结构化和专业化的自动化工作流,以解决远超单个 Agent 能力范围的复杂问题。
6.5 聊天角色预设 (jpm role
)
与 ja
(自定义代理) 和 jma
(多代理系统) 专注于执行复杂任务不同,有时您可能只是想快速与一个具有特定“人设”和知识领域的 AI 进行纯粹的对话。jpm role
功能就是为此设计的。
它允许您预先定义一组“聊天角色”,每个角色绑定了特定的模型和系统提示词,从而可以一键“扮演”不同领域的专家进行对话。
角色定义文件 (roles.yaml
)
您需要在 ~/.jarvis/
目录下创建一个 roles.yaml
文件(或通过 jpm role -c
指定其他路径),并在其中定义您的角色列表。
文件结构如下:
使用方法
启动角色选择: 直接运行
jpm role
命令。选择角色: 程序会列出
roles.yaml
中定义的所有角色,您可以输入编号进行选择。开始对话: 选择后,Jarvis 会加载该角色的模型和系统提示词,然后您就可以直接开始与这位“专家”对话了。
jpm role
是一个轻量级但非常实用的功能,它让您无需每次都手动设置系统提示和模型,就能在不同的专家角色之间轻松切换。
6.6 方法论共享与扩展
除了即时定义的任务和代理,Jarvis 还支持一个更高级的概念:**方法论 (Methodology)**。方法论是一种可复用的、结构化的高级问题解决方案,它可以被沉淀下来、共享给团队,并在合适的场景下被 AI 自动调用,从而极大地提升了解决特定类型问题的效率和质量。
什么是方法论?
简单来说,方法论是一个针对特定“问题类型”的“操作手册”或“最佳实践指南”。当用户输入的需求与某个方法论的“问题类型”匹配时,AI 就会优先参考这个指南来规划其行动步骤。
方法论的格式
方法论以简单的 JSON 文件形式存在,每个文件定义一个方法论。
核心字段:
problem_type
: (字符串) 对该方法论所解决的问题类型的简明描述。这是 AI 用来匹配用户需求的关键。content
: (字符串) 方法论的具体内容,即详细的步骤、原则和建议。
示例: code_review_methodology.json
加载与共享
Jarvis 会从以下位置自动加载所有 .json
格式的方法论文件:
用户方法论目录:
~/.jarvis/methodologies/
(推荐存放您个人方法论的地方)外部方法论目录: 由
JARVIS_METHODOLOGY_DIRS
环境变量指定的目录列表。
通过 Git 共享方法论:
JARVIS_METHODOLOGY_DIRS
的设计初衷就是为了方便团队协作和知识共享。您可以:
创建一个 Git 仓库,专门用于存放团队的最佳实践和方法论 (
.json
文件)。团队成员将此仓库克隆到本地。
设置环境变量
JARVIS_METHODOLOGY_DIRS
指向该仓库的本地路径。
配置完成后,Jarvis 启动时会自动从该 Git 仓库加载所有方法论。更棒的是,Jarvis 内置了每日自动更新机制,会自动拉取最新的方法论,确保整个团队的知识库保持同步。
通过这种方式,您可以将团队的智慧结晶沉淀为可执行的“数字资产”,让 AI 助手能够持续学习和成长,成为团队中越来越得力的专家。
版权声明: 本文为 InfoQ 作者【SkyFire】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce2a7d4f55862614b30472061】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论