开发框架
clj-agent · Clojure 的 AI Agent 框架
clj-agent 是用 Clojure 开发的 Agentic AI 工具集:用 deftool 宏声明工具并自动生成给模型的参数描述,ChatClient 统一工具分发,around 式 Filter 中间件处理横切逻辑。
分为 core(协议与 ChatClient 原语,零外部依赖)、client(Agent 运行时:ReAct 循环、记忆、暂停 / 恢复)与 provider(各厂商适配)三个模块,跑在 JVM 上,可以直接嵌进 Ring / Luminus 应用。
从简单对话到工具调用的完整方案
(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,可用于商业项目。