本地优先的 AI Agent 工具包,支持 Node.js 和浏览器,提供可组合的 Agent、Task 及语义记忆模块,兼容 Ollama/Llama.cpp 等本地推理后端,强调显式控制与声明式定义。
核心特点#
Agent Smith 是一个强调本地优先和显式控制的 Agent 开发框架。不同于高度抽象的 Agent 框架,它允许开发者直接控制推理参数和工具定义。
核心能力#
- Think (思考): 连接语言模型服务器执行推理查询
- Work (工作): 使用工具管理具有多任务的长时间运行工作流
- Remember (记忆): 集成语义记忆存储,支持数据持久化与检索
- Interact (交互): 支持与用户进行交互式对话
设计哲学#
- Composable (可组合): 包责任有限,可独立使用也可协同工作
- Declarative (声明式): 关注业务逻辑表达,而非底层控制流
- Explicit (显式): 无隐藏魔法,行为在用户控制之下
核心包结构#
| 包名 | 描述 | Node.js | Browser |
|---|---|---|---|
| @agent-smith/cli | 终端客户端 | ✅ | ❌ |
| @agent-smith/agent | Agent核心实现 | ✅ | ✅ |
| @agent-smith/task | 任务定义与执行 | ✅ | ✅ |
| @agent-smith/smem | 语义记忆 | ✅ | ❌ |
| @agent-smith/tfm | 提示词模板 | ✅ | ✅ |
| @agent-smith/apicli | API客户端 | ✅ | ✅ |
| @agent-smith/wscli | WebSocket客户端 | ✅ | ✅ |
适用场景#
- CLI 工具开发: 内置 Git、Vision 等插件,适合构建开发者提效工具
- 本地 AI 应用: 在完全离线或隐私敏感场景下构建具备记忆能力的 AI 助手
- 全栈 Agent: 统一的前后端 Agent 定义,支持浏览器端直接调用或 Node 后端运行
CLI 工具能力#
- 简单推理查询:
lm q "your question" - 视觉/多模态:
lm vision img1.jpg img2.jpg "Compare images" - Git 辅助:
lm commit(自动生成 commit message) - 插件系统: 支持 Inference, Vision, Code, Git, Filesystem 等插件
代码示例#
import { Agent } from "@agent-smith/agent";
import { Lm } from "@locallm/api";
const lm = new Lm({
providerType: "openai",
serverUrl: "http://localhost:8080/v1",
apiKey: "",
onToken: (t) => process.stdout.write(t),
});
const agent = new Agent(lm);
await agent.run("List the planets",
{ temperature: 0.5, max_tokens: 4096, model: { name: "qwen4b" } },
{ verbose: true, system: "You are a helpful assistant" }
);
依赖生态#
- Locallm: 用于统一调用本地模型 API
- Modprompt: Prompt 模板管理
- Echo: 基于 Go 语言的服务器后端