快速开始
安装
# 克隆项目
git clone <repository-url>
cd matrixcode
# 编译
cargo build --release
# 安装到系统
cargo install --path packages/cli
配置 API Key
MatrixCode 支持多种配置方式:
方式一:配置文件
{
"provider": "anthropic",
"api_key": "your-api-key-here",
"model": "claude-sonnet-4-20250514",
"base_url": "https://api.anthropic.com",
"think": true,
"max_tokens": 16384,
"approve_mode": "ask"
}
方式二:环境变量
# 通用变量(推荐)
export API_KEY="your-key"
export MODEL="claude-sonnet-4"
export PROVIDER="anthropic"
# 提供商特定变量
export ANTHROPIC_AUTH_TOKEN="your-key" # Anthropic专用
export OPENAI_API_KEY="your-key" # OpenAI专用
运行
# 启动交互式会话
matrixcode
# 恢复上次会话
matrixcode --continue
# 选择会话恢复
matrixcode --resume
# 查看会话列表
matrixcode --list-sessions
# TUI 模式
matrixcode-tui
# 带 MCP 启动
matrixcode-tui --mcp "playwright:npx -y @playwright/mcp@latest"
配置说明
配置字段详解
| 字段 | 类型 | 说明 | 默认值 |
|---|---|---|---|
provider |
string | API 提供商: "anthropic" 或 "openai" | 自动推断 |
api_key |
string | API 密钥(必填) | 无 |
model |
string | 模型名称 | claude-sonnet-4-20250514 |
base_url |
string | API 端点 URL | https://api.anthropic.com |
think |
bool | 启用扩展思考(Extended Thinking) | true |
markdown |
bool | 启用 Markdown 渲染 | true |
max_tokens |
int | 最大输出 token 数 | 16384 |
approve_mode |
string | 工具审批模式 | "ask" |
multi_model |
bool | 启用多模型配置 | false |
extra_headers |
object | 额外 HTTP 请求头 | {} |
支持的模型
Anthropic Claude 系列
| 模型名称 | 特点 | 推荐场景 |
|---|---|---|
claude-sonnet-4-20250514 |
快速、平衡、性价比高 | 日常开发、代码重构(推荐) |
claude-opus-4 |
最强推理能力 | 复杂架构设计、难题解决 |
claude-3-5-sonnet |
经典稳定版本 | 稳定生产环境 |
OpenAI GPT 系列
| 模型名称 | 特点 | 推荐场景 |
|---|---|---|
gpt-4o |
多模态、速度快 | 通用开发(推荐) |
gpt-4-turbo |
强大推理 | 复杂任务 |
o1 |
深度推理 | 数学、算法问题 |
审批模式详解
approve_mode 选项:
工具文档
MatrixCode 内置 20+ 专业工具,覆盖开发全流程。工具按安全级别分类:
| 工具名称 | 功能 | 安全级别 |
|---|---|---|
| read | 读取文件内容 | 安全 |
| write | 写入/创建文件 | 需审批 |
| edit | 精确字符串替换 | 需审批 |
| multi_edit | 批量编辑多处位置 | 需审批 |
| ls | 列出目录内容 | 安全 |
| glob | 按模式查找文件 | 安全 |
| grep | 搜索文本内容 | 安全 |
| search | 搜索文件内容 | 安全 |
| bash | 执行 shell 命令 | 需审批 |
| code_search | 搜索代码符号(快10-100倍) | 安全 |
| code_callers | 查找函数调用者 | 安全 |
| code_callees | 查找函数被调用 | 安全 |
| websearch | 网络搜索 | 安全 |
| webfetch | 获取网页内容 | 安全 |
| ask | 向用户提问 | 安全 |
| task | 创建后台任务 | 安全 |
| monitor | 监控进程/文件 | 安全 |
| todo_write | 待办列表管理 | 安全 |
文件操作工具
read
功能
读取指定路径的文件内容。支持偏移量和行数限制,适合读取大文件的部分内容。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
path |
string | 是 | 要读取的文件路径 |
offset |
int | 否 | 起始行号(从0开始),默认0 |
limit |
int | 否 | 最大读取行数,默认全部 |
使用示例
# 读取完整文件
read(path: "src/main.rs")
# 读取前50行
read(path: "src/main.rs", limit: 50)
# 从第100行开始读取
read(path: "src/main.rs", offset: 100, limit: 50)
write
功能
写入文件内容。若文件不存在则创建,若存在则覆盖。单次写入最大 10MB。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
path |
string | 是 | 要写入的文件路径 |
content |
string | 是 | 要写入的内容(最大10MB) |
使用示例
# 创建新文件
write(path: "lib.rs", content: "pub fn hello() {\n println!(\"Hello!\");\n}")
# 写入配置文件
write(path: "config.json", content: "{\n \"debug\": true\n}")
edit
功能
在文件中查找精确匹配的字符串并替换为新内容。适合单处代码修改。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
path |
string | 是 | 要编辑的文件路径 |
old_string |
string | 是 | 要查找并替换的原始字符串(必须精确匹配) |
new_string |
string | 是 | 替换后的新字符串 |
使用示例
# 修改函数名
edit(path: "main.rs", old_string: "fn main() {", new_string: "fn run() {")
# 修改导入路径
edit(path: "lib.rs", old_string: "use crate::old;", new_string: "use crate::new;")
multi_edit
功能
对单个文件应用多处精确字符串替换,一次性原子写入。若任一编辑失败,文件不会被修改。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
path |
string | 是 | 要编辑的文件路径 |
edits |
array | 是 | 替换列表,每个包含 old_string 和 new_string |
使用示例
# 批量替换多处
multi_edit(path: "lib.rs", edits: [
{old_string: "fn old1()", new_string: "fn new1()"},
{old_string: "fn old2()", new_string: "fn new2()"},
{old_string: "// TODO", new_string: "// DONE"}
])
ls
功能
列出目录的直接条目。每行一个条目,目录在前(以 / 结尾),文件在后并显示字节大小。不递归。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
path |
string | 否 | 目录路径,默认当前目录 "." |
使用示例
# 列出当前目录
ls()
# 列出指定目录
ls(path: "./src")
# 输出示例:
# src/
# tests/
# Cargo.toml 524
# README.md 2841
glob
功能
通过 glob 模式查找文件路径。支持 *、? 和递归 **。返回匹配路径,按修改时间排序。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
pattern |
string | 是 | Glob 模式(如 '*.rs'、'**/*.toml') |
path |
string | 否 | 搜索的基础目录,默认 "." |
使用示例
# 查找所有 Rust 文件
glob(pattern: "**/*.rs")
# 查找配置文件
glob(pattern: "*.toml", path: "./config")
# 查找测试文件
glob(pattern: "**/test*.rs")
搜索分析工具
grep
功能
搜索文本内容(错误消息、注释、字符串等)。支持正则表达式和文件类型过滤。
适用场景
- 搜错误信息(如 'failed to connect'、'panic')
- 找注释内容(如 'TODO'、'FIXME')
- 搜字符串常量、日志文本
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
pattern |
string | 是 | 要搜索的正则表达式模式 |
path |
string | 否 | 搜索的文件或目录,默认 "." |
type |
string | 否 | 按文件类型过滤(js/ts/py/rs/go/java/c/cpp 等) |
-i |
bool | 否 | 忽略大小写,默认 false |
-C |
int | 否 | 显示匹配行前后N行上下文 |
head_limit |
int | 否 | 最大返回结果数,默认 100 |
使用示例
# 搜索 unwrap 使用
grep(pattern: "unwrap()", type: "rs")
# 搜索 TODO 注释
grep(pattern: "TODO", path: "./src")
# 忽略大小写搜索错误
grep(pattern: "error", -i: true)
# 搜索并显示上下文
grep(pattern: "fn main", -C: 3)
search
功能
在文件内容中搜索匹配的文本模式。与 grep 类似,支持 glob 文件过滤。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
pattern |
string | 是 | 要搜索的正则表达式模式 |
path |
string | 否 | 搜索的目录或文件路径,默认 "." |
glob |
string | 否 | 文件过滤的 glob 模式(如 '*.rs') |
bash
功能
在当前工作目录执行 shell 命令。支持构建、测试、git、包管理器操作。
适用场景
- 构建和测试:cargo build、cargo test
- Git 操作:git status、git log
- 包管理:npm install、pip install
- 系统命令:ls -la、find、tree
- cat/head/tail → 用 read
- sed/awk → 用 edit
- find/ls → 用 glob
- grep/rg → 用 grep
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
command |
string | 是 | 要执行的 shell 命令 |
timeout_ms |
int | 否 | 超时时间(毫秒),默认120000,最大600000 |
使用示例
# 构建项目
bash(command: "cargo build --release")
# 运行测试
bash(command: "cargo test")
# Git 状态
bash(command: "git status")
# 长时间运行的命令
bash(command: "cargo build", timeout_ms: 300000)
CodeGraph 工具
🔥 什么是 CodeGraph?
CodeGraph 是基于语义索引的代码搜索工具,比传统文本搜索(grep)快 10-100 倍。 它能精准定位函数、类、方法、变量的定义,并分析调用关系。
- 安装 CodeGraph CLI:
cargo install codegraph-cli - 项目目录存在
.codegraph索引目录
code_search [优先]
功能
搜索代码符号(函数、类、方法、变量)。查找代码定义时必须优先使用此工具。
适用场景
- 查找函数定义
- 查找类/结构体定义
- 查找变量声明
- 查找方法实现
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
pattern |
string | 是 | 符号名称搜索模式(支持模糊匹配) |
limit |
int | 否 | 返回结果数量限制,默认 20 |
使用示例
# 搜索函数定义
code_search(pattern: "Agent::run")
# 搜索结构体
code_search(pattern: "Config")
# 模糊搜索
code_search(pattern: "parse")
code_callers [优先]
功能
查找调用指定符号的所有函数/方法。分析调用关系时必须优先使用。
适用场景
- 查找谁调用了这个函数
- 分析函数使用情况
- 重构前评估影响范围
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
symbol |
string | 是 | 符号 ID 或名称 |
limit |
int | 否 | 返回结果数量限制,默认 10 |
使用示例
# 查找谁调用了 parse_config
code_callers(symbol: "parse_config")
# 查找 Agent::run 的调用者
code_callers(symbol: "Agent::run")
code_callees [优先]
功能
查找指定符号调用的所有函数/方法。分析执行流程时必须优先使用。
适用场景
- 分析函数内部调用
- 追踪代码执行路径
- 理解函数依赖关系
使用示例
# 查找 main 函数调用了哪些函数
code_callees(symbol: "main")
# 查找 Agent::run 的内部调用
code_callees(symbol: "Agent::run")
code_status
功能
检查 CodeGraph 索引状态。返回文件数、节点数、边数、支持的语言等信息。
使用示例
# 检查索引状态
code_status()
# 输出示例:
# Files: 45
# Nodes: 523
# Edges: 1024
# Languages: Rust, TypeScript
code_sync
功能
手动同步 CodeGraph 索引。当代码库有变化但自动同步未触发时使用。
网络工具
websearch
功能
使用 DuckDuckGo 搜索网络信息。返回标题、URL 和摘要的搜索结果列表。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
query |
string | 是 | 搜索查询 |
max_results |
int | 否 | 最大返回结果数,默认 5,最大 10 |
使用示例
# 搜索 Rust 最佳实践
websearch(query: "Rust async best practices")
# 搜索文档
websearch(query: "tokio documentation", max_results: 10)
webfetch
功能
从 URL 获取内容并返回为文本。适合获取文档、API 说明等。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
url |
string | 是 | 要获取的 URL |
max_length |
int | 否 | 最大响应长度,默认 10000 |
使用示例
# 获取文档
webfetch(url: "https://docs.rs/tokio")
# 获取 API 说明
webfetch(url: "https://api.example.com/docs")
任务管理工具
task
功能
启动新代理处理复杂的多步骤任务。每个代理独立运行,可并行处理不同任务。
适用场景
- 需要多次查询的研究任务
- 可在后台运行的长时间操作
- 需与主上下文隔离的任务
- 可并行执行的多个独立任务
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
description |
string | 是 | 任务简短描述(3-5个词) |
prompt |
string | 是 | 代理要执行的任务,需包含所有必要上下文 |
run_in_background |
bool | 否 | 是否后台运行,默认 false |
使用示例
# 启动研究任务
task(description: "研究依赖", prompt: "分析项目的依赖关系和版本兼容性")
# 后台运行任务
task(description: "生成文档", prompt: "...", run_in_background: true)
monitor
功能
监控外部进程或等待状态变化。
适用场景
- 等待构建/测试完成
- 监视文件变化
- 监控后台服务
- 跟踪进程状态
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
mode |
string | 是 | 模式:process/file/port/timer |
target |
string | 是 | 目标:PID/路径/端口号 |
condition |
string | 否 | 等待条件:exit/running/exists/changed/available |
timeout |
int | 否 | 超时时间(毫秒),默认 30000 |
todo_write
功能
维护结构化待办列表,用于规划和跟踪多步骤工作。
适用场景
- 多步骤任务(3步以上)需要展示进度
- 复杂实现需要规划
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
todos |
array | 是 | 待办项列表,每项包含 content、activeForm、status |
使用示例
todo_write(todos: [
{content: "分析代码结构", activeForm: "正在分析代码结构", status: "in_progress"},
{content: "设计重构方案", activeForm: "正在设计重构方案", status: "pending"},
{content: "实现重构", activeForm: "正在实现重构", status: "pending"}
])
工作流工具
ask
功能
当遇到不确定或多种选择时,向用户提问以获取明确指示。
何时使用
- 用户请求含义模糊
- 存在多种可行方案需要选择
- 决策可能对项目产生重大影响
- 用户说 "怎么处理"、"选哪个"、"你觉得呢" 时
何时不使用
- 简单问题不需要确认(明显最优、低风险、可逆)
- 任务可以直接执行不需要用户决策
- 用户说 "开始做"、"直接改" 时
skill
功能
加载指定技能的完整指令。技能匹配用户请求时,必须在生成任何其他响应前调用。
可用技能
om- 分步规划模式refactor- 代码重构技能
使用示例
# 加载重构技能
skill(name: "refactor")
plan_mode (enter_plan_mode / exit_plan_mode)
功能
进入规划模式,在执行前设计实现方案。
适用场景
- 需要规划的非 trivial 实现任务
- 可受益于架构考量的问题
- 可能产生重大影响的变更
MCP 扩展
Model Context Protocol (MCP) 让 Agent 能够通过外部工具扩展能力,实现无限可能。
启动方式
方式一:命令行参数
# 启动 Playwright MCP(浏览器自动化)
matrixcode-tui --mcp "playwright:npx -y @playwright/mcp@latest"
# 启动多个 MCP servers
matrixcode-tui \
--mcp "playwright:npx -y @playwright/mcp@latest" \
--mcp "filesystem:npx -y @modelcontextprotocol/server-filesystem /path/to/dir"
方式二:配置���件
# 复制示例配置
cp mcp.example.toml mcp.toml
# 编辑配置
[servers.playwright]
command = "npx"
args = ["-y", "@playwright/mcp@latest"]
enabled = true
[servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
enabled = true
常用 MCP Servers
| MCP Server | 功能 | 启动命令 |
|---|---|---|
| playwright | 浏览器自动化(23个工具) | npx -y @playwright/mcp@latest |
| filesystem | 文件系统访问 | npx -y @modelcontextprotocol/server-filesystem /path |
| memory | 键值存储 | npx -y @modelcontextprotocol/server-memory |
| github | GitHub API 集成 | npx -y @modelcontextprotocol/server-github |
| postgres | PostgreSQL 数据库 | npx -y @modelcontextprotocol/server-postgres <url> |
使用示例
# 浏览器自动化
用户: 使用 Playwright 打开百度并搜索 "MatrixCode"
Agent: [调用 browser_navigate、browser_click、browser_type]
# 文件系统访问
用户: 列出项目根目录的所有文件
Agent: [调用 filesystem list_directory]
# GitHub 操作
用户: 创建一个新的 issue
Agent: [调用 github create_issue]
会话管理
会话持久化
会话自动保存到 ~/.matrix/sessions/,包含:
- 消息历史
- Token 统计
- 项目路径
- 会话元数据
会话恢复命令
# 列出所有会话
matrixcode --list-sessions
# 交互式选择会话
matrixcode --resume
# 恢复特定会话
matrixcode --resume-id <session-id>
# 继续上次会话
matrixcode --continue
记忆系统
项目概览 (/init)
# 生成项目结构概览
/init
# 查看概览状态
/init status
# 重置概览
/init reset
关键词记忆
- 自动提取重要信息
- 存储到 ~/.matrix/memory.json
- 在后续对话中使用
安全说明
MatrixCode 的 bash 工具不是沙箱环境!
安全边界
- ✅ 阻止最明显的灾难性命令(rm -rf /、mkfs 等)
- ❌ 无法防止所有恶意操作
- ⚠️ 执行的命令具有用户级别的权限
使用建议
- 使用
approve_mode="ask"审查每个命令 - 不要在 root 或生产环境运行
- 定期检查会话日志
- 对敏感文件设置权限保护
工具安全分级
| 安全级别 | 工具 | 说明 |
|---|---|---|
| 🟢 安全 | read、grep、glob、ls、code_*、websearch、webfetch、ask、task | 只读操作,无需审批 |
| 🟡 需审批 | write、edit、multi_edit、bash | 可能修改文件或执行命令 |
常见问题
Q: 如何选择合适的模型?
A: 推荐使用 claude-sonnet-4-20250514,性价比高,速度快。复杂任务可使用 claude-opus-4。
Q: 为什么 CodeGraph 工具不可用?
A: CodeGraph 需要两个条件:
- 安装 CodeGraph CLI:
cargo install codegraph-cli - 项目目录存在
.codegraph索引目录
Q: 如何防止 AI 执行危险命令?
A: 设置 approve_mode="ask",每次工具调用都会询问用户确认。
Q: 会话历史如何管理?
A: 使用 matrixcode --list-sessions 查看所有会话,matrixcode --resume 选择恢复。
Q: Token 消耗太高怎么办?
A: MatrixCode 内置上下文压缩功能,会自动压缩长对话,节省 Token。