clj-mono 是一个使用 Clojure 编写的 AI 编程代理 (AI Coding Agent),深度复刻并重新构思了 pi-mono 与 claude-code 的核心体验。它旨在为开发者提供一个直接在终端运行的、具备高度自主能力的编程助手。
- 数据驱动设计:基于 Clojure 的不可变数据结构构建,逻辑清晰、易于扩展。
- 统一事件总线 (Event-Bus):采用解耦的同步事件系统,支持拦截器 (Guard) 和通知器 (Notifier),可插拔式实现权限控制、文件备份等扩展。
- 动态 TUI 交互:集成了 JLine 和终端渲染技术,提供带自动补全、语法高亮和 Markdown 实时渲染的沉浸式命令行体验。
- 多模型支持引擎:内置 Anthropic, OpenAI, Google 等主流 Provider,支持通过环境变量或配置实时切换。
- 强大的工具集:
- 代码操作:Read/Write/Edit (Diff-based), Glob, Grep, Find
- 系统操作:Bash 终端执行、文件管理
- 逻辑编排:Plan Mode(计划模式)、Todo 任务序列、Follow-up 追问
- 可扩展性 (Extensions & Skills):支持自定义插件扩展 Agent 能力,并可通过 Slash Commands (
/) 快速触发。
src/mono/
├── agent/ # 核心逻辑:工具调用、原子上下文管理、Event-Bus
│ ├── extensions/ # 插件生态:权限验证 (Permission)、备份 (File Backup)
│ └── tools/ # 原子工具库 (Bash, Edit, Read, Glob, Grep, etc.)
├── ai/ # AI 抽象层:协议定义、多 Provider 实现、Token 计数
├── chat/ # 编排层:CLI 入口、Orchestrator、交互逻辑、UI渲染
├── claw/ # 低级 Agent 原语:无 UI 的纯逻辑 Agent
├── tui/ # UI 渲染:Markdown 模块、Autocomplete、终端输出
├── app.clj # 应用入口
└── config.clj # 全局配置管理
- JDK 11+
- Leiningen
git clone https://github.com/sean/clj-mono.git
cd clj-mono在交互之前,你需要设置对应 Provider 的环境变量:
export ANTHROPIC_API_KEY="your-key"
export OPENAI_API_KEY="your-key"
export GOOGLE_API_KEY="your-key"# 进入交互模式
lein run
# 执行单次任务
lein run "帮我分析 src/mono/agent/core.clj 的事件触发逻辑"在交互模式下,你可以使用以下斜杠命令:
/model- 快速切换当前使用的 AI 模型/settings- 查看和修改全局配置/skills- 列出并调用已加载的高级技能/clear- 清空历史上下文
- REPL 驱动开发:遵循
CLAUDE.md规范,所有核心逻辑均经过联机调试验证。 - 安全优先:通过 Event-Bus Guard 机制,所有高风险操作(如 Bash 命令、文件写入)均可进行二次确认保护。
- 极简主义:不依赖沉重的框架,利用 Clojure 的强大表现力实现复杂的 Agent 状态机。
如果您在使用过程中发现任何问题或有改进建议,欢迎提交 Issue。
Copyright © 2026 - 本项目采用 Eclipse Public License 2.0。