返回 DeepSeek-Reasonix
index.astro
根目录 / site / src / pages / index.astro
1 ---
2 import Base from '../layouts/Base.astro';
3 import SiteHeader from '../components/SiteHeader.astro';
4 import community from '../data/community.json';
5 import { desktopDownloadVersion } from '../data/desktop-download.js';
6
7 const base = import.meta.env.BASE_URL.replace(/\/$/, '');
8 const repo = 'https://github.com/esengine/DeepSeek-Reasonix';
9 const repoReleases = `${repo}/releases`;
10 const desktopStableFallback = desktopDownloadVersion
11 ? `${repoReleases}/tag/desktop-${desktopDownloadVersion}` : repoReleases;
12 const desktopVersionLabel = desktopDownloadVersion || 'latest';
13 const desktopNotes = desktopDownloadVersion
14 ? `${base}/changelog/${desktopDownloadVersion}/` : `${base}/changelog/`;
15 const vscodeMarketplace = 'https://marketplace.visualstudio.com/items?itemName=SivanLiu.reasonix-agent';
16 const openVsx = 'https://open-vsx.org/extension/SivanLiu/reasonix-agent';
17 const vscodeExtensionRepo = 'https://github.com/SivanCola/reasonix-vscode';
18
19 const goVer = 'latest';
20
21 const fmtN = (n) => Number(n).toLocaleString('en-US');
22 const avClass = (i) => 'av' + (i % 5 === 2 ? ' sm' : i % 7 === 3 ? ' lg' : '');
23 const half = Math.ceil(community.list.length / 2);
24 const rowA = community.list.slice(0, half);
25 const rowB = community.list.slice(half);
26
27 const desc = "Open-source AI coding agent you can leave running. One local engine, four ways in — terminal, desktop app, browser, or your editor over ACP. Plan mode, permissions, a workspace sandbox and checkpoints keep long autonomous runs reviewable. A single Go binary, no runtime to install. MIT.";
28 const ld = {
29 '@context': 'https://schema.org',
30 '@type': 'SoftwareApplication',
31 name: 'Reasonix',
32 description: desc,
33 url: 'https://reasonix.io/',
34 applicationCategory: 'DeveloperApplication',
35 operatingSystem: 'macOS, Windows, Linux',
36 license: `${repo}/blob/main-v2/LICENSE`,
37 downloadUrl: `${repo}/releases`,
38 offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
39 };
40 ---
41 <Base
42 title="Reasonix — a coding agent you can leave running"
43 titleEn="Reasonix — a coding agent you can leave running"
44 titleZh="Reasonix — 可以一直开着跑的编码 Agent"
45 description={desc}>
46
47 <script type="application/ld+json" set:html={JSON.stringify(ld)} slot="head" is:inline />
48
49 <SiteHeader />
50
51 <main>
52 <section class="hero">
53 <div class="wrap">
54 <div class="eyebrow reveal"><span class="dot"></span><span class="l-en">Open source · MIT · a single Go binary</span><span class="l-zh">开源 · MIT · 单个 Go 二进制</span></div>
55 <h1 class="reveal" style="--d:0.06s">
56 <span class="l-en">A coding agent you can<br /><span class="tt">leave running</span>.</span>
57 <span class="l-zh">可以<span class="tt">一直开着跑</span>的<br />编码 Agent。</span>
58 </h1>
59 <p class="sub reveal" style="--d:0.12s">
60 <span class="l-en">One local engine, four ways in — terminal, desktop app, browser, or your editor over ACP. Plan mode, permissions, a workspace sandbox and per-turn checkpoints keep a long autonomous run something you can still read and undo.</span>
61 <span class="l-zh">一套本地引擎,四个入口——终端、桌面端、浏览器,或通过 ACP 接入你的编辑器。计划模式、权限、工作区沙箱与逐轮 checkpoint,让长时间自治运行始终可读、可撤销。</span>
62 </p>
63 <div class="hero-install reveal" style="--d:0.18s" aria-label="Reasonix install options">
64 <div class="install-option install-option--desktop">
65 <canvas class="particle-canvas"></canvas>
66 <span class="install-kicker"><span class="l-en">Desktop app</span><span class="l-zh">桌面端</span></span>
67 <strong><span class="l-en">Visual workspace for sessions, settings, approvals, and updates.</span><span class="l-zh">可视化管理会话、设置、审批与自动更新。</span></strong>
68 <a class="btn btn-dark" data-os-dl data-goto="desktop" href="#start"><span class="l-en">Download desktop</span><span class="l-zh">下载桌面版</span></a>
69 </div>
70 <div class="install-option install-option--cli">
71 <canvas class="particle-canvas"></canvas>
72 <span class="install-kicker"><span class="l-en">CLI / TUI</span><span class="l-zh">CLI / TUI</span></span>
73 <strong><span class="l-en">Terminal-native agent with the same local Reasonix engine.</span><span class="l-zh">终端原生入口,使用同一套本地 Reasonix 引擎。</span></strong>
74 <span class="install"><span class="ps1">$</span><span class="install-command">npm i -g reasonix</span><button data-copy="npm i -g reasonix">Copy</button></span>
75 </div>
76 </div>
77 <nav class="also reveal" style="--d:0.22s" aria-label="More ways to use Reasonix / 更多使用方式">
78 <span class="l-en also-row">
79 <strong class="also-label">More ways to use Reasonix:</strong>
80 <span class="also-links">
81 <a href="?download=vscode#start" data-goto="vscode">Editor extension</a>
82 <span class="also-sep" aria-hidden="true">·</span>
83 <a href="#start" data-goto="brew">Homebrew</a>
84 <span class="also-sep" aria-hidden="true">·</span>
85 <span>Local Web UI: <code>reasonix serve</code></span>
86 <span class="also-sep" aria-hidden="true">·</span>
87 <a href={`${base}/docs/#acp`}>ACP editor integration</a>
88 </span>
89 </span>
90 <span class="l-zh also-row">
91 <strong class="also-label">更多使用方式:</strong>
92 <span class="also-links">
93 <a href="?download=vscode#start" data-goto="vscode">编辑器扩展</a>
94 <span class="also-sep" aria-hidden="true">·</span>
95 <a href="#start" data-goto="brew">Homebrew</a>
96 <span class="also-sep" aria-hidden="true">·</span>
97 <span>本地 Web UI:<code>reasonix serve</code></span>
98 <span class="also-sep" aria-hidden="true">·</span>
99 <a href={`${base}/docs/#acp`}>ACP 编辑器接入</a>
100 </span>
101 </span>
102 </nav>
103
104 <div class="term-stage reveal" style="--d:0.26s">
105 <div class="fig"><span class="l-en">fig. 01 — one task, start to finish</span><span class="l-zh">图 01 —— 一个任务,从开始到结束</span></div>
106 <div class="term">
107 <div class="term-bar"><i></i><i></i><i></i><span class="title">~/app — reasonix</span></div>
108 <div class="term-body"><span class="tl"><span class="t-acc">◆</span> reasonix <span class="t-dim"><span class="rxv">{goVer}</span> · deepseek-v4-flash · ~/app</span></span><span class="tl"><span class="t-vio">›</span> add retry with backoff to the http client</span><span class="tl"><span class="t-acc">◇</span> plan <span class="t-dim">3 steps · 2 files · 1 test run</span></span><span class="tl"><span class="t-warm">●</span> allow <span class="t-dim">edit internal/net/client.go</span> <span class="t-ok">yes</span></span><span class="tl"><span class="t-ok">✓</span> edit <span class="t-dim">internal/net/client.go</span> <span class="t-add">+24 −3</span></span><span class="tl"><span class="t-ok">✓</span> edit <span class="t-dim">internal/net/client_test.go</span> <span class="t-add">+41 −0</span></span><span class="tl"><span class="t-ok">✓</span> run <span class="t-dim">go test ./internal/net/</span> <span class="t-ok">ok</span> <span class="t-dim">(0.21s)</span></span><span class="tl"><span class="t-acc">◆</span> checkpoint <span class="t-dim">#14 — revert this turn anytime</span></span><span class="tl"><span class="t-vio">›</span> <span class="caret"></span></span></div>
109 <div class="term-stat"><span>surface <b>cli</b></span><span>tools <b data-cnt="9" data-suf=" calls">9 calls</b></span><span>session <b data-cnt="18" data-suf="m">18m</b></span><span>cost <b data-cnt="0.043" data-dec="3" data-pre="$">$0.043</b></span></div>
110 </div>
111 </div>
112 </div>
113 </section>
114
115 <section id="features">
116 <div class="wrap">
117 <div class="sec-head split reveal">
118 <span class="kicker"><span class="l-en">Features</span><span class="l-zh">特性</span></span>
119 <h2><span class="l-en">Autonomy you can <span class="em">actually audit.</span></span><span class="l-zh">可以<span class="em">真正审阅</span>的自治。</span></h2>
120 <p><span class="l-en">Letting an agent run for hours is only useful if you can see what it did and undo the parts you don't want. Every layer here exists for that: plan first, gate each tool call, checkpoint every turn.</span><span class="l-zh">让 agent 跑上几个小时,前提是你能看清它做了什么、并撤销你不想要的部分。这里的每一层都为此存在:先规划、逐次工具调用受控、逐轮 checkpoint。</span></p>
121 </div>
122 <div class="feat-grid">
123 <div class="feat reveal">
124 <span class="tag">01 / permissions</span>
125 <h3><span class="l-en">Every tool call is gated</span><span class="l-zh">每次工具调用都受控</span></h3>
126 <p><span class="l-en">Reads, writes, and shell commands each ask separately, and the workspace sandbox bounds what a command can touch even after you say yes.</span><span class="l-zh">读取、写入、shell 命令分别询问;即便你放行,工作区沙箱仍限定命令能触碰的范围。</span></p>
127 <code class="feat-chip">$ allow edit internal/net/client.go? [y/n/always]</code>
128 </div>
129 <div class="feat reveal" style="--d:0.06s">
130 <span class="tag">02 / checkpoints</span>
131 <h3><span class="l-en">Undo any turn</span><span class="l-zh">任意一轮都可回退</span></h3>
132 <p><span class="l-en">Each turn writes a checkpoint outside git, so a six-hour run rewinds to any point without touching your commit history.</span><span class="l-zh">每轮在 git 之外写入 checkpoint,六小时的运行可回退到任意一点,且不污染你的提交历史。</span></p>
133 </div>
134 <div class="feat reveal" style="--d:0.04s">
135 <span class="tag">03 / plan mode</span>
136 <h3><span class="l-en">Plan before it touches anything</span><span class="l-zh">动手前先给出计划</span></h3>
137 <p><span class="l-en"><code>/plan</code> holds every write until you've read the plan and approved it.</span><span class="l-zh"><code>/plan</code> 会先给出计划,在你读过并批准前不写入任何东西。</span></p>
138 </div>
139 <div class="feat reveal" style="--d:0.1s">
140 <span class="tag">04 / mcp + skills</span>
141 <h3><span class="l-en">Extend it without forking it</span><span class="l-zh">不用 fork 就能扩展</span></h3>
142 <p><span class="l-en">MCP over stdio, SSE, and streamable HTTP merges external tools into one registry. Markdown skills and subagents — explore, research, review, security-review — run with their own isolated tool sets.</span><span class="l-zh">MCP 支持 stdio、SSE 与 streamable HTTP,把外部工具合并进同一 registry。Markdown 技能与子智能体(explore / research / review / security-review)各自持有隔离的工具集。</span></p>
143 <code class="feat-chip">$ reasonix mcp add · ~/.reasonix/skills/</code>
144 </div>
145 <div class="feat reveal" style="--d:0.06s">
146 <span class="tag">05 / single binary</span>
147 <h3><span class="l-en">One file, no runtime</span><span class="l-zh">一个文件,零运行时</span></h3>
148 <p><span class="l-en">CGO-free Go, cross-compiled for darwin/linux/windows × amd64/arm64. Nothing to install underneath it.</span><span class="l-zh">无 CGO 的 Go,交叉编译覆盖 darwin/linux/windows × amd64/arm64。底下不需要装任何东西。</span></p>
149 </div>
150 <div class="feat reveal" style="--d:0.1s">
151 <span class="tag">06 / local-first</span>
152 <h3><span class="l-en">Your key, your machine</span><span class="l-zh">你的 Key,你的机器</span></h3>
153 <p><span class="l-en">Bring your own DeepSeek key. The engine runs locally — your code goes to the model you configured and nowhere else. MIT licensed, developed in public.</span><span class="l-zh">使用你自己的 DeepSeek Key。引擎在本地运行——代码只发往你配置的模型,不去别处。MIT 许可,公开开发。</span></p>
154 </div>
155 </div>
156 </div>
157 </section>
158
159 <div class="divider" aria-hidden="true"><span class="line"></span></div>
160
161 <section id="surfaces">
162 <div class="wrap">
163 <div class="sec-head split reveal">
164 <span class="kicker"><span class="l-en">Surfaces</span><span class="l-zh">使用形态</span></span>
165 <h2><span class="l-en">One engine. <span class="em">Four ways in.</span></span><span class="l-zh">同一个引擎。<span class="em">四个入口。</span></span></h2>
166 <p><span class="l-en">Not four products — one local engine behind four front ends. Sessions, permissions, skills and MCP servers are shared, so a task you start in the terminal is waiting for you in the desktop app.</span><span class="l-zh">不是四个产品,而是一个本地引擎配四个前端。会话、权限、技能与 MCP 服务器都共享——在终端起的任务,打开桌面端就在那儿等着。</span></p>
167 </div>
168 <div class="surf-grid">
169 <div class="surf reveal">
170 <div class="surf-art" aria-hidden="true">
171 <span class="surf-win cli">
172 <i class="bar"></i>
173 <span class="body"><i class="l" style="--w:62%"></i><i class="l" style="--w:44%"></i><i class="l ok" style="--w:70%"></i><i class="l" style="--w:38%"></i><i class="cur"></i></span>
174 </span>
175 </div>
176 <h3><span class="l-en">Terminal</span><span class="l-zh">终端</span></h3>
177 <p><span class="l-en">Full-screen TUI — diff review, approvals, slash commands.</span><span class="l-zh">全屏 TUI——diff 审阅、审批、斜杠命令。</span></p>
178 <code>reasonix</code>
179 </div>
180 <div class="surf reveal" style="--d:0.06s">
181 <div class="surf-art" aria-hidden="true">
182 <span class="surf-win app">
183 <i class="bar"></i>
184 <span class="body"><span class="side"><i></i><i></i><i></i></span><span class="main"><i class="l" style="--w:80%"></i><i class="l" style="--w:55%"></i><i class="l ok" style="--w:66%"></i></span></span>
185 </span>
186 </div>
187 <h3><span class="l-en">Desktop app</span><span class="l-zh">桌面端</span></h3>
188 <p><span class="l-en">Sessions side by side, settings, approvals, auto-update.</span><span class="l-zh">多会话并列、设置、审批与自动更新。</span></p>
189 <code><span class="l-en">macOS · Windows · Linux</span><span class="l-zh">macOS · Windows · Linux</span></code>
190 </div>
191 <div class="surf reveal" style="--d:0.12s">
192 <div class="surf-art" aria-hidden="true">
193 <span class="surf-win web">
194 <i class="bar url"></i>
195 <span class="body"><i class="l" style="--w:72%"></i><i class="l" style="--w:48%"></i><i class="l ok" style="--w:60%"></i><i class="l" style="--w:36%"></i></span>
196 </span>
197 </div>
198 <h3><span class="l-en">Browser</span><span class="l-zh">浏览器</span></h3>
199 <p><span class="l-en">A local web UI on your own machine. Add auth before you expose it.</span><span class="l-zh">跑在你自己机器上的本地 Web UI。对外暴露前先开认证。</span></p>
200 <code>reasonix serve</code>
201 </div>
202 <div class="surf reveal" style="--d:0.18s">
203 <div class="surf-art" aria-hidden="true">
204 <span class="surf-win ide">
205 <i class="bar"></i>
206 <span class="body"><span class="tree"><i></i><i></i><i></i><i></i></span><span class="main"><i class="l" style="--w:70%"></i><i class="l add" style="--w:52%"></i><i class="l add" style="--w:44%"></i><i class="l" style="--w:64%"></i></span></span>
207 </span>
208 </div>
209 <h3><span class="l-en">Your editor</span><span class="l-zh">你的编辑器</span></h3>
210 <p><span class="l-en">VS Code and VSCodium via the extension; anything else that speaks ACP.</span><span class="l-zh">通过扩展接入 VS Code 与 VSCodium;其他支持 ACP 的编辑器同样可用。</span></p>
211 <code>reasonix acp</code>
212 </div>
213 </div>
214 </div>
215 </section>
216
217 <div class="divider" aria-hidden="true"><span class="line"></span></div>
218
219 <section>
220 <div class="wrap">
221 <div class="steps">
222 <div class="step reveal">
223 <span class="num">01</span>
224 <h3><span class="l-en">Install</span><span class="l-zh">安装</span></h3>
225 <p><span class="l-en">One command. macOS, Linux, Windows, and WSL.</span><span class="l-zh">一条命令,支持 macOS、Linux、Windows 与 WSL。</span></p>
226 <code>npm i -g reasonix</code>
227 </div>
228 <div class="step reveal" style="--d:0.08s">
229 <span class="num">02</span>
230 <h3><span class="l-en">Point it at a repo</span><span class="l-zh">指向你的仓库</span></h3>
231 <p><span class="l-en">It maps the codebase once and keeps that map for the rest of the session.</span><span class="l-zh">只做一次代码库测绘,这份地图在整场会话里一直有效。</span></p>
232 <code>cd your-project &amp;&amp; reasonix</code>
233 </div>
234 <div class="step reveal" style="--d:0.16s">
235 <span class="num">03</span>
236 <h3><span class="l-en">Open the web UI</span><span class="l-zh">打开 Web UI</span></h3>
237 <p><span class="l-en">Keep it local, or add token/password auth before sharing a tunnel or remote port.</span><span class="l-zh">本机使用保持默认;通过 tunnel 或远程端口分享前,先启用 token/password 认证。</span></p>
238 <code>reasonix serve --auth token</code>
239 </div>
240 <div class="step reveal" style="--d:0.24s">
241 <span class="num">04</span>
242 <h3><span class="l-en">Leave it running</span><span class="l-zh">让它一直跑着</span></h3>
243 <p><span class="l-en">Queue tasks, review diffs, resume anytime. The session never goes cold.</span><span class="l-zh">排任务、看 diff、随时恢复。会话永不冷却。</span></p>
244 <code>› refactor the auth flow</code>
245 </div>
246 </div>
247 </div>
248 </section>
249
250 <div class="divider" aria-hidden="true"><span class="line"></span></div>
251
252 <section id="community">
253 <div class="wrap">
254 <div class="sec-head split reveal">
255 <span class="kicker"><span class="l-en">Community</span><span class="l-zh">社区共建</span></span>
256 <h2><span class="l-en">Built in the open, with <span class="em">{community.contributors} contributors.</span></span><span class="l-zh">开源共建,感谢 <span class="em">{community.contributors} 位贡献者。</span></span></h2>
257 <p><span class="l-en">Reasonix is MIT-licensed and developed in public. Every issue, every PR, every late-night review made it what it is — thank you.</span><span class="l-zh">Reasonix 采用 MIT 许可,开放开发。每一个 issue、每一条 PR、每一次深夜 review,成就了今天的它——谢谢你们。</span></p>
258 </div>
259 </div>
260 <div class="crew reveal" aria-hidden="false">
261 <div class="crew-row">
262 <span class="crew-set">
263 {rowA.map((c, i) => (
264 <a class={avClass(i)} data-h={`@${c.login}`} href={c.url} target="_blank" rel="noreferrer" aria-label={c.login}>
265 <img src={c.avatar} alt={c.login} loading="lazy" width="60" height="60" />
266 </a>
267 ))}
268 </span>
269 </div>
270 <div class="crew-row rev">
271 <span class="crew-set">
272 {rowB.map((c, i) => (
273 <a class={avClass(i + 3)} data-h={`@${c.login}`} href={c.url} target="_blank" rel="noreferrer" aria-label={c.login}>
274 <img src={c.avatar} alt={c.login} loading="lazy" width="60" height="60" />
275 </a>
276 ))}
277 <a class="av you" data-h="this could be you · 虚位以待" href={`${repo}/issues`} target="_blank" rel="noreferrer">+</a>
278 </span>
279 </div>
280 </div>
281 <div class="wrap">
282 <div class="crew-cta reveal">
283 <a class="btn btn-dark" href={repo}><span class="l-en">Contribute on GitHub</span><span class="l-zh">在 GitHub 上参与贡献</span></a>
284 <a class="btn btn-ghost" href={`${repo}/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22`}><span class="l-en">Good first issues →</span><span class="l-zh">新手友好任务 →</span></a>
285 </div>
286 <div class="crew-note reveal"><span class="l-en">{fmtN(community.stars)} stars · {fmtN(community.mergedPrs)} merged PRs · every avatar above is a real contributor</span><span class="l-zh">{fmtN(community.stars)} stars · {fmtN(community.mergedPrs)} 个已合并 PR · 上面每个头像都是一位真实贡献者</span></div>
287 </div>
288 </section>
289
290 <section class="cta" id="start">
291 <h2 class="reveal"><span class="l-en">Start a session that <span class="em">lasts.</span></span><span class="l-zh">开启一场<span class="em">不会中断</span>的会话。</span></h2>
292 <p class="reveal" style="--d:0.08s"><span class="l-en">Open source under MIT. Bring your own DeepSeek API key — your code never leaves your machine and the model.</span><span class="l-zh">MIT 开源。使用你自己的 DeepSeek API Key——代码不会离开你的机器与模型。</span></p>
293
294 <div class="dl reveal" style="--d:0.14s">
295 <div class="dl-tabs" role="tablist" aria-label="Download method / 下载方式">
296 <button class="dl-tab active" id="download-tab-desktop" type="button" data-pane="desktop" role="tab" aria-controls="download-pane-desktop" aria-selected="true" tabindex="0"><span class="l-en">Desktop</span><span class="l-zh">桌面端</span></button>
297 <button class="dl-tab" id="download-tab-cli" type="button" data-pane="cli" role="tab" aria-controls="download-pane-cli" aria-selected="false" tabindex="-1">CLI</button>
298 <button class="dl-tab" id="download-tab-npm" type="button" data-pane="npm" role="tab" aria-controls="download-pane-npm" aria-selected="false" tabindex="-1">npm</button>
299 <button class="dl-tab" id="download-tab-brew" type="button" data-pane="brew" role="tab" aria-controls="download-pane-brew" aria-selected="false" tabindex="-1">Homebrew</button>
300 <button class="dl-tab" id="download-tab-vscode" type="button" data-pane="vscode" role="tab" aria-controls="download-pane-vscode" aria-selected="false" tabindex="-1"><span class="l-en">Editor extension</span><span class="l-zh">编辑器扩展</span></button>
301 </div>
302
303 <div class="dl-pane active" id="download-pane-desktop" data-pane="desktop" role="tabpanel" aria-labelledby="download-tab-desktop">
304 <div class="release-channel-summary" data-release-summary="desktop" aria-live="polite">
305 <span><span class="l-en">Desktop download <span data-release-version="desktop">{desktopVersionLabel}</span></span><span class="l-zh">桌面端下载 <span data-release-version="desktop">{desktopVersionLabel}</span></span></span>
306 </div>
307 <div class="os-grid">
308 <div class="os-card" data-os="mac">
309 <h4>macOS</h4>
310 <span class="meta"><span class="l-en">Universal DMG · Apple Silicon &amp; Intel</span><span class="l-zh">通用 DMG · Apple Silicon 与 Intel</span></span>
311 <a class="btn btn-light" href={desktopStableFallback} data-desktop-asset="Reasonix-darwin-universal.dmg"><span class="l-en">Download Universal · <span data-release-version="desktop">{desktopVersionLabel}</span></span><span class="l-zh">下载通用版 · <span data-release-version="desktop">{desktopVersionLabel}</span></span></a>
312 {!desktopDownloadVersion && <div class="os-options" aria-label="macOS alternate downloads">
313 <a href={desktopStableFallback} data-desktop-asset="Reasonix-darwin-arm64.dmg">Apple Silicon DMG</a>
314 <a href={desktopStableFallback} data-desktop-asset="Reasonix-darwin-amd64.dmg">Intel DMG</a>
315 </div>}
316 </div>
317 <div class="os-card" data-os="win">
318 <h4>Windows</h4>
319 <span class="meta"><span class="l-en">Installer · Windows 10+ · x64 / ARM64</span><span class="l-zh">安装器 · Windows 10+ · x64 / ARM64</span></span>
320 <a class="btn btn-light" href={desktopStableFallback} data-desktop-asset="Reasonix-windows-amd64-installer.exe"><span class="l-en">Download · <span data-release-version="desktop">{desktopVersionLabel}</span></span><span class="l-zh">下载 · <span data-release-version="desktop">{desktopVersionLabel}</span></span></a>
321 <div class="os-options" aria-label="Windows alternate downloads">
322 <a href={desktopStableFallback} data-desktop-asset="Reasonix-windows-arm64-installer.exe">ARM64 installer</a>
323 <a href={desktopStableFallback} data-desktop-asset="Reasonix-windows-amd64.zip">Portable zip</a>
324 </div>
325 </div>
326 <div class="os-card" data-os="linux">
327 <h4>Linux</h4>
328 <span class="meta"><span class="l-en">Debian / Ubuntu package · amd64</span><span class="l-zh">Debian / Ubuntu 安装包 · amd64</span></span>
329 <a class="btn btn-light" href={desktopStableFallback} data-desktop-asset="Reasonix-linux-amd64.deb"><span class="l-en">Download .deb · <span data-release-version="desktop">{desktopVersionLabel}</span></span><span class="l-zh">下载 .deb · <span data-release-version="desktop">{desktopVersionLabel}</span></span></a>
330 <div class="os-options" aria-label="Linux alternate downloads">
331 <a href={desktopStableFallback} data-desktop-asset="Reasonix-linux-amd64.tar.gz">Generic tar.gz</a>
332 <a href={`${repo}/releases`}><span class="l-en">All releases</span><span class="l-zh">全部版本</span></a>
333 </div>
334 </div>
335 </div>
336 <div class="dl-note"><span class="l-en">Reasonix checks official releases automatically · <a href={desktopNotes} data-release-notes="desktop">release notes →</a> · <a href={`${repo}/releases`}>all releases →</a></span><span class="l-zh">Reasonix 会自动检查正式版本 · <a href={desktopNotes} data-release-notes="desktop">更新日志 →</a> · <a href={`${repo}/releases`}>全部版本 →</a></span></div>
337 <div class="dl-help">
338 <strong><span class="l-en">macOS opens with a quarantine warning?</span><span class="l-zh">macOS 提示无法打开或已损坏?</span></strong>
339 <span><span class="l-en">If the app was installed from the official download and placed in <code>/Applications</code>, quit Reasonix, then run:</span><span class="l-zh">如果来自官网下载并已放入 <code>/Applications</code>,先退出 Reasonix,再运行:</span></span>
340 <code>sudo xattr -rd com.apple.quarantine /Applications/Reasonix.app</code>
341 <button type="button" data-copy="sudo xattr -rd com.apple.quarantine /Applications/Reasonix.app">Copy</button>
342 <a href={`${base}/docs/#macos-quarantine`}><span class="l-en">When to use this →</span><span class="l-zh">查看适用场景 →</span></a>
343 </div>
344 {!desktopDownloadVersion && <div class="dl-help">
345 <strong><span class="l-en">Updating from 1.38.3 or earlier?</span><span class="l-zh">从 1.38.3 或更早版本升级?</span></strong>
346 <span><span class="l-en">The in-app updater cannot cross the Electron shell change and reports <code>unsupported install_layout "electron-v1"</code>. Quit Reasonix, then install the full package above (Windows installer, macOS DMG, Linux .deb or tar.gz) over the current version. Configuration, sessions and history are kept.</span><span class="l-zh">应用内更新无法跨越 Electron 壳切换,会提示 <code>unsupported install_layout "electron-v1"</code>。请退出 Reasonix,然后用上方的完整安装包(Windows 安装程序、macOS DMG、Linux .deb 或 tar.gz)覆盖安装。配置、会话与历史记录原样保留。</span></span>
347 </div>}
348 </div>
349
350 <div class="dl-pane" id="download-pane-cli" data-pane="cli" role="tabpanel" aria-labelledby="download-tab-cli" hidden>
351 <div class="release-channel-summary" data-release-summary="cli" aria-live="polite">
352 <span><span class="l-en">Current official version <span data-release-version="cli">latest</span></span><span class="l-zh">当前正式版本 <span data-release-version="cli">latest</span></span></span>
353 </div>
354 <span class="install release-upgrade-command"><span class="ps1">$</span><span data-release-command="cli">reasonix upgrade</span><button data-copy="reasonix upgrade">Copy</button></span>
355 <div class="os-grid cli-os-grid">
356 <div class="os-card" data-os="mac">
357 <h4>macOS</h4>
358 <span class="meta">Apple Silicon / Intel · tar.gz</span>
359 <a class="btn btn-light" href={repoReleases} data-cli-asset="reasonix-darwin-arm64.tar.gz"><span class="l-en">Apple Silicon · <span data-release-version="cli">latest</span></span><span class="l-zh">Apple Silicon · <span data-release-version="cli">latest</span></span></a>
360 <div class="os-options"><a href={repoReleases} data-cli-asset="reasonix-darwin-amd64.tar.gz">Intel tar.gz</a></div>
361 </div>
362 <div class="os-card" data-os="win">
363 <h4>Windows</h4>
364 <span class="meta">Windows 10+ · x64 / ARM64 · zip</span>
365 <a class="btn btn-light" href={repoReleases} data-cli-asset="reasonix-windows-amd64.zip"><span class="l-en">Download x64 · <span data-release-version="cli">latest</span></span><span class="l-zh">下载 x64 · <span data-release-version="cli">latest</span></span></a>
366 <div class="os-options"><a href={repoReleases} data-cli-asset="reasonix-windows-arm64.zip">ARM64 zip</a></div>
367 </div>
368 <div class="os-card" data-os="linux">
369 <h4>Linux</h4>
370 <span class="meta">amd64 / ARM64 · tar.gz</span>
371 <a class="btn btn-light" href={repoReleases} data-cli-asset="reasonix-linux-amd64.tar.gz"><span class="l-en">Download amd64 · <span data-release-version="cli">latest</span></span><span class="l-zh">下载 amd64 · <span data-release-version="cli">latest</span></span></a>
372 <div class="os-options"><a href={repoReleases} data-cli-asset="reasonix-linux-arm64.tar.gz">ARM64 tar.gz</a></div>
373 </div>
374 </div>
375 <div class="dl-note"><span class="l-en"><a href={repoReleases} data-cli-asset="SHA256SUMS">SHA256SUMS →</a> · <a href={`${base}/changelog/`} data-release-notes="cli">release notes →</a> · npm and Homebrew track the same official version</span><span class="l-zh"><a href={repoReleases} data-cli-asset="SHA256SUMS">SHA256SUMS →</a> · <a href={`${base}/changelog/`} data-release-notes="cli">更新日志 →</a> · npm 与 Homebrew 跟随同一正式版本</span></div>
376 </div>
377
378 <div class="dl-pane" id="download-pane-vscode" data-pane="vscode" role="tabpanel" aria-labelledby="download-tab-vscode" hidden>
379 <div class="os-grid editor-grid">
380 <div class="os-card editor-card editor-card--primary">
381 <span class="os-chip"><span class="l-en">recommended</span><span class="l-zh">推荐</span></span>
382 <h4>Visual Studio Marketplace</h4>
383 <span class="meta"><span class="l-en">For Microsoft Visual Studio Code</span><span class="l-zh">适用于微软 Visual Studio Code</span></span>
384 <a class="btn btn-dark" href={vscodeMarketplace} target="_blank" rel="noreferrer"><span class="l-en">Install extension</span><span class="l-zh">安装扩展</span></a>
385 </div>
386 <div class="os-card editor-card">
387 <h4>Open VSX Registry</h4>
388 <span class="meta"><span class="l-en">For VSCodium, Eclipse Theia, and compatible editors</span><span class="l-zh">适用于 VSCodium、Eclipse Theia 及兼容编辑器</span></span>
389 <a class="btn btn-light" href={openVsx} target="_blank" rel="noreferrer"><span class="l-en">Install from Open VSX</span><span class="l-zh">从 Open VSX 安装</span></a>
390 </div>
391 </div>
392 <div class="dl-note editor-note"><span class="l-en">Extension ID <code>SivanLiu.reasonix-agent</code> · requires Reasonix 1.0+ installed and configured locally · the extension connects to <code>reasonix acp</code> and does not bundle the CLI · <a href={vscodeExtensionRepo}>source code →</a></span><span class="l-zh">扩展 ID <code>SivanLiu.reasonix-agent</code> · 需要先在本机安装并配置 Reasonix 1.0+ · 扩展连接 <code>reasonix acp</code>,不内置 CLI · <a href={vscodeExtensionRepo}>查看源码 →</a></span></div>
393 </div>
394
395 <div class="dl-pane" id="download-pane-npm" data-pane="npm" role="tabpanel" aria-labelledby="download-tab-npm" hidden>
396 <span class="install"><span class="ps1">$</span>npm i -g reasonix<button data-copy="npm i -g reasonix">Copy</button></span>
397 <div class="chan">
398 <div class="chan-row rec">
399 <code>npm i -g reasonix</code><span class="v"><span class="rxv">{goVer}</span></span>
400 <span class="s"><span class="l-en">Reasonix 1.x · one binary · no Node · actively developed</span><span class="l-zh">Reasonix 1.x · 单二进制 · 无需 Node · 主力开发中</span></span>
401 <span class="chan-badge"><span class="l-en">recommended</span><span class="l-zh">推荐</span></span>
402 </div>
403 <div class="chan-row">
404 <code>npm i -g reasonix@0.53.2</code><span class="v">v0.53.2</span>
405 <span class="s"><span class="l-en">deprecated 0.x line · no longer maintained</span><span class="l-zh">已废弃的 0.x 线 · 不再维护</span></span>
406 <span class="chan-badge pre"><span class="l-en">deprecated</span><span class="l-zh">已废弃</span></span>
407 </div>
408 </div>
409 <div class="dl-note"><span class="l-en">macOS / Linux / Windows / WSL · npm <span class="mono">latest</span> tracks the current official release · <a class="rxnotes" href={`${base}/changelog/`}><span class="rxv">{goVer}</span> release notes →</a></span><span class="l-zh">macOS / Linux / Windows / WSL · npm <span class="mono">latest</span> 指向当前正式版 · <a class="rxnotes" href={`${base}/changelog/`}><span class="rxv">{goVer}</span> 更新说明 →</a></span></div>
410 </div>
411
412 <div class="dl-pane" id="download-pane-brew" data-pane="brew" role="tabpanel" aria-labelledby="download-tab-brew" hidden>
413 <span class="install"><span class="ps1">$</span>brew install esengine/reasonix/reasonix<button data-copy="brew install esengine/reasonix/reasonix">Copy</button></span>
414 <div class="dl-note"><span class="l-en"><span class="rxv">{goVer}</span> (Go rewrite) · macOS &amp; Linux · update with <span class="mono">brew upgrade</span></span><span class="l-zh"><span class="rxv">{goVer}</span>(Go 重写)· macOS 与 Linux · 通过 <span class="mono">brew upgrade</span> 更新</span></div>
415 </div>
416 </div>
417 </section>
418 </main>
419
420 <footer>
421 <div class="foot-inner">
422 <a class="brand" href={`${base}/`}><img src={`${base}/logo.svg`} alt="Reasonix logo" /><span>Reasonix</span></a>
423 <span><span class="l-en">© 2026 Reasonix · MIT licensed · built to be left running.</span><span class="l-zh">© 2026 Reasonix · MIT 许可 · 为常驻运行而生。</span></span>
424 <nav class="foot-links">
425 <a href={repo}>GitHub</a>
426 <a href="https://www.npmjs.com/package/reasonix">npm</a>
427 <a href="https://platform.deepseek.com" target="_blank" rel="noreferrer">DeepSeek</a>
428 <a href={`${base}/docs/`}><span class="l-en">Docs</span><span class="l-zh">文档</span></a>
429 <a href="#start"><span class="l-en">Install</span><span class="l-zh">安装</span></a>
430 <a href="https://crash.reasonix.io/stats" rel="nofollow"><span class="l-en">Stats</span><span class="l-zh">统计</span></a>
431 </nav>
432 </div>
433 <div class="foot-sub">
434 <span><span class="l-en">Built to be left running.</span><span class="l-zh">为长时间常驻运行而造。</span></span>
435 <span class="ver"><span class="rxv">{goVer}</span> · official</span>
436 </div>
437 </footer>
438
439 <script>
440
441 if (!matchMedia('(prefers-reduced-motion: reduce)').matches) {
442 document.querySelectorAll('.install-option').forEach((col) => {
443 const canvas = col.querySelector('.particle-canvas');
444 if (!canvas) return;
445 const ctx = canvas.getContext('2d');
446 let particles = [];
447 let rafId = null;
448
449 canvas.style.willChange = 'transform';
450
451 function resize() {
452 const r = col.getBoundingClientRect();
453 canvas.width = Math.max(1, Math.round(r.width * devicePixelRatio));
454 canvas.height = Math.max(1, Math.round(r.height * devicePixelRatio));
455 ctx.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 0);
456 }
457 resize();
458
459 function loop() {
460 const r = col.getBoundingClientRect();
461 const isDark = document.documentElement.dataset.theme === 'dark';
462 const base = isDark ? '255,255,255' : '0,0,0';
463 ctx.clearRect(0, 0, r.width, r.height);
464 particles = particles.filter((p) => p.life > 0);
465 particles.forEach((p) => {
466 p.x += p.vx;
467 p.y += p.vy;
468 p.vy += 0.01;
469 p.life -= p.decay;
470 ctx.beginPath();
471 ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);
472 ctx.fillStyle = `rgba(${base},${(p.life * 0.28).toFixed(3)})`;
473 ctx.fill();
474 });
475 rafId = particles.length ? requestAnimationFrame(loop) : null;
476 }
477
478 col.addEventListener('mousemove', (e) => {
479 const r = col.getBoundingClientRect();
480 const mx = e.clientX - r.left;
481 const my = e.clientY - r.top;
482
483 if (particles.length > 80) return;
484
485 for (let i = 0; i < 2; i++) {
486 particles.push({
487 x: mx + (Math.random() - 0.5) * 20,
488 y: my + (Math.random() - 0.5) * 20,
489 vx: (Math.random() - 0.5) * 1.2,
490 vy: (Math.random() - 0.5) * 1.2 - 0.3,
491 life: 1,
492 decay: 0.015 + Math.random() * 0.015,
493 size: 1.2 + Math.random() * 1.8,
494 });
495 }
496 if (!rafId) loop();
497 });
498
499 window.addEventListener('resize', resize);
500 });
501 }
502 </script>
503 </Base>
504
504 lines Plain Text