快速开始

安装

从源码编译安装
# 克隆项目
git clone <repository-url>
cd matrixcode

# 编译
cargo build --release

# 安装到系统
cargo install --path packages/cli

配置 API Key

MatrixCode 支持多种配置方式:

方式一:配置文件

创建 ~/.matrix/config.json
{
    "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专用
优先级: 环境变量 > config.json > 默认值

运行

# 启动交互式会话
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 选项:

ask
每次询问(推荐)

每次工具调用都会询问用户,提供最高级别的控制。适合新手和重要项目。

auto
自动批准安全操作

自动批准安全级别的工具(如 read、grep),危险操作仍需确认。适合有经验的用户。

strict
严格模式

严格拒绝危险操作,只允许安全操作。适合受限环境。

工具文档

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。

⚠️ 警告: 写入现有文件前必须先用 read 工具读取当前内容!

参数

参数名 类型 必填 说明
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

🟡 需审批 精确字符串替换

功能

在文件中查找精确匹配的字符串并替换为新内容。适合单处代码修改。

重要: 编辑前必须先读取文件。old_string 必须精确匹配,不能模糊匹配。

参数

参数名 类型 必填 说明
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')
  • 搜字符串常量、日志文本
注意: 查找函数定义请用 code_search(快10-100倍)

参数

参数名 类型 必填 说明
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)

bash

🟡 需审批 执行 shell 命令

功能

在当前工作目录执行 shell 命令。支持构建、测试、git、包管理器操作。

⚠️ 安全警告: bash 工具不是沙箱环境!执行的命令具有用户级别权限。

适用场景

  • 构建和测试: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 倍。 它能精准定位函数、类、方法、变量的定义,并分析调用关系。

使用条件:
  1. 安装 CodeGraph CLI:cargo install codegraph-cli
  2. 项目目录存在 .codegraph 索引目录

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"

方式二:配置���件

mcp.toml
# 复制示例配置
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 等)
  • ❌ 无法防止所有恶意操作
  • ⚠️ 执行的命令具有用户级别的权限

使用建议

  1. 使用 approve_mode="ask" 审查每个命令
  2. 不要在 root 或生产环境运行
  3. 定期检查会话日志
  4. 对敏感文件设置权限保护

工具安全分级

安全级别 工具 说明
🟢 安全 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 需要两个条件:

  1. 安装 CodeGraph CLI:cargo install codegraph-cli
  2. 项目目录存在 .codegraph 索引目录

Q: 如何防止 AI 执行危险命令?

A: 设置 approve_mode="ask",每次工具调用都会询问用户确认。

Q: 会话历史如何管理?

A: 使用 matrixcode --list-sessions 查看所有会话,matrixcode --resume 选择恢复。

Q: Token 消耗太高怎么办?

A: MatrixCode 内置上下文压缩功能,会自动压缩长对话,节省 Token。