Skip to content

youkale/clj-mono

Repository files navigation

clj-mono

clj-mono 是一个使用 Clojure 编写的 AI 编程代理 (AI Coding Agent),深度复刻并重新构思了 pi-monoclaude-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

配置 API 密钥

在交互之前,你需要设置对应 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。

About

No description, website, or topics provided.

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors