メインコンテンツまでスキップ

Agent 概览

Agent 是 Elftia 的核心能力之一。它让 AI 不再只是被动回答问题,而是具备了主动执行任务的能力 —— 读写文件、运行命令、搜索网页、调用外部工具,甚至协调多个子 Agent 并行工作。

什么是 Agent

在传统聊天中,AI 只能输出文字。而 Agent 模式下,AI 可以:

  1. 分析任务 — 理解你的需求,制定执行计划
  2. 调用工具 — 读取文件、编辑代码、执行命令
  3. 迭代优化 — 检查结果、修正错误、继续执行
  4. 返回结果 — 完成任务后给出最终回复

这个「思考 → 执行 → 观察 → 再思考」的循环,就是 Agent 循环(Agent Loop)。

用户消息 → 引擎分发 → LLM 思考 → 工具调用 → 结果观察 → 继续循环或返回回复
↑ ↓
└──────────────────────────────┘

多引擎架构

Elftia 支持多种 Agent 引擎,不同引擎适合不同场景:

引擎类型标识说明适用场景
TinyElftinyelfElftia 内置的轻量级 Agent 引擎日常编程、文件操作、自动化任务
Claude SDKclaude-sdk基于 Anthropic 官方 Agent SDK需要 Claude 原生工具链的场景
CLI Runnercli外部命令行工具(Claude Code、Codex)需要使用外部 CLI Agent
Chatchat纯聊天引擎(无工具调用)简单问答、翻译、写作
STChatst-chat单轮对话引擎快速单轮任务
APIapi轻量 API 调用媒体生成等非聊天场景

TinyElf 引擎

TinyElf 是 Elftia 默认的 Agent 引擎,具有以下特点:

  • 进程内运行 — 无需启动子进程或代理服务器,启动快速
  • 多 LLM 支持 — 通过 TinyElfLLMAdapter 适配任意 LLM 提供商
  • 内置工具链 — 文件读写、Shell 命令、网页搜索、MCP 工具
  • 子 Agent 协作 — 支持前台和后台子 Agent 并行执行
  • 技能系统 — 可加载可复用的 SKILL.md 技能指令
  • 安全管控 — 三层安全防护(防火墙 + 守护 Agent + 权限确认)

Claude SDK 引擎

基于 @anthropic-ai/claude-agent-sdk,适合需要 Claude 原生能力的场景:

  • 使用 Claude 官方预设的系统提示和工具
  • 支持非 Anthropic 提供商(通过内置代理服务器转换格式)
  • 多 API Key 负载均衡

CLI Runner 引擎

通过 ProcessSupervisor 管理外部 CLI 工具进程:

  • 支持 Claude Code CLI 和 Codex CLI
  • PTY 终端模式和普通子进程模式
  • 自动超时处理和输出解析

核心能力

工具调用

Agent 可以使用多种工具完成任务:

工具类别包含工具说明
文件系统Read、Write、Edit、ListDir、Glob、Grep读写和搜索项目文件
ShellBash执行终端命令
网页WebSearch、WebFetch搜索和抓取网页内容
子 Agentspawn_agent启动子 Agent 处理子任务
会话管理SessionsSpawn、SessionsList、SessionsSend跨会话协作
技能list_skills、read_skill查看和读取技能内容
MCPmcp__*(动态加载)外部 MCP 服务器工具
控制Notify、SessionsYield通知和流程控制

子 Agent 协作

Agent 可以启动子 Agent 来并行处理子任务:

  • 前台子 Agent — 阻塞等待结果,直接返回给主 Agent
  • 后台子 Agent — 在后台异步执行,完成后结果注入主循环
  • Agent 配置继承 — 子 Agent 可继承父 Agent 的 MCP 工具和技能
  • 安全继承 — 子 Agent 继承父 Agent 的安全设置和权限模式

技能系统

技能(Skill)是可复用的指令集,以 SKILL.md 文件形式存在:

  • 项目技能 — 放在 .claude/skills/ 目录下,随项目共享
  • 个人技能 — 放在 ~/.claude/skills/ 目录下,全局可用
  • 社区技能 — 通过 SkillHub 搜索和安装

Agent 市场

Elftia 内置了多种预配置的 Agent,覆盖不同场景:

  • 编程助手、代码审查、测试编写
  • 文档写作、翻译校对
  • 研究分析、数据处理
  • 任务自动化、工作流编排

Agents 页面:单层平铺模型

0.1.7 完成两步合并 —— 不再有 "Persona / Avatar / Agent 三层结构"。所有 agent 在 Agents 页面 (/agents) 一个网格里平铺管理。

一个 agent = 一个独立的对话目标

页面布局:

  • 左侧分类栏:13 个分类(Featured、My、工作、编程、创意、研究、写作、生活、教育、娱乐、社交、自动化、Tools)
  • 顶部搜索:按 agent 名称 / 描述 / 标签匹配
  • 右侧网格:所有内置 + 用户自定义 agent 的卡片

内置 agent

  • Clawia — 通用 Agent,主对话入口
  • Cocoia — 定时任务专用
  • Canvas — 可视化原型
  • ClaudeCode — 代码开发
  • Design Studio — 设计工坊
  • Artia — 创意助手
  • 动态加载的 datia 类 package:Deep Research、Visual Layout、Novel Writer 等

底层的媒体生成 agent(Chat / Image / Video / Music)保留在系统中,由各自的专用面板入口调用,不在 Agents 页单独露出。

数据迁移说明

底层数据迁移在升级时自动进行:

  • v82(0.1.7 第一步):回归平铺 agent 模型,Codia 下的 Canvas / ClaudeCode 拆为独立顶层 agent
  • v87(0.1.7 第二步):合并底层 Persona 与 Agent 表为唯一的 agent 表,简化数据模型

历史会话完整保留:原本归在 Codia 下的会话现在分别按使用的 agent 独立成行;历史消息无任何丢失。如需回滚,支持团队可通过 <userData>/migrations/ 下的快照文件恢复。

快速开始

使用内置 Agent

  1. 打开 Agent 面板(侧边栏 Agent 图标)
  2. 浏览 Agent 市场,选择一个适合的 Agent
  3. 开始对话,Agent 会自动调用需要的工具

创建自定义 Agent

  1. 在 Agent 面板中点击「创建 Agent」
  2. 设置名称、描述和系统提示
  3. 选择可用的工具和权限模式
  4. 保存后即可使用

详细步骤请参考 创建自定义 Agent

常见问题

问题原因解决方案
Agent 无法执行工具引擎类型为 chat(无工具支持)切换到 tinyelfclaude-sdk 引擎
工具执行需要频繁确认权限模式为 default设置为 acceptEditsbypassPermissions
Agent 循环太快就停了maxIterations 设置过小调整最大迭代次数(默认 40)
MCP 工具未出现未关联 MCP 服务器在 Agent 配置中添加 MCP 服务器
子 Agent 执行失败子 Agent 配置文件有误检查 .claude/agents/*.md 格式

相关链接