Agent 模板目录
LibreFang 提供 32 个 Agent 模板,来自 registry。assistant 模板已预装,其他模板可从 Dashboard 安装。每个模板都是一个可直接生成的 agent.toml 清单文件,位于 agents/ 目录下。
所有模板均使用 provider = "default" 和 model = "default",即继承你在 config.toml 中配置的默认供应商和模型。你可以在生成时覆盖这些设置。
快速开始
通过 CLI 生成任意模板:
librefang spawn orchestrator
librefang spawn coder
librefang spawn --template agents/writer/agent.toml
通过 REST API 生成:
通过内置模板名称生成:
curl -X POST http://localhost:4545/api/agents \
-H "Content-Type: application/json" \
-d '{"template": "coder"}'
生成时覆盖模型:
curl -X POST http://localhost:4545/api/agents \
-H "Content-Type: application/json" \
-d '{"template": "writer", "model": "claude-sonnet-4-20250514"}'
向运行中的 Agent 发送消息:
curl -X POST http://localhost:4545/api/agents/{id}/message \
-H "Content-Type: application/json" \
-d '{"content": "Write unit tests for the auth module"}'
模板分类
模板按使用场景组织。所有模板都使用默认模型供应商。下表列出每个 Agent 的描述、标签、temperature 和最大输出 token 数。点击 Agent 名称可在 registry 中查看完整的 agent.toml 清单。
软件工程
| 模板 | 描述 | 标签 | Temp | Max Tokens |
|---|---|---|---|---|
| coder | 资深软件工程师。读、写、分析代码。 | python、write code、implement feature | 0.3 | 8192 |
| code-reviewer | 资深代码评审员。按生产标准审查 PR、识别问题、给出改进建议。 | best-practices、code review、review this pr | 0.3 | 4096 |
| debugger | 调试专家。追踪 bug、分析栈、做根因分析。 | -- | 0.2 | 4096 |
| test-engineer | QA 工程师。设计测试策略、编写测试、验证正确性。 | validation、test plan、write tests | 0.3 | 4096 |
| architect | 系统架构师。设计软件架构、评估权衡、产出技术规范。 | planning、system design、software architecture | 0.3 | 8192 |
| security-auditor | 安全专家。审查代码漏洞、检查配置、做威胁建模。 | vulnerability、security audit、vulnerability review | 0.2 | 4096 |
| ops | DevOps Agent。监控系统、跑诊断、管理部署。 | -- | 0.2 | 2048 |
| devops-lead | DevOps 负责人。负责 CI/CD、基础设施、部署、监控、事件响应。 | -- | 0.2 | 4096 |
| planner | 项目规划师。制定项目计划、拆分 epic、估算工作量、识别风险与依赖。 | -- | 0.3 | 8192 |
研究与分析
| 模板 | 描述 | 标签 | Temp | Max Tokens |
|---|---|---|---|---|
| researcher | 调研 Agent。抓取网页内容并综合信息。 | web、web research、investigate topic | 0.5 | 4096 |
| academic-researcher | 学术调研 Agent。检索学术论文、总结发现、生成文献综述。 | science、academic research、paper search | 0.3 | 8192 |
| analyst | 数据分析师。处理数据、生成洞察、撰写报告。 | -- | 0.4 | 4096 |
| data-scientist | 数据科学家。分析数据集、构建模型、做可视化和统计分析。 | -- | 0.3 | 4096 |
写作与文档
| 模板 | 描述 | 标签 | Temp | Max Tokens |
|---|---|---|---|---|
| writer | 内容作者。创作文档、文章和技术写作。 | -- | 0.7 | 4096 |
| doc-writer | 技术作者。编写文档、README、API 文档、教程和架构指南。 | -- | 0.4 | 8192 |
| translator | 多语言翻译 Agent,用于文档翻译、本地化和跨文化沟通。 | translation、languages、localization、multilingual、communication | 0.3 | 8192 |
商业与沟通
| 模板 | 描述 | 标签 | Temp | Max Tokens |
|---|---|---|---|---|
| customer-support | 客户支持 Agent,负责工单处理、问题解决与客户沟通。 | support、customer-service、tickets、helpdesk、communication | 0.3 | 4096 |
| sales-assistant | 销售助手 Agent,负责 CRM 更新、外联起草、销售漏斗管理与商机跟踪。 | deals、deal tracking、leads | 0.5 | 4096 |
| recruiter | 招聘 Agent,负责简历筛选、候选人外联、JD 写作和招聘漏斗管理。 | hr、candidate screening、recruiting outreach | 0.4 | 4096 |
| email-assistant | 邮件分流、起草、排期与收件箱管理 Agent。 | email、communication、triage、drafting、scheduling | 0.4 | 8192 |
| meeting-assistant | 会议记录、行动项、议程准备与跟进管理 Agent。 | meetings、notes、action-items、agenda、follow-up | 0.3 | 8192 |
| social-media | 社交媒体内容创作、排期与互动策略 Agent。 | social-media、content、marketing、engagement、scheduling | 0.7 | 4096 |
个人与生活
| 模板 | 描述 | 标签 | Temp | Max Tokens |
|---|---|---|---|---|
| personal-finance | 个人理财 Agent,负责预算追踪、支出分析、储蓄目标与财务规划。 | money、budget planning、expense analysis | 0.2 | 8192 |
| legal-assistant | 法律助手 Agent,负责合同审查、法律研究、合规检查与文件起草。 | documents、legal review、contract review | 0.2 | 8192 |
| health-tracker | 健康追踪 Agent,负责健康指标、用药提醒、健身目标与生活习惯。 | tracking、health tracking、fitness tracking | 0.3 | 4096 |
| travel-planner | 行程规划 Agent,负责行程编排、预订调研、预算估算与旅行物流。 | vacation、trip itinerary、travel plan | 0.5 | 8192 |
| home-automation | 智能家居控制 Agent,负责 IoT 设备管理、自动化规则与家居监控。 | home、smart home、home automation | 0.2 | 4096 |
| recipe-assistant | 烹饪助手,帮助处理菜谱、餐计划、食材替换和分量调整。 | food、recipe helper、meal planner | 0.5 | 4096 |
| tutor | 教学讲解 Agent,用于学习辅导和教育内容创作。 | education、teaching、tutoring、learning、explanation | 0.5 | 8192 |
系统
| 模板 | 描述 | 标签 | Temp | Max Tokens |
|---|---|---|---|---|
| assistant | 通用助手 Agent。日常任务、问答与对话的默认 Agent。 | general、assistant、default、multipurpose、conversation | 0.5 | 8192 |
| hello-world | 友好的问候 Agent,可读取文件、搜索网页、回答日常问题。 | -- | 0.6 | 4096 |
| orchestrator | 元 Agent,分解复杂任务、委派给专家 Agent 并综合结果。 | -- | 0.3 | 8192 |
理解 Temperature
temperature 参数控制 Agent 响应的确定性与创造性。模板会根据每个 Agent 的用途设置合适的值:
- 0.2 -- 精确且确定。用于对准确性要求最高的 Agent:
debugger、ops、security-auditor、devops-lead、personal-finance、legal-assistant、home-automation。 - 0.3 -- 分析型,略带灵活性。大部分工程与研究类 Agent:
coder、code-reviewer、test-engineer、architect、planner、data-scientist、academic-researcher、customer-support、translator、health-tracker、meeting-assistant、orchestrator。 - 0.4 -- 均衡的分析型。
analyst、doc-writer、email-assistant、recruiter。 - 0.5 -- 通用。
assistant、researcher、tutor、recipe-assistant、sales-assistant、travel-planner。 - 0.6 -- 对话式。
hello-world。 - 0.7 -- 创意型。
writer、social-media。
自定义模板
agents/custom/ 目录保留给你自己的 Agent 模板。按照以下清单格式创建新的 agent.toml 文件。
清单格式
# 必填字段
name = "my-agent"
version = "0.1.0"
description = "What this agent does in one sentence."
author = "your-name"
module = "builtin:chat"
# 可选元数据
tags = ["tag1", "tag2"]
# 模型配置(必填)
[model]
provider = "default" # 继承 config.toml 中的默认供应商
model = "default" # 继承 config.toml 中的默认模型
max_tokens = 4096 # 每次响应的最大输出 token 数
temperature = 0.3 # 创造性(0.0 = 确定性,1.0 = 创造性)
system_prompt = """Your agent's personality, capabilities, and instructions go here.
Be specific about what the agent should and should not do."""
# To use a specific provider instead of default, set the provider and model explicitly:
# provider = "gemini"
# model = "gemini-2.5-flash"
# api_key_env = "GEMINI_API_KEY"
# Optional fallback model (used when primary is unavailable)
# [[fallback_models]]
# provider = "groq"
# model = "llama-3.3-70b-versatile"
# api_key_env = "GROQ_API_KEY"
# 可选调度(用于自主/后台 Agent)
[schedule]
periodic = { cron = "every 5m" } # 定期执行
# continuous = { check_interval_secs = 120 } # 持续循环
# proactive = { conditions = ["event:agent_spawned"] } # 事件触发
# 资源限制
[resources]
max_llm_tokens_per_hour = 150000 # 每小时 Token 预算
# 能力授权(最小权限原则)
[capabilities]
tools = ["file_read", "file_write", "file_list", "shell_exec",
"memory_store", "memory_recall", "web_fetch",
"agent_send", "agent_list", "agent_spawn", "agent_kill"]
network = ["*"] # 网络访问模式
memory_read = ["*"] # Agent 可读取的记忆命名空间
memory_write = ["self.*"] # Agent 可写入的记忆命名空间
agent_spawn = true # 此 Agent 是否可以生成其他 Agent
agent_message = ["*"] # 可以向哪些 Agent 发送消息
shell = ["python *", "cargo *"] # 允许的 Shell 命令模式(白名单)
# 命名共享工作区(可选)。
# 多个 Agent 可以声明同一路径 — 它们共享该目录而不会产生 identity 文件冲突。
# 路径相对于 workspaces_dir。
# [workspaces]
# library = { path = "shared/library", mode = "rw" }
# archive = { path = "shared/archive", mode = "r" }
可用工具
| 工具 | 描述 |
|---|---|
file_read | 读取文件内容 |
file_write | 写入/创建文件 |
file_list | 列出目录内容 |
shell_exec | 执行 Shell 命令(受 shell 白名单限制) |
memory_store | 将键值数据持久化到记忆中 |
memory_recall | 从记忆中检索数据 |
web_fetch | 从 URL 获取内容(具有 SSRF 防护) |
agent_send | 向另一个 Agent 发送消息 |
agent_list | 列出所有运行中的 Agent |
agent_spawn | 生成一个新 Agent |
agent_kill | 终止一个运行中的 Agent |
自定义 Agent 提示
- 从最小配置开始。仅授予 Agent 实际需要的工具和能力。之后随时可以添加更多。
- 编写清晰的系统提示。系统提示是模板中最重要的部分。明确说明 Agent 的角色、方法论、输出格式和限制。
- 设置合适的 temperature。精确/分析类任务使用 0.2,均衡任务使用 0.5,创意类任务使用 0.7 及以上。
- 使用 Shell 白名单。永远不要授予
shell = ["*"]。白名单指定具体的命令模式,如shell = ["python *", "cargo test *"]。 - 设置 Token 预算。使用
max_llm_tokens_per_hour防止成本失控。从 100,000 开始,根据使用情况调整。 - 使用记忆实现连续性。授予
memory_store和memory_recall以便 Agent 可以跨会话持久化上下文。
Agent 工作区
每个 Agent 在 ~/.librefang/workspaces/agents/<name>/ 下都有一个私有 home 目录。内核在首次生成时写入 identity 文件:
workspaces/agents/librarian/
├── .identity/ ← identity 文件(由内核管理)
│ ├── SOUL.md ← 人格与使命
│ ├── IDENTITY.md ← 视觉身份(emoji、颜色、风格)
│ ├── USER.md ← 学到的用户偏好
│ ├── TOOLS.md ← 工具与环境说明
│ ├── MEMORY.md ← 长期记忆
│ ├── AGENTS.md ← 行为规范
│ └── BOOTSTRAP.md ← 首次运行协议
├── sessions/ ← 对话历史
├── memory/ ← 每日记忆日志
├── data/ ← Agent 专属数据
├── output/ ← 生成的输出文件
├── skills/ ← Agent 专属技能
└── logs/ ← Agent 日志
你可以自由编辑 .identity/ 下的任何文件 — 内核使用 create_new,永远不会覆盖你的修改。
共享工作区
使用 [workspaces] 让多个 Agent 共享一个目录,且不会发生任何碰撞。每个 Agent 保留自己的私有 home;只有声明的共享路径才被共享。
# librarian/agent.toml
[workspaces]
library = { path = "shared/library", mode = "rw" }
# researcher/agent.toml
[workspaces]
library = { path = "shared/library", mode = "r" } # 只读
内核在 spawn 时创建目录,并将解析后的绝对路径注入 TOOLS.md:
## Shared Workspaces
- @library → /home/you/.librefang/workspaces/shared/library (read-write)
访问模式:rw(读写,默认)或 r(只读)。路径相对于 workspaces_dir,不能是绝对路径或包含 ..。
外部挂载(mount)
用 mount 替代 path,可以挂载 workspaces_dir 外已经存在的目录——比如 Obsidian vault 或某个项目树:
# agent.toml
[workspaces]
vault = { mount = "/Users/me/Documents/Obsidian", mode = "r" }
约束:
mount必须是已存在的绝对路径。内核不会替 agent 创建外部目录。- 路径 canonicalize 后必须是
config.toml顶层allowed_mount_roots中某条目的前缀。白名单为空(默认)时所有mount都会被拒绝——安全的默认行为。 - 同一条声明里
path与mount互斥。
# config.toml —— 启用上面示例所需
allowed_mount_roots = [
"/Users/me/Documents",
]
只读模式(mode = "r")对挂载点的执行方式与共享 workspace 一致:写工具调用会被内核拒绝。
实时上下文(context.md)
如果 agent workspace 里有 context.md 文件,每个 agent 回合都会重新读取,并以 ## Live Context section 注入 system prompt。这让外部工具(cron 任务、脚本、dashboard)能把新数据 — 行情、项目状态、值班表 — 推给 agent,无需重启。
路径解析:优先 {workspace}/.identity/context.md;为兼容未迁移的 workspace,回退到 {workspace}/context.md。
行为:
- 每回合读一次,prompt 组装前。
- 读取上限 32 KB;超大文件截断并打 warn。
- 之前能读到、现在突然失败(比如外部进程在替换文件)时,使用上次缓存的内容,避免对话中途丢失上下文。
- 文件不存在时不添加
## Live Contextsection。
关闭实时重读:agent.toml 里设 cache_context = true 恢复 2026 年 4 月前的行为 — context.md 在 session 启动时读一次并缓存到 session 结束。
# agent.toml
cache_context = true # 默认 false(每回合重读)
懒加载 tool(tool_search / tool_load)
默认 agent 回答 "hi" 之前要把每个内置 tool 的 JSON schema 都发出去 —— ~75 个 tool × ~90 token ≈ 6,000 token 每回合白送。懒加载把它砍到大多数回合实际会用的 ~19 个 tool,长尾用两个 meta-tool 按需取:
tool_search(query)— 在 catalog(名 + 描述 + 提示)做关键字匹配。返回匹配的 tool 和它们的一行提示。tool_load(name)— 取某个 tool 的完整 schema。该 tool 从下一回合开始可调(schema 被加入到之后的请求里)。
完整 catalog 仍以"每行一个 tool 的提示"列表渲染进 system prompt,模型知道有哪些 tool 而不必为完整 schema 付费。runtime 分类为 "always native" 的 tool(file_read、shell_exec、cron tools 等)每回合都带完整 schema —— 没必要让模型 tool_load 它几乎肯定会用的东西。
如果某个模型对 tool_search 链不擅长,按 agent 关掉:
# agent.toml —— 关闭懒加载;每回合发送所有 tool schema
lazy_tools = false
生成 Agent
CLI
# 按模板名称生成
librefang spawn coder
# 使用自定义名称生成
librefang spawn coder --name "backend-coder"
# 从 TOML 文件路径生成
librefang spawn --template agents/custom/my-agent.toml
# 列出运行中的 Agent
librefang agents
# 发送消息
librefang message <agent-id> "写一个解析 TOML 文件的函数"
# 终止 Agent
librefang kill <agent-id>
REST API
# 从模板生成
POST /api/agents
{"template": "coder"}
# 生成并覆盖配置
POST /api/agents
{"template": "coder", "name": "backend-coder", "model": "deepseek-chat"}
# 发送消息
POST /api/agents/{id}/message
{"content": "实现 auth 模块"}
# WebSocket(流式)
WS /api/agents/{id}/ws
# 列出 Agent
GET /api/agents
# 删除 Agent
DELETE /api/agents/{id}
OpenAI 兼容 API
# 通过 OpenAI 兼容端点使用任意 Agent
POST /v1/chat/completions
{
"model": "librefang:coder",
"messages": [{"role": "user", "content": "用 Rust 写一个 HTTP 服务器"}],
"stream": true
}
# 列出可用模型
GET /v1/models
Orchestrator 委派
orchestrator Agent 可以通过程序方式生成并委派任务给其他 Agent:
用户:"构建一个带测试和文档的 REST API"
Orchestrator:
1. agent_send(coder, "实现 REST API 端点")
2. agent_send(test-engineer, "为这些端点编写集成测试")
3. agent_send(doc-writer, "为 API 端点撰写文档")
4. 将所有结果综合成最终报告
环境变量
所有 Agent 模板都使用 provider = "default" 和 model = "default"。Agent 实际使用的模型取决于你在 ~/.librefang/config.toml 中配置的供应商和模型。
根据要使用的供应商,设置以下一个或多个 API 密钥:
| 变量 | 供应商 |
|---|---|
GROQ_API_KEY | Groq |
GEMINI_API_KEY | Google Gemini |
OPENAI_API_KEY | OpenAI |
ANTHROPIC_API_KEY | Anthropic |
DEEPSEEK_API_KEY | DeepSeek |
在 ~/.librefang/config.toml 中配置默认供应商和模型:
[model]
provider = "groq" # 或 "gemini"、"openai"、"anthropic"、"deepseek"
model = "llama-3.3-70b-versatile" # 对应供应商的模型标识符
api_key_env = "GROQ_API_KEY" # 保存 API 密钥的环境变量
任何未显式指定 model 的 Agent,生成时都会使用这份默认配置。
Agent Manifest 字段参考
agent.toml 接受不少在标准 quick-start 模板里看不到的顶层字段。把完整集列出来,知道字段名时就能找到。除非标"必填",否则全部可选。
工具 / skill 范围
tool_allowlist = ["web_search", "web_fetch", "file_read", "file_write"]
tool_blocklist = ["shell_exec"]
tools_disabled = false # 显式总开关 —— 比所有别的设置优先
allowed_plugins = ["truncate", "redact"] # 插件名;空 = 所有可用插件
mcp_servers = ["github", "linear"] # MCP server 名;空 = 所有已连接 server
skills_disabled = false # skill 的显式总开关
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tool_allowlist | Vec<string> | [](= 所有工具) | 此 agent 能调的工具白名单。空列表 = 不限制。 |
tool_blocklist | Vec<string> | [] | 此 agent 不能调的工具。在 tool_allowlist 之后应用 —— 同时在两个列表里的会被禁。 |
tools_disabled | bool | false | 总开关 —— true 时无视 allowlist / profile,agent 没有任何工具。 |
allowed_plugins | Vec<string> | [](= 所有插件) | 此 agent 的插件白名单。 |
mcp_servers | Vec<string> | [](= 所有 server) | MCP server 白名单。某 corp server 有危险工具,只想给少数 agent 用时实用。 |
skills_disabled | bool | false | skill 总开关。 |
身份 & spawn 行为
generate_identity_files = true # 首次 spawn 时创建 SOUL.md / IDENTITY.md / TOOLS.md
inherit_parent_context = true # 子 agent 默认继承父 agent context
auto_evolve = true # 每轮后台跑 skill-evolution review
is_hand = false # 由 Hand spawn 时自动置位
pinned_model = "anthropic/claude-sonnet-4" # Stable kernel 模式下锁定模型
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
generate_identity_files | bool | true | 首次 spawn 时在 .identity/ 创建 SOUL.md / IDENTITY.md / TOOLS.md / USER.md。临时 agent 不需要进化身份时设 false。 |
inherit_parent_context | bool | true | 此 agent 作为 workflow 子 agent 跑时,继承父 agent 的会话上下文。false 给一个干净的上下文窗。 |
auto_evolve | bool | true | 每轮 agent 之后跑后台 skill-evolution review(找重复模式提议新 skill)。禁掉就让 skill 库冻结。 |
is_hand | bool | false | Hand spawn 此 agent 时自动填。不要手动设。 |
pinned_model | Option<string> | None | kernel 在 Stable 模式时,无视全局默认用此模型。Normal 模式无效。 |
Channel & exec policy 覆盖(per-agent)
[channel_overrides]
dm_policy = "always"
group_policy = "trigger_only"
group_trigger_patterns = ["(?i)\\bmy-bot\\b"]
[exec_policy]
shell_allowlist = ["git", "cargo"]
deny = ["rm -rf"]
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
[channel_overrides] | Option<ChannelOverrides> | None(继承 channel 级) | per-agent 的 dm_policy / group_policy / model / system_prompt 等覆盖。解析顺序:agent 级 → channel 级 → 内置默认。完整 schema 见 Channels。 |
[exec_policy] | Option<ExecPolicy> | None(继承 kernel 默认) | per-agent shell / exec policy 覆盖。可以是字符串简写("strict" / "trusted")或带 shell_allowlist / deny / cwd_allowlist 的完整表。 |
响应整形与增强
show_progress = true
response_format = "json_object" # 或 { type = "json_schema", schema = "..." }
web_search_augmentation = "auto" # "off" | "auto" | "always"
[[context_injection]]
name = "rules"
content = "保持简洁。永远不用 emoji。"
position = "system"
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
show_progress | bool | true | 在 channel 回复里显示工具执行进度(如"🔧 running shell_exec…")。生产/面向客户的 agent 关掉。 |
response_format | Option<ResponseFormat> | None | 约束 LLM 输出。选项:"text"、"json_object"、或 { type = "json_schema", schema = … }。Provider 必须支持结构化输出(OpenAI / Gemini / Mistral)。 |
web_search_augmentation | enum | provider 默认 | 模型本身没工具支持时,自动把 web 搜索结果注入 prompt。"off" / "auto" / "always"。 |
[[context_injection]] | Vec<ContextInjection> | [] | 每次会话开始合并进 prompt 的静态片段。每条有 name、content、position(system / before_user / after_reset)、可选 condition 表达式。 |