zkit: 提供者无关的代理工具包

Lobsters Hottest 工具

摘要

zkit 是一个提供者无关的工具包,包含一系列小型、独立的 Go 包,用于构建 AI 应用程序,包括代理循环、工具系统、护栏、历史压缩以及 LLM 提供者层。

<p><a href="https://lobste.rs/s/hrcvuv/zkit_provider_agnostic_agent_toolkit">评论</a></p>
查看原文
查看缓存全文

缓存时间: 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-evalSWE-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 是共享基础设施,而非沙箱。每个下游应用根据其威胁模型选择合适的工具、护栏、策略和凭据。

社区

相似文章

Speakeasy 推出 Kit

Product Hunt

Speakeasy 推出 Kit,一款编程智能体运行时,将终端客户端、Agent Client Protocol 服务器、A2A 端点和子智能体编排器整合为单一静态二进制文件,旨在实现更快、更低成本的 AI 编程工作流。

livekit/agents

GitHub Trending (daily)

LiveKit Agents 是一个用于构建实时、多模态语音智能体的开源框架,这些智能体能够看、听和理解,并具备灵活的 STT/LLM/TTS 集成、任务调度、电话支持、MCP 兼容性以及内置测试框架。

aws/agent-toolkit-for-aws

GitHub Trending (daily)

Agent Toolkit for AWS 帮助 AI 编码代理在 AWS 上构建、部署和管理应用程序,并为 Claude Code、Codex、Cursor 和 Kiro 提供插件。