开发框架

clj-agent · Clojure 的 AI Agent 框架

clj-agent 是用 Clojure 开发的 Agentic AI 工具集:用 deftool 宏声明工具并自动生成给模型的参数描述,ChatClient 统一工具分发,around 式 Filter 中间件处理横切逻辑。

分为 core(协议与 ChatClient 原语,零外部依赖)、client(Agent 运行时:ReAct 循环、记忆、暂停 / 恢复)与 provider(各厂商适配)三个模块,跑在 JVM 上,可以直接嵌进 Ring / Luminus 应用。

从简单对话到工具调用的完整方案

Clojure:声明工具并创建 Agent
(require '[im.ttalk.agent.simple-agent :as sa]
         '[im.ttalk.agent.tool :refer [deftool]]
         '[im.ttalk.agent.provider.factory.builder :as factory])

(deftool get-weather "获取天气信息" [[city :string "城市名称"]]
  (str city ": 晴天 25°C"))

(def provider (factory/create-provider-from-env :openai))
(def agent (sa/create-agent {:provider provider :model "gpt-4"
                             :tools [#'get-weather]}))
(println (:text (sa/chat agent "北京天气怎么样?")))

功能

能做什么

  • deftool

    一个宏声明工具:名称、说明、带类型与说明的参数,自动生成给模型的工具描述。

  • ChatClient 与 Filter

    统一的工具分发与编排,around 式 Filter 中间件;五类钩子::chat、:tool、:iteration、:turn、:token-xform。

  • SimpleAgent

    同步、有状态的多轮对话;调用敏感工具前可以暂停,等人工审批后恢复。

  • 对齐 Spring AI 2.0

    ToolSearch(工具按需逐步披露)、RAG 注入、结构化输出校验。

  • 多模态与嵌入

    图片、PDF、音频作为消息内容;独立的 IEmbeddingProvider 协议,覆盖多家嵌入服务。

  • 异步

    基于 CompletableFuture 的异步处理,配合虚拟线程,适合 Ring / Luminus 服务端。

规格

技术规格

运行环境JVM,Clojure 1.11.4+;babashka 与 tools.build 构建
组成clj-agent-core(零外部依赖)、clj-agent-client(Agent 运行时)、clj-agent-provider(厂商适配)
模型厂商OpenAI、Anthropic、DeepSeek、智谱、Ollama、Gemini、Mistral、MiniMax、DashScope、xAI、Moonshot、OpenRouter、SiliconFlow,以及 OpenAI 兼容协议
坐标im.ttalk/clj-agent(git 依赖,tag v0.3.0)
许可Apache License 2.0

常见问题

你可能想问

怎么加入依赖?

在 deps.edn 里以 git 依赖引入:{im.ttalk/clj-agent {:git/url "https://github.com/TTalkPro/clj-agent" :git/tag "v0.3.0"}}。

和 BeamAI 是什么关系?

两者是同一套 Agent 思路在不同平台上的实现:clj-agent 面向 JVM / Clojure,BeamAI 面向 Erlang/OTP,都以 ChatClient、工具与 Filter 为核心。

许可协议是什么?

Apache License 2.0,可用于商业项目。

开源

Apache 2.0 协议开源

引擎、测试、基准与设计文档都在仓库里,欢迎读、改、提 issue。

相关框架

BeamAI · Erlang/OTP 的 AI Agent 框架

在 Erlang/OTP 上构建 AI Agent:六家厂商统一的 LLM 客户端、ChatClient 与工具调用、洋葱式 Filter、带会话记忆的 ReAct Agent。