matrixcode 0.2.5

A smart code agent CLI with multi-model support, context compression, and task planning
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
# MatrixCode

一个基于 Rust 开发的智能代码代理 CLI 工具,支持多模型配置、自动上下文压缩、任务规划和会话管理。

## 功能特性

- 🤖 **多模型配置**: 支持 main/plan/compress/fast 四种模型角色
- 🧠 **跨会话记忆**: 自动记住偏好、决策、发现,下次对话自动加载
- 🗜️ **智能压缩**: 自动检测并压缩超出阈值的上下文
- 📋 **任务规划**: 使用规划模型分解复杂任务
- 💾 **会话管理**: 支持多会话保存、恢复和命名
- 📁 **文件操作**: 读写、编辑、搜索文件
- 🔧 **工具系统**: 可扩展的工具和技能支持
- 🌐 **Web 搜索**: 内置网页搜索能力
- 💻 **跨平台**: Linux、macOS、Windows

## 安装

### 通过 npm 安装(推荐)

```bash
npm install -g matrixcode
```

安装脚本会自动检测并尝试以下方式:
1. 如果已安装 Rust,使用 `cargo install matrixcode`
2. 从 GitHub Releases 下载预编译二进制

### 通过 Cargo 安装

如果你已安装 Rust 工具链:

```bash
cargo install matrixcode
```

### 从 Release 下载

从 [GitHub Releases](https://github.com/bigfish1913/matrixcode/releases) 下载对应平台的预编译二进制文件。

支持的平台:
- macOS (x64, arm64/Apple Silicon)
- Linux (x64, arm64)
- Windows (x64)

### 从源码构建

```bash
git clone https://github.com/bigfish1913/matrixcode.git
cd matrixcode
cargo build --release
```

构建完成后,二进制文件位于 `target/release/matrixcode`。

## 快速开始

### 基本使用

```bash
# 交互模式(进入 REPL)
matrixcode

# 单次问答
matrixcode "帮我分析这个项目的结构"

# 继续上次会话
matrixcode -c

# 恢复指定会话
matrixcode --resume session-abc

# 生成项目概览
matrixcode --init

# 指定模型
matrixcode --provider anthropic --model claude-sonnet-4-20250514
```

### 多模型模式

```bash
# 启用多模型(所有角色默认使用主模型)
matrixcode --multi-model

# 指定不同的模型
matrixcode --multi-model \
  --plan-model claude-sonnet-4-20250514 \
  --compress-model claude-3-5-haiku-20241022 \
  --fast-model claude-3-5-haiku-20241022

# 只指定压缩模型(其他使用主模型)
matrixcode --compress-model claude-3-5-haiku-20241022
```

## REPL 命令

在交互模式中,支持以下命令:

| 命令 | 说明 |
|------|------|
| `/help` | 显示帮助信息 |
| `/memory` | 显示所有累积的记忆 |
| `/memory add <内容>` | 手动添加记忆 |
| `/memory search <关键词>` | 搜索记忆 |
| `/memory stats` | 显示记忆统计 |
| `/memory clear` | 清除所有记忆 |
| `/status` | 显示会话状态(消息数、token 使用) |
| `/history` | 显示对话历史摘要 |
| `/sessions` | 列出所有保存的会话 |
| `/resume` | 交互式选择会话恢复 |
| `/resume <id>` | 恢复指定会话 |
| `/rename <name>` | 为当前会话命名 |
| `/plan` | 显示或生成任务计划 |
| `/plan <task>` | 为指定任务生成计划 |
| `/models` | 显示当前模型配置 |
| `/compress` | 手动压缩上下文 |
| `/compress <bias>` | 指定偏重压缩 |
| `/clear` | 清空上下文,开始新会话 |
| `/init` | 生成/更新项目概览 |
| `/overview` | 显示项目概览状态 |
| `/exit` | 退出 REPL |

### 压缩偏重选项

```
/compress              # 默认 balanced 偏重
/compress balanced     # 平衡保留(工具、用户问题)
/compress important    # 保留工具、思考、决策关键词
/compress tools        # 侧重保留工具操作
/compress aggressive   # 激进压缩(删除更多)
/compress preserve:tools,thinking keywords:决定,重要  # 自定义
```

## 🧠 跨会话记忆系统

MatrixCode 会自动记住你说过的重要信息,下次对话时自动加载相关记忆。

### 记忆类型

| 类型 | 说明 | 示例 |
|------|------|------|
| 🎯 **决策** | 项目或技术选型决定 | "决定使用 PostgreSQL 作为主数据库" |
| 👤 **偏好** | 用户习惯或偏好 | "偏好使用 vim 编辑器" |
| 💡 **发现** | 重要发现或信息 | "API 端点位于 /api/v2" |
| 🔧 **解决方案** | 解决问题的方法 | "通过添加 middleware 修复认证问题" |
| 📚 **技术** | 技术栈信息 | "使用 React Query 做数据获取" |
| 🏗️ **结构** | 项目结构信息 | "入口文件是 src/index.ts" |

### 记忆演示

```bash
# 第一次对话
> 我决定使用 PostgreSQL 作为这个项目的数据库
[saved 1 new memories]

# 关闭终端,第二天继续...
> 继续设计数据库 schema
[loaded 15 accumulated memories]
# AI 自动记得你选择了 PostgreSQL,不会再问用什么数据库

# 改变决定
> 改用 MySQL,PostgreSQL 太重了
[saved 1 new memories]
# AI 自动更新记忆,不再提 PostgreSQL
```

### 记忆管理

```bash
/memory                 # 显示所有记忆
/memory search postgres # 搜索包含 postgres 的记忆
/memory add 我喜欢用 TypeScript  # 手动添加记忆
/memory stats           # 显示统计信息
/memory export          # 导出记忆到 JSON
/memory import file.json # 从文件导入记忆
```

### 记忆存储位置

- **全局记忆**: `~/.matrix/memory.json`(跨项目共享)
- **项目记忆**: `.matrix/memory.json`(项目特定)

---

## 环境变量配置

复制 `.env.example` 为 `.env`:

```bash
cp .env.example .env
```

### 基础配置

```env
# Provider 设置
PROVIDER=anthropic
API_KEY=sk-ant-your-key-here
MODEL_NAME=claude-sonnet-4-20250514
BASE_URL=                             # 可选,自定义 API 端点
```

### 多模型配置

```env
# 启用多模型模式
MULTI_MODEL=true

# 规划模型(默认使用 MODEL_NAME)
PLAN_MODEL=claude-sonnet-4-20250514

# 压缩模型(推荐使用小模型)
COMPRESS_MODEL=claude-3-5-haiku-20241022

# 快速模型
FAST_MODEL=claude-3-5-haiku-20241022
```

### 压缩配置

```env
# 压缩阈值(0.0-1.0)
COMPRESSION_THRESHOLD=0.75

# 最少保留消息数
MIN_PRESERVE_MESSAGES=6

# 手动指定上下文窗口大小
CONTEXT_SIZE=

# 禁用自动压缩
NO_COMPRESSION=false
```

### 输出配置

```env
# 启用扩展思考
THINK=true

# 最大输出 tokens
MAX_TOKENS=16384

# Markdown 渲染
MARKDOWN=true
```

### 其他配置

```env
# Prompt profile: default, safe, fast, review
PROMPT_PROFILE=default

# 禁用网页搜索
NO_WEB_SEARCH=false

# 每轮最大搜索次数
WEB_SEARCH_MAX_USES=5

# 禁用提示词缓存
NO_CACHING=false
```

## CLI 参数

| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-p, --provider` | 模型提供商 | `anthropic` |
| `-m, --model` | 主模型名称 | `claude-sonnet-4-20250514` |
| `--think` | 启用扩展思考 | `true` |
| `--max-tokens` | 最大输出 tokens | `16384` |
| `--markdown` | Markdown 渲染 | `true` |
| `-c, --continue` | 继续上次会话 | - |
| `--resume <id>` | 恢复指定会话 | - |
| `--list-sessions` | 列出所有会话 | - |
| `--multi-model` | 启用多模型 | `false` |
| `--plan-model` | 规划模型 | 使用主模型 |
| `--compress-model` | 压缩模型 | 使用主模型 |
| `--fast-model` | 快速模型 | 使用主模型 |
| `--compression-threshold` | 压缩阈值 | `0.75` |
| `--no-compression` | 禁用压缩 | `false` |
| `--profile` | Prompt profile | `default` |
| `--no-web-search` | 禁用网页搜索 | `false` |
| `--init` | 生成项目概览 | - |
| `--no-overview` | 禁用项目概览 | `false` |

## 模型角色说明

| 角色 | 用途 | 推荐模型 | 特点 |
|------|------|---------|------|
| **Main** | 任务执行、代码生成 | claude-sonnet-4 | 大上下文、强推理 |
| **Plan** | 任务规划、步骤分解 | claude-sonnet-4 | 理解能力强 |
| **Compress** | 上下文压缩、摘要生成 | claude-3-5-haiku | 小模型、成本低 |
| **Fast** | 快速分类、简单判断 | claude-3-5-haiku | 响应快、成本低 |

## 示例配置

### 单模型模式(默认)

```env
PROVIDER=anthropic
MODEL_NAME=claude-sonnet-4-20250514
```

所有任务都使用同一个模型。

### 多模型 - 全部使用主模型

```env
PROVIDER=anthropic
MODEL_NAME=claude-sonnet-4-20250514
MULTI_MODEL=true
```

启用多模型功能,但所有角色都使用 `MODEL_NAME`,适合简化管理。

### 多模型 - 分工协作

```env
PROVIDER=anthropic
MODEL_NAME=claude-sonnet-4-20250514
MULTI_MODEL=true
PLAN_MODEL=claude-sonnet-4-20250514
COMPRESS_MODEL=claude-3-5-haiku-20241022
FAST_MODEL=claude-3-5-haiku-20241022
```

- 主任务和规划使用大模型
- 压缩和快速操作使用小模型,节省成本

### OpenAI 配置

```env
PROVIDER=openai
MODEL_NAME=gpt-4o
MULTI_MODEL=true
COMPRESS_MODEL=gpt-4o-mini
```

### 国内代理配置

```env
PROVIDER=anthropic
API_KEY=sk-your-key
BASE_URL=https://your-proxy.com
MODEL_NAME=claude-sonnet-4-20250514
MULTI_MODEL=true
COMPRESS_MODEL=claude-3-5-haiku-20241022
```

## 开发

```bash
# 运行测试
cargo test

# 代码检查
cargo clippy

# 格式化
cargo fmt

# 构建 release
cargo build --release
```

## 发布

### 发布到 crates.io

```bash
# 登录 crates.io(首次)
cargo login

# 发布
cargo publish
```

发布后,用户可以通过 `cargo install matrixcode` 安装。

### 发布到 npm

```bash
cd npm
npm login
npm publish
```

发布后,用户可以通过 `npm install -g matrixcode` 安装。

### 发布 GitHub Release

1. 更新版本号(Cargo.toml 和 npm/package.json)
2. 创建 Git tag:
   ```bash
   git tag v0.1.0
   git push origin v0.1.0
   ```
3. GitHub Actions 会自动构建并发布预编译二进制

## 项目结构

```
matrixcode/
├── src/
│   ├── agent.rs       # Agent 核心实现
│   ├── models.rs      # 多模型配置和任务规划
│   ├── compress.rs    # 上下文压缩逻辑
│   ├── session.rs     # 会话管理
│   ├── providers/     # LLM Provider 实现
│   ├── tools/         # 工具系统
│   ├── skills.rs      # 技能系统
│   ├── prompt.rs      # 系统提示词
│   └── ...
├── skills/            # 自定义技能目录
├── .env.example       # 配置模板
└── Cargo.toml
```

## 许可证

MIT License