Reasonix 是一款面向开发者的本地 AI 编程代理,能够直接读取项目文件、修改代码、执行命令、运行测试,并根据验证结果继续完成修复。它采用 Go 语言重写,支持 DeepSeek、OpenAI-compatible、Anthropic-compatible 以及企业内部模型网关,同时提供桌面端、浏览器界面、ACP 编辑器接入、MCP 插件、子智能体、会话记忆、远程 SSH 和权限审批等能力。
本文将从 Reasonix 的产品定位、技术架构和安装方式讲起,重点介绍模型供应商配置、自定义 OpenAI 兼容接口接入、API Key 管理、Planner 模型设置、MCP 插件与权限沙箱机制,并通过一个完整的 Go 项目修复案例,演示如何利用 Reasonix 完成“分析、修改、测试、验证”的 AI 编程闭环。

过去,大多数 AI 编程工具更像一名“代码顾问”:你把问题发给它,它给出代码片段,再由你手动复制、修改和测试。
Reasonix 的思路更进一步。
它可以直接进入本地项目目录,读取代码、搜索文件、修改内容、执行 Shell 命令、运行测试,并根据测试结果继续排查问题。换句话说,它不只是告诉你“应该怎么改”,而是可以在获得授权后,真正参与项目开发过程。
一个典型的 Reasonix 工作流程如下:
读取项目
↓
分析问题
↓
制定计划
↓
修改代码
↓
执行测试
↓
检查错误
↓
继续修复
↓
输出验证结果因此,更准确地说,Reasonix 是一个运行在本地开发环境中的 AI Coding Agent,也可以理解为一套本地 Agent 运行时。
Reasonix 最初围绕 DeepSeek 模型进行优化,尤其重视长会话中的上下文稳定性和前缀缓存效果。当前版本已经支持更广泛的模型后端,包括:
需要特别说明的是,Reasonix 并不是 DeepSeek 官方推出的产品,而是由开源社区维护的第三方项目。实际使用时,模型效果、接口兼容性和安全风险仍需由使用者自行评估。
Reasonix 并不只面向某一种开发方式。无论你习惯终端、桌面客户端,还是编辑器工作流,都能找到合适的使用入口。
如果你的日常工作离不开 Git、SSH、Docker、Linux 命令行或服务器终端,Reasonix 的 CLI 和 TUI 模式会比较顺手。
它可以在当前项目目录中完成:
Reasonix 同时提供桌面客户端和本地浏览器界面。
通过图形界面,可以更直观地查看:
对于不习惯长时间使用终端的开发者,桌面端通常更容易上手。
Reasonix 可以通过 ACP 协议接入兼容编辑器,让开发者直接在编辑器中调用本地 Agent。
这类模式适合需要结合代码上下文进行连续修改、审查和调试的用户。
Reasonix 支持 Remote SSH,可以运行在远程 Linux 或 macOS 开发机上,再通过 SSH 隧道从本地访问。
常见使用场景包括:
Reasonix 的功能可以概括为五个层次:文件操作、命令执行、任务规划、能力扩展,以及会话管理。
Reasonix 可以读取和修改本地工作区中的文件,包括:
它与普通代码问答工具最大的区别,是可以在获得授权后直接落地修改,而不是只输出一段等待复制的代码。
Reasonix 可以调用 Shell 执行命令,例如:
go test ./...
npm run build
npm run lint
pytest
cargo test
git diff
docker compose config这让它具备了完整的开发闭环。
例如,Agent 修改完代码后,可以继续运行测试。如果测试失败,它能够读取错误信息,定位问题并进行下一轮修复,而不是在“代码已经生成”这一步就停止。
对于复杂任务,建议先让 Reasonix 制定计划,再决定是否允许它修改代码。
例如:
请先阅读项目结构,分析登录接口存在的问题。
要求:
1. 先输出修复计划;
2. 未经确认不要修改文件;
3. 修复后运行单元测试;
4. 最后总结修改内容和测试结果。Plan 模式尤其适合以下任务:
先看计划,再批准执行,可以明显降低 Agent 理解偏差和修改范围失控的风险。
Reasonix 支持 MCP,可以连接外部工具和服务,例如:
除了 MCP,Reasonix 还支持 Skills 和 Subagents。
Skills 可以理解为预先定义好的工作方法;Subagent 则可以把复杂任务交给不同角色分别处理。
例如,创建一个专门负责代码审查的子智能体:
reasonix subagent create reviewer \
--description "Review changes for correctness and regressions" \
--prompt-file reviewer.md \
--tools read_file,grep,bash \
--model deepseek-pro \
--effort high随后执行只读审查:
reasonix subagent try reviewer "检查当前代码变更是否存在回归风险"try 模式只允许读取和分析,不会修改文件,因此比较适合代码审查、安全检查和风险评估。
Reasonix 可以保存长期会话状态,并提供:
常用启动命令包括:
reasonix --continue
reasonix --resume交互界面中还可以使用:
/rewind
/branch
/switch
/memory
/forget当 Agent 的修改方向出现偏差时,可以通过 /rewind 回到之前的检查点,避免手动逐个恢复文件。
Reasonix 1.x 的核心使用 Go 语言实现,目标是降低运行时依赖,并将主要能力封装为单一原生二进制程序。
它的整体架构可以理解为:
用户
│
├─ CLI / TUI
├─ Desktop 桌面端
├─ Browser UI
└─ ACP 兼容编辑器
│
▼
本地 Reasonix Controller
│
├─ Agent Loop
├─ 文件与 Shell 工具
├─ Permissions 权限系统
├─ Sandbox 沙箱
├─ Sessions 会话
├─ Memory 记忆
├─ Checkpoints 检查点
├─ Skills / Subagents
└─ MCP Plugins
│
▼
模型 Provider
├─ DeepSeek API
├─ OpenAI-compatible API
├─ Anthropic-compatible API
└─ 企业内部模型网关Reasonix 本身主要负责本地执行、权限控制、上下文管理和工具调度,真正的模型推理仍然由配置的模型 Provider 完成。

因此,它通常采用“本地 Agent + 云端模型”的混合架构。
代码和工具操作发生在本地,而需要发送给模型的上下文,则会根据任务和配置提交到对应模型服务。
Reasonix 当前主线是使用 Go 重写的 1.x 版本,早期版本则主要基于 TypeScript 和 Node.js。
对比项 | 旧版本 | 当前主线 |
|---|---|---|
版本范围 | 0.x | 1.x |
主要语言 | TypeScript / Node.js | Go |
维护状态 | 维护模式 | 活跃开发 |
运行时依赖 | Node.js | 原生 Go 二进制 |
产品定位 | 终端 AI 工具 | 本地 Agent 运行时 |
主要入口 | CLI | CLI、桌面端、Serve、ACP、Remote |
对于新用户,更建议直接从当前 1.x 版本开始学习,没有必要再从旧版入门。
这是比较通用的跨平台安装方式:
npm install -g reasonix安装完成后检查版本:
reasonix --version在 1.x 版本中,npm 主要承担安装和分发作用,Reasonix 实际运行的是原生 Go 二进制程序。
macOS 用户可以执行:
brew install esengine/reasonix/reasonix安装完成后同样可以检查版本:
reasonix --version桌面端通常会提供以下安装包:
.dmg 或 .zip;.exe 安装程序或便携版;.deb 或 .tar.gz。如果 macOS 提示应用无法打开,可以尝试移除系统隔离标记:
sudo xattr -rd com.apple.quarantine /Applications/Reasonix.app执行涉及系统安全策略的命令前,建议先确认安装包来源可靠。
需要二次开发或研究源码时,可以从仓库构建:
git clone <Reasonix 仓库地址>
cd reasonix
make build源码构建通常需要:
安装完成后,接下来最重要的一步是配置模型。
Reasonix 的模型设置通常分为两个区域:
其中,“接入”决定 Reasonix 可以连接哪些模型服务,“使用”决定当前任务默认调用哪一个模型。
Reasonix 不会自动把接口中的全部模型直接展示在会话里。
一般需要完成以下步骤:
添加模型供应商
↓
配置 Base URL 和 API Key
↓
刷新或手动添加模型
↓
勾选并启用模型
↓
在会话中选择模型可以简单理解为:
Provider 负责提供接口,已启用模型决定哪些模型能够在 Reasonix 中使用。
如果某个模型已经存在于接口中,但没有在供应商设置里启用,它通常不会出现在会话模型列表、Planner 设置或 /model 切换列表中。
不建议把 API Key 直接写进项目配置文件。
Reasonix 可以通过环境变量引用密钥。供应商配置中填写的是环境变量名称,例如:
UIUIAPI_API_KEY真实密钥则保存在全局 .env 文件中:
~/.reasonix/.env文件内容类似:
UIUIAPI_API_KEY=sk-xxxxxxxxxxxxxxxx配置文件只记录环境变量名称,不直接保存完整密钥。
这种方式有几个好处:
Reasonix 通常支持两类模型接入方式:
对于 OpenAI、Anthropic 等官方接口,可以优先使用预设;对于 uiuiAPI、New API、自建中转平台或其他 OpenAI 兼容接口,更适合使用“自定义供应商”。
进入 Reasonix 设置页面:
设置 → 模型 → 接入点击右上角:
+ 添加模型服务随后选择推荐预设或自定义供应商。

选择预设后,系统通常会自动填写协议类型、Base URL 和环境变量名称等信息。
用户只需要补充 API Key,或者根据实际情况调整模型列表。
对于 uiuiAPI、New API、自建模型网关等 OpenAI 兼容接口,可以选择:
自定义供应商主要配置项如下:
配置项 | 作用 | 示例 |
|---|---|---|
名称 | Reasonix 中显示的供应商名称 |
|
Base URL | 模型服务接口地址 |
|
API Key 环境变量名 |
|
|
协议类型 | 接口兼容的请求协议 |
|
模型发现 | 是否自动获取模型列表 | 建议开启 |
额外请求头 | 添加自定义 Header | 无特殊需求可留空 |
名称只用于 Reasonix 内部展示,可以根据线路和用途命名,例如:
uiuiAPI
uiuiAPI-VIP
OpenAI-Official
Claude-Backup
Local-Model如果同时接入多个地址,建议在名称中写明线路或用途,避免后续选择错误。
对于 OpenAI 兼容接口,通常填写带 /v1 的基础地址:
https://api.uiuihao.com/v1一般不需要填写完整的:
/v1/chat/completionsReasonix 会根据调用协议自动拼接对应路径。
如果填写了完整请求地址,反而可能出现重复路径,例如:
/v1/chat/completions/chat/completions这里填写的不是完整 API Key,而是保存密钥的变量名:
UIUIAPI_API_KEY在 .env 文件中写入:
UIUIAPI_API_KEY=sk-xxxxxxxxxxxxxxxx环境变量名称需要完全一致,包括大小写和下划线。
如果接口兼容 OpenAI 请求格式,通常选择:
openai如果使用 Anthropic 原生兼容协议,则需要选择对应的 Anthropic 类型。
协议类型与服务端格式不一致时,即使模型列表可以正常获取,发送消息时仍可能出现参数错误。
开启模型发现后,Reasonix 会尝试从供应商接口获取模型列表。
对于支持以下接口的平台,建议开启:
GET /v1/models以后模型平台增加新模型时,只需要在 Reasonix 中刷新模型列表,不必重新创建供应商。
如果接口没有实现 /v1/models,或者返回格式不兼容,也可以关闭自动发现,改为手动维护模型。
大多数 OpenAI 兼容接口只需要标准的 Authorization 请求头,因此可以留空。
只有供应商明确要求时,才需要增加类似:
X-API-Source
X-User-ID
X-Channel除非平台有特殊要求,否则不建议重复添加标准 Authorization Header。
供应商信息填写完成后,需要继续完成模型启用:

只有被启用的模型,才会出现在:
/model 模型切换列表;以 OpenAI 兼容接口为例,可以使用以下配置思路:
配置项 | 配置值 |
|---|---|
供应商名称 | uiuiAPI |
接入方式 | 自定义供应商 |
协议类型 | OpenAI 兼容 |
Base URL |
|
API Key 环境变量 |
|
模型发现 | 开启 |
模型状态 | 保存并启用 |
例如,接口中存在以下模型:
gpt-5.5
gpt-5.5-thinking
gpt-5.5-xhigh
gpt-5.6-Luna
gpt-5.6-sol
gpt-5.6-terra启用后,就可以在 Reasonix 的模型使用页面或具体会话中选择。
需要注意,模型名称必须与接口实际返回的模型 ID 完全一致。以下细节都可能导致调用失败:

聚合平台中的模型数量可能很多,但没有必要把所有模型都放进 Reasonix。
更实用的做法是只保留几类模型:
这样既能缩短模型列表,也能减少误选模型、接口不兼容和费用失控等问题。
Reasonix 可以将规划模型和执行模型分开。
例如,让能力更强的模型负责:
再使用速度更快、成本更低的模型负责:
配置思路如下:
Planner:高推理、高理解能力模型
Executor:快速、稳定、成本较低的模型对于大型项目,这种分工通常比所有步骤都使用同一个高成本模型更合理。
进入:
设置 → 模型 → 使用选择默认模型和 Planner 模型。

也可以在会话中输入:
/model从已经启用的模型中快速切换。

如果 /model 中看不到某个模型,通常需要回到“模型 → 接入”,检查该模型是否已经勾选并保存。
检查供应商配置中的变量名称:
UIUIAPI_API_KEY再检查:
~/.reasonix/.env确认存在:
UIUIAPI_API_KEY=sk-xxxxxxxxxxxxxxxx环境变量名称必须完全一致。

这通常说明 /v1/models 可以访问,但聊天接口调用失败。
重点检查:
进入:
设置 → 模型 → 接入找到对应供应商,检查“已启用模型”列表。
模型必须被勾选并保存,才会出现在会话选择器中。
可以依次排查:
/v1/models;如果接口不支持自动发现,可以关闭该功能,改为手动添加模型。
先确认“模型 → 使用”中的默认模型已经更新。
如果当前会话创建时已经绑定了某个模型,可以输入:
/model重新选择,或者直接新建会话。
部分模型设置会保留在已有会话中,因此修改全局默认值后,不一定会立即覆盖当前会话。
下面通过一个完整案例,演示如何使用 Reasonix 完成代码分析、修改和测试。
假设项目结构如下:
demo-app/
├── go.mod
├── main.go
├── internal/
│ └── net/
│ ├── client.go
│ └── client_test.go
└── README.md项目中的 HTTP 客户端没有重试机制,现在需要增加指数退避和最大重试次数。
cd demo-appreasonix --permission-mode plan请阅读当前项目结构,定位 HTTP 客户端没有重试机制的问题。
要求:
1. 先给出修改计划,不要立即编辑代码;
2. 只允许修改 internal/net 目录;
3. 不修改现有公开函数签名;
4. 不引入新的第三方依赖;
5. 增加指数退避和最大重试次数;
6. 修改完成后运行 go test ./...;
7. 最后输出修改摘要和测试结果。相比“帮我加一个重试功能”这样的简单描述,明确限制修改目录、依赖和公开接口,可以显著降低 Agent 跑偏的概率。
Reasonix 可能输出类似计划:
1. 读取 internal/net/client.go;
2. 检查现有请求逻辑;
3. 读取 client_test.go,了解测试覆盖范围;
4. 在不改变公开函数签名的情况下加入重试逻辑;
5. 补充或调整测试;
6. 执行 go test ./...;
7. 汇总修改内容和测试结果。确认计划没有问题后,再允许它进入执行阶段。
Reasonix 在尝试修改文件或执行命令时,会根据权限配置发起审批。
例如:
Reasonix 请求修改:
internal/net/client.go或:
Reasonix 请求执行:
go test ./...建议先查看修改目标和命令内容,再决定是否批准。
完成后,不要只看 Agent 给出的总结,还应检查:
最后可以手动执行:
git diff
go test ./...AI Agent 可以帮助提升开发效率,但最终验证仍应掌握在开发者手中。
如果不习惯终端,可以启动 Reasonix 的本地浏览器界面:
cd your-project
reasonix serve默认情况下,可以在浏览器访问:
http://127.0.0.1:8787浏览器界面通常可以查看:
如果需要监听所有网络接口,可以使用:
reasonix serve \
--addr 0.0.0.0:8787 \
--auth token也可以使用密码模式:
reasonix serve \
--auth password \
--password "temporary-password"不要在没有鉴权的情况下,将 Reasonix Serve 直接暴露到公网。
原因很简单:Reasonix 可能拥有读取文件、修改代码和执行 Shell 命令的权限。一旦被未授权用户访问,风险远高于普通网页应用。
Reasonix 可以通过 ACP 协议接入兼容编辑器。
启动命令:
reasonix acp也可以指定模型和工作配置:
reasonix acp \
--model deepseek-pro \
--profile deliveryACP 使用基于标准输入输出的 NDJSON JSON-RPC 2.0 消息流,而不是普通 HTTP 接口。
简化后的会话流程如下:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
{"jsonrpc":"2.0","id":2,"method":"session/new","params":{"cwd":"/path/to/project"}}
{"jsonrpc":"2.0","id":3,"method":"session/prompt","params":{
"sessionId":"session-id",
"prompt":[
{
"type":"text",
"text":"阅读项目结构并列出三个潜在风险。"
}
]
}}如果需要在执行过程中临时调整方向,可以使用会话引导扩展:
{
"jsonrpc": "2.0",
"id": 4,
"method": "_reasonix.io/session/steer",
"params": {
"sessionId": "session-id",
"prompt": [
{
"type": "text",
"text": "优先检查认证逻辑,暂时不要修改前端。"
}
]
}
}这类能力适合编辑器插件、自定义 IDE 和企业内部开发平台集成。
Reasonix 可以通过 MCP 接入外部工具。
配置结构示例:
[[plugins]]
name = "example"
command = "reasonix-plugin-example"
call_timeout_seconds = 600在交互界面中可以输入:
/mcp查看 MCP 插件状态。
如果插件无法启动,可以先执行:
reasonix doctor capabilities --json确认配置没有明显问题后,再进行真实启动探测:
reasonix doctor capabilities \
--live \
--timeout 10s \
--json常见错误包括:
mcp.command_not_found
mcp.invalid_transport
mcp.start_failed
mcp.no_tools排查时重点检查:
Reasonix 可以修改代码和执行命令,因此权限控制是正式使用前必须配置的一部分。
一个相对安全的基础配置如下:
[permissions]
mode = "ask"
deny = [
"Bash(rm -rf*)",
"Bash(git push*)",
"Bash(git reset --hard*)"
]
allow = [
"Bash(go test:*)",
"Bash(npm test:*)",
"Bash(git diff:*)"
]普通开发环境建议优先使用:
mode = "ask"不要长期使用完全跳过审批的模式。
[sandbox]
workspace_root = ""
allow_write = ["/tmp"]
forbid_read = [
"${HOME}/.ssh",
"${HOME}/.aws",
"${HOME}/.config"
]还可以根据实际情况禁止读取:
跳过审批能够提高执行速度,但也会明显放大风险。
只有同时满足以下条件时,才建议考虑:
检查:
/models 接口是否可以访问。必要时可以重新执行:
reasonix setup测试连接并刷新模型列表。
OpenAI-compatible Provider 通常会在 Base URL 后自动拼接:
/chat/completions如果配置中已经填写了完整请求地址,就可能产生重复路径。
此时应检查当前字段需要的是基础地址,还是完整的 chat_url。
可以适当调整:
[tools]
bash_timeout_seconds = 300
mcp_call_timeout_seconds = 600不要一开始就把超时时间设置得过大,应根据编译、测试和插件执行时间逐步调整。
可以使用:
/rewind回退到之前的检查点。
也可以重新打开历史会话:
reasonix --resume可以尝试使用 Reasonix Guard 工具检查和恢复:
reasonix-guard check
reasonix-guard diagnose
reasonix-guard repair
reasonix-guard launch --safe-mode
reasonix-guard snapshots
reasonix-guard restore安全模式通常不会加载桌面 WebView、MCP、插件、Hooks 和 Bot,适合排查配置损坏或桌面壳启动失败。
核心 Agent、文件操作、工具调用、权限审批和状态管理都运行在本地,更适合代码仓库和内部开发环境。
除了 DeepSeek,还可以接入 OpenAI-compatible、Anthropic-compatible 和企业内部模型网关。
Reasonix 同时覆盖:
它提供审批、allow/deny 规则、沙箱、工作区限制和会话回退机制,能够降低自动修改代码带来的风险。
对于需要反复阅读代码、修改、测试和继续修复的任务,Reasonix 比一次性代码问答更接近真实开发流程。
遇到接口兼容、版本更新和安全问题时,主要依赖社区维护。
在强合规场景中,企业需要额外评估:
尤其是在 Windows 环境中,Shell、路径权限和进程隔离方式与 Linux、macOS 不同,更需要严格审核命令执行请求。
即使测试通过,也不代表代码一定安全。
涉及以下内容时,仍然必须人工复核:
如果你只需要一个帮助解释代码、生成函数的聊天工具,Reasonix 可能显得有些复杂。
但如果你希望 AI 真正进入项目目录,完成“阅读、修改、测试、验证”的开发闭环,那么 Reasonix 值得尝试。
它比较适合:
个人开发者可以从 CLI、Ask 权限模式和小型测试项目开始。
团队用户则应该先建立统一的 Provider 配置、权限规则、沙箱边界和代码审核流程,再逐步引入 MCP、Remote SSH、子智能体和自动化协作。

安装 Reasonix 后执行:
reasonix setup在一个小型项目中启动:
reasonix熟悉以下命令:
/help
/model
/language
/reasoning-language让 Reasonix 完成:
选择一个需要两到三个步骤的真实任务,要求 Reasonix:
练习:
/rewind
/branch
/switch
/memory
/forget并测试:
reasonix --continue
reasonix --resume从以下能力中选择一种:
不需要一次掌握全部功能,先理解扩展机制即可。
重点学习:
permissions;allow;deny;sandbox;serve.auth_mode;forbid_read。运行:
reasonix doctor capabilities检查当前环境能力。
选择一个真实需求,例如:
完整经历:
Plan
→ 文件读取
→ 代码修改
→ Shell 测试
→ Git Diff
→ 结果总结完成这一轮后,再根据自己的工作习惯,选择长期使用 CLI、桌面端、Browser UI 或 ACP 编辑器模式。
Reasonix 并不是一个简单的代码问答工具,而是一套能够实际操作本地开发环境的 AI Agent 运行时。
它的核心价值主要体现在三个方面:
对于个人开发者,建议从“CLI + Ask 权限模式 + 小型测试项目”开始,不要一开始就开放过多权限。
对于企业和技术团队,则应该先完成模型网关、凭据隔离、插件审核、安全边界和代码审核流程建设,再考虑将 Reasonix 用于正式项目。
无论使用 Reasonix,还是其他 AI 编程代理,都应该坚持一个基本原则:
AI 可以帮助开发者更快地分析问题、修改代码和完成验证,但涉及生产环境、数据安全和核心业务逻辑的变更,最终仍然需要由人进行审核和确认。
版权信息: 本文由界智通(jieagi)团队编写,图片、文本保留所有权利。未经授权,不得转载或用于商业用途。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。