zkit: 提供者无关的代理工具包
摘要
zkit 是一个提供者无关的工具包,包含一系列小型、独立的 Go 包,用于构建 AI 应用程序,包括代理循环、工具系统、护栏、历史压缩以及 LLM 提供者层。
查看缓存全文
缓存时间: 2026/06/17 19:54
zarldev/zarlmono 源码:https://github.com/zarldev/zarlmono ci(https://github.com/zarldev/zarlmono/actions/workflows/ci.yml)Go 1.26(https://go.dev/)MIT 许可协议
zarlmono
zarlmono 是 zkit 的所在地——一套用于构建 AI 应用的小型独立 Go 包工具集:包括代理循环、工具系统、护栏、历史压缩、LLM 提供商层以及底层的支撑基础设施。本仓库中的工具(zarlcode、zarlai、swebench-eval)均基于它构建。
模块
go.work 整合了六个 Go 模块:
| 路径 | 模块 | 用途 |
|---|---|---|
zkit/ | github.com/zarldev/zarlmono/zkit | 工具集。 代理运行器、LLM 提供商、工具、护栏、压缩、MCP,以及基础包(缓存、文件系统、HTTP/RPC/日志、通知、同步原语)。 |
zarlcode/ | github.com/zarldev/zarlmono/zarlcode | 终端编码代理/TUI,基于 zkit 构建。 |
zarlai/ | github.com/zarldev/zarlmono/zarlai | 智能家居/多模态助手,基于 zkit 构建。因依赖 CGO/系统库,不包含在常规 CI 中。 |
swebench-eval/ | github.com/zarldev/zarlmono/swebench-eval | SWE-bench 评估驱动;通过与 zarlcode 相同的共享组装模块构建其代理。 |
examples/ | github.com/zarldev/zarlmono/examples | 小型可运行测试框架,每个独立展示一个 zkit 模式。 |
. | github.com/zarldev/zarlmono | 根模块:仓库工具和工作区协调。 |
仓库布局
zkit/ 共享库和规范约定(基础层)
zarlcode/ 编码代理 TUI 和 CLI(基于 zkit 构建)
zarlai/ 助手应用后端/前端(基于 zkit 构建)
swebench-eval/ SWE-bench 评估驱动(基于 zkit 构建)
examples/ 嵌入的测试框架和共享运行器示例(独立 Go 模块)
site/ 文档站点(Astro Starlight → GitHub Pages)
docker/ 本地服务定义,包括 SearXNG
快速开始
在自己的代码中使用 zkit
一个完整的代理由提供商、工具注册表和代理循环组成——只需这三部分,其他都可忽略。一个工具是一个双方法接口;其 JSON schema 从参数结构体反射生成,因此无需手动编写。
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/zarldev/zarlmono/zkit/agent/runner"
"github.com/zarldev/zarlmono/zkit/ai/llm/anthropic"
"github.com/zarldev/zarlmono/zkit/ai/tools"
)
type weatherArgs struct {
City string `json:"city" doc:"City to report the weather for"`
}
type weather struct{}
func (weather) Definition() tools.ToolSpec {
return tools.ToolSpec{
Name: "weather",
Description: "Report the weather for a city.",
Parameters: tools.SchemaFor[weatherArgs](), // schema 从结构体反射
}
}
func (weather) Execute(_ context.Context, call tools.ToolCall) (*tools.ToolResult, error) {
city := call.Arguments.String("city", "")
return &tools.ToolResult{Success: true, Data: city + ": sunny, 21C"}, nil
}
func main() {
prov, err := anthropic.NewProvider(os.Getenv("ANTHROPIC_API_KEY"))
if err != nil {
log.Fatal(err)
}
r := runner.New(runner.ClientFromProvider(prov),
runner.WithTools(tools.NewRegistry(weather{})),
runner.WithMaxIterations(8),
)
res := r.Run(context.Background(), runner.TaskSpec{Prompt: "What's the weather in Oslo?"})
fmt.Println(res.FinalContent)
}
将 anthropic.NewProvider 替换为 llamacpp.NewProvider(或 openai、gemini、deepseek),循环不变。以同样的方式添加护栏和压缩——作为 runner.New 的选项。详见 zkit/README.md。
zarlcode
或者直接运行基于这些组件构建的捆绑代理:
go tool task zarlcode
zarlcode init
zarlcode keys set
zarlcode
支持的 LLM 提供商包括 anthropic、openai、deepseek、gemini、llamacpp、ollama,以及 OAuth 支持的 claude-code 和 openai-codex。
常用命令:
zarlcode # 启动交互式 TUI
zarlcode -continue # 恢复上次会话
zarlcode --headless --prompt-file t.md # 不启动 TUI 运行单个任务
zarlcode keys list # 查看已存储的提供商密钥(掩码显示)
构建模块与确定性测试框架
zkit 是可复用的基础层。根 Taskfile 提供了针对运行器、确定性测试框架、编码循环、LLM 提供商和工具的集中检查:
go tool task foundation:test
go tool task examples:test
examples/ 目录包含使用这些相同模块构建的小型确定性测试框架(healthcheck、releasegate 和 hnupvote)。包层级、依赖策略以及发布/版本说明请参见 zkit/README.md。
基于 zkit 构建的应用有其各自的 README:zarlcode/README.md、zarlai/README.md、examples/README.md。
sweeval
安装 SWE-bench 评估工具:
go tool task sweeval
zarlai
zarlai 是助手应用,支持语音、视觉、工具、传感器和 React 前端。它有自己的基于任务的工作流:
go tool task zarlai:setup
go tool task zarlai:up
go tool task zarlai:build
当前服务要求和开发命令请参见 zarlai/README.md 和 zarlai/AGENTS.md。
构建与测试
执行 go test ./... 仅会覆盖当前模块。要检查 CI 通常覆盖的所有模块,请使用根 Taskfile:
go tool task check
zarlai 被有意排除在标准循环之外,因为应用的部分依赖需要本地 CGO 和系统库。
zarlcode 概览
zarlcode 是本仓库中 AI 编码代理的界面。在 TUI 之下是一个共享的确定性代理基础层:护栏检查工具调用、运行器流式输出模型结果并分派工具、压缩管理上下文压力、会话持久化到 SQLite 以便 -continue 恢复工作区。
有用的文档:
zarlcode/AGENTS.md—— TUI/配置/存储层的实现说明。- zarldev.github.io/zarlmono(https://zarldev.github.io/zarlmono)—— zkit 文档站点。
信任与安全边界
本仓库包含的工具可以执行进程、修改文件、运行浏览器支持的抓取、连接 MCP 服务器以及调用外部 LLM API。zkit 是共享基础设施,而非沙箱。每个下游应用根据其威胁模型选择合适的工具、护栏、策略和凭据。
社区
CONTRIBUTING.md—— 开发工作流、代码风格和审查期望。
相似文章
Speakeasy 推出 Kit
Speakeasy 推出 Kit,一款编程智能体运行时,将终端客户端、Agent Client Protocol 服务器、A2A 端点和子智能体编排器整合为单一静态二进制文件,旨在实现更快、更低成本的 AI 编程工作流。
livekit/agents
LiveKit Agents 是一个用于构建实时、多模态语音智能体的开源框架,这些智能体能够看、听和理解,并具备灵活的 STT/LLM/TTS 集成、任务调度、电话支持、MCP 兼容性以及内置测试框架。
@DanKornas:每当每个模型提供者、工具调用、追踪和部署路径都需要单独对接时,构建AI功能就会变得混乱。
Genkit 是一个开源框架,提供统一的模型 API、结构化工作流和多语言 SDK,以简化构建全栈 AI 应用的过程。
aws/agent-toolkit-for-aws
Agent Toolkit for AWS 帮助 AI 编码代理在 AWS 上构建、部署和管理应用程序,并为 Claude Code、Codex、Cursor 和 Kiro 提供插件。
@googledevs:让代理的上下文保持精简,同时不牺牲专业知识。了解 Genkit Go 中的 Agent Skills 如何将专业化知识打包为…
Google 的博客文章介绍了 Genkit for Go 中对 Agent Skills 的支持,展示了渐进式披露如何让代理按需加载专业知识,从而减少 token 使用量并提高可靠性。