基于 GLM-5.1 · 零 Agent 框架依赖

你的终端里 住着一位全栈 AI 工程师

CodingCLI 是一款从底层手写的命令行智能编程助手。ReAct 智能体、多 Agent 协作、 代码语义检索、分层记忆、MCP 协议扩展——全部独立实现,拒绝黑盒框架。

CodingCLI — 智能编程助手
$ java -jar cli.jar
[启动] 正在连接 MCP 服务器...
[McpManager] 服务器 'filesystem' 注册了 5 个工具
[McpManager] 初始化完成,共 1 个服务器,5 个 MCP 工具
 
>

不止是问答,是真正的 AI 工程师

七大核心模块独立实现,零依赖第三方 Agent 框架,每一行代码都清晰可控

ReAct 智能体 + 流式输出
完整的推理→工具调用→结果回填→再推理循环,最多 10 轮迭代。最终回复走 SSE 流式,逐 token 实时打印,彻底消除等待感。4 线程池并发执行多工具调用,内置签名指纹防死循环。
SSE 流式 并发工具执行
🤖
多 Agent 六阶段协作
PLANNER 拆解任务 → Kahn 算法 DAG 拓扑排序 → WORKER×3 批次并行执行 → REVIEWER 质量审查(APPROVED/FEEDBACK/REJECTED)→ 最多 2 次携带反馈重试 → 汇总报告。
DAG 拓扑排序 质量审查
🗂
Plan-and-Execute 规划执行
LLM 将复杂目标拆解为含类型标注和依赖关系的结构化 JSON 子任务图,按拓扑顺序逐步执行,每个子任务独立运行 ReAct 循环,最终输出完整执行报告。
DFS 拓扑排序 子任务独立执行
🧠
分层记忆 + Map-Reduce 压缩
短期记忆(20 万 Token,LRU 淘汰)+ 长期记忆(JSON 持久化)双轨架构。使用率超 80% 时触发 Map-Reduce 压缩:CompletableFuture 并发分片摘要,再汇聚为 200 字全局摘要落盘。
Map-Reduce 持久化记忆
🔍
代码语义 RAG 检索
JavaParser AST 三粒度分块(文件/类/方法),GLM embedding-3 生成 768 维向量存 SQLite。混合检索:余弦语义相似度 + 结巴分词关键词检索,双重命中加权精排,同步构建代码关系图谱。
768 维向量 关系图谱
🔌
MCP 协议接入(纯原生 Java)
零额外 Maven 依赖实现完整 MCP 客户端。stdio 模式:子进程 + CompletableFuture 异步分发;HTTP 模式:JDK 原生 HttpURLConnection。MCP 工具与本地工具统一路由,模型调用时完全透明。
stdio / HTTP JSON-RPC 2.0
🛡
人工审批介入(HITL)
工具声明危险等级(SAFE/HIGH)。高危操作前终端弹出彩色确认框,阻塞等待 y/n 输入。拒绝时返回字符串而非抛出异常——让模型感知拒绝结果并自主调整策略,对话不中断。
DangerLevel.HIGH AUTO_APPROVE

三步跑起来

JRE 17+ 即可运行,无需安装其他依赖

1

📥 下载 JAR 并准备目录

# 创建工作目录
mkdir coding-cli && cd coding-cli

# 把下载的 cli.jar 放进来
ls
cli.jar

需要 JRE 17+,可通过 java -version 确认

2

⚙️ 创建 .env 配置文件

# 在 cli.jar 同一目录下创建 .env
touch .env

# 填入以下内容
GLM_KEY=你的智谱API密钥

# 可选:高危工具自动审批开关
# true=自动批准(开发环境) false=手动确认(默认)
AUTO_APPROVE=false

GLM API Key 在 open.bigmodel.cn 注册后获取

3

🚀 启动!

# 在包含 .env 和 cli.jar 的目录下运行
java -jar cli.jar

# 看到如下输出则表示成功
[启动] 正在连接 MCP 服务器...
[McpManager] 未发现任何 MCP 服务器配置

> 你好,帮我分析一下这个项目的结构
[GLM]: 好的,我来帮您分析...▌
4

📂 完整目录结构

coding-cli/
├── cli.jar          # 主程序
├── .env             # 必需:API 密钥配置
├── mcp.json         # 可选:MCP 服务器配置
├── history.txt      # 自动生成:命令历史
└── memory/
    └── long_term_memory.json  # 自动生成:长期记忆

⚙️ .env 配置项说明

配置项 必填 默认值 说明
GLM_KEY 必填 智谱 AI 开放平台 API Key,用于调用 GLM-5.1 和 embedding-3 模型
AUTO_APPROVE 可选 false true = 自动批准所有高危工具(write_file / execute_command),适合开发环境;false = 每次弹出确认框

七种工作模式,一个终端搞定

无需记复杂语法,输入 /help 随时查看帮助

直接输入
Agent 对话
带长期记忆的 ReAct 对话,支持工具调用与流式输出。每轮对话自动归档至记忆系统。
/plan <目标>
规划执行
LLM 将目标拆解为 JSON 子任务图,按拓扑顺序逐步执行,输出带状态的格式化报告。
/team <任务>
多 Agent
PLANNER → WORKER×3 → REVIEWER 六阶段流水线,带质量审查与自动重试。
/index
RAG 索引
扫描当前目录代码库,AST 分块后生成向量存入 SQLite,同步构建代码关系图谱。
/get <查询>
语义检索
混合检索(语义向量 + 关键词)精准定位最相关的代码块,返回文件路径和代码片段。
/sy  /ly
记忆查看
/sy 查看短期工作内存(当前轮次热数据);/ly 查看长期持久化记忆(历史摘要)。
/mcp
MCP 状态
查看当前已连接的 MCP 服务器列表及每个服务器注册的工具(含 mcp_ 前缀名称)。
/exit
退出
优雅退出:关闭线程池、断开所有 MCP 连接、刷新长期记忆后安全退出。

接入任意 MCP 服务器,能力无限扩展

纯原生 Java 实现 JSON-RPC 2.0,零额外 Maven 依赖,支持 stdio 子进程与 HTTP 两种传输模式

配置方式

cli.jar 同目录下创建 mcp.json,启动时自动加载并注册所有工具。

MCP 工具以 mcp_<服务器名>_<工具名> 格式注册到工具表,模型可直接调用,与内置工具完全透明互通。

stdio 模式本地子进程,CompletableFuture 异步分发,30s 超时保护
HTTP 模式远端服务,JDK HttpURLConnection,连接 10s / 读取 30s

mcp.json 示例

{
  "mcpServers": {
    // stdio 模式:启动本地子进程
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
      "disabled": false
    },

    // HTTP 模式:连接远端 MCP 服务
    "my-api": {
      "url": "http://localhost:9000/mcp",
      "disabled": false
    },

    // 携带环境变量
    "my-tool": {
      "command": "python",
      "args": ["server.py"],
      "env": { "API_KEY": "xxx" }
    }
  }
}

工作目录 mcp.json中加载的同名服务器覆盖先加载的

接入 filesystem MCP 后,AI 自动获得文件系统能力

MCP 工具调用演示
> 帮我列出 /tmp 目录下的文件
[worker-1/执行者] 调用工具: mcp_filesystem_list_directory
参数: {"path":"/tmp"}
[mcp_filesystem_list_directory 结果]
- file1.txt (1.2KB)
- backup.tar.gz (45MB)
- script.sh (320B)
[GLM]: /tmp 目录下共有 3 个文件:file1.txt、backup.tar.gz 和 script.sh...

AI 操作有边界,危险操作必须你说了算

执行写文件、运行命令等高危操作前,系统强制等待你的确认,AI 感知拒绝后自主调整策略

当 AI 尝试执行 write_fileexecute_command 时:
╔══════════════════════════════════════════════════════╗
║  ⚠️  高危操作确认                                    ║
╠══════════════════════════════════════════════════════╣
║  工具名称: write_file                                ║
║  危险等级: HIGH — 此操作可能不可逆                   ║
║  操作参数:                                           ║
║    {"path":"src/Main.java","content":"..."}          ║
╚══════════════════════════════════════════════════════╝
 是否允许执行此操作?[y/n] > 

# 输入 y → ✅ 已批准,继续执行
# 输入 n → ❌ 操作已取消,AI 自动调整后续策略
# AUTO_APPROVE=true → 自动放行,不弹确认框

精选工具,零黑盒依赖

每一个组件都有明确的职责,没有"魔法",没有框架锁定

Java 17
Spring Boot 4
GLM-5.1
embedding-3(768 维)
OkHttp 4(SSE 流式)
Jackson Databind
JavaParser AST
SQLite(本地向量存储)
jtokkit O200K_BASE
JLine 3(终端交互)
Jieba 中文分词
MCP JSON-RPC 2.0
Logback(精细日志控制)

立即体验
你的 AI 编程搭档

下载 JAR,配置 GLM Key,三分钟内启动你的智能编程助手。JRE 17+ 即可运行,无需安装任何其他依赖。

⬇ 下载 cli.jar 📖 查看安装指南
7
核心功能模块
89
源代码文件
0
Agent 框架依赖
200k
Token 记忆窗口