DeepSeek-Reasonix:基于 DeepSeek 的 AI 编码助手项目

用户可借助该项目进行代码开发、任务执行及会话管理,它具备缓存优化降低成本、多模式交互(编码/聊天)、技能扩展和桌面客户端等功能,专注提升开发效率与成本控制。【此简介由AI生成】

分支4Tags167
文件最后提交记录最后更新时间
fix(release): split macOS dmg by arch (#2050)2 天前
docs: sync ARCHITECTURE.md and benchmark pricing to match code (#1720) Three stale-doc fixes: - ARCHITECTURE.md §4.3 — replace removed /pro single-turn arming with the current /model flash|pro + settings.json model selection. Note the removal in 0.50.0 (#1657, #1630). - ARCHITECTURE.md §4.4 — replace the never-existed FAILURE_ESCALATION_THRESHOLD counter with the actual <<<NEEDS_PRO>>> model self-report mechanism. No failure-counter; purely LLM-initiated, no-op on pro tier. - benchmarks/real-world-cache/README.md — fix 10× pricing error in v4-flash cache-hit ($0.028 → $0.0028) and entirely wrong v4-pro pricing ($0.139/1.667/3.333 → $0.003625/0.435/0.87). Recalculated cost tables; headline 99.82% hit ratio unchanged, savings now correctly show ~97.7% (flash) / ~98.9% (pro). Thanks @FriendsHL for catching this — the benchmark pricing in particular is the public cache-first defense link, the old numbers would have been embarrassing.4 天前
fix(i18n): convert ja.ts files to spread-fallback pattern across all three layers (#2216) - dashboard/src/i18n/ja.ts: rewrite from standalone 1333-line file to spread pattern with ...en fallback; keep only 5 translated sections (app, changes, common, settings, chat), remove ~30 English-copy sections - desktop/src/i18n/ja.ts: add ...en.sectionName spreads to all 30+ sections including nested objects (app.toast, app.cmd, app.skill, app.titlebar, etc.) - src/i18n/JA.ts: add import { EN } from "./EN.js", ...EN top-level spread, and ...EN.sectionName spreads to all 46+ sections including deeply nested objects (slash.*, handlers.*, planFlow.*, ui.*, wizard.themeCaption, modelPicker.effortDesc) Missing keys now fall back to English instead of returning undefined. Co-authored-by: HUQIANTAO <HUQIANTAO@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>16 小时前
feat(tokenizer): port DeepSeek V4 chat template for accurate prompt_tokens (#981) - Apply V4 chat template (BOS/EOS, USER/ASSISTANT specials, generation suffix) so countTokens tracks the API's prompt_tokens - Render assistant tool_calls in DSML, merge tool results into the next user turn - Render tool specs via TOOLS_TEMPLATE in estimateRequestTokens instead of raw JSON - Refresh bundled tokenizer.json.gz to V4 vocab (added-token IDs shift accordingly) - Switch context-manager per-message fold ordering to content-only counts Closes #98213 天前
fix(desktop): clean up animations — remove breathing lights, fix broken keyframes (#2267) - Fix undefined @keyframes 'caret' → 'stream-caret' (shell running caret was broken) - Fix undefined @keyframes 'fade' → 'fade-in' (about modal mask was broken) - Remove shimmer animation from 'Running' label and ThinkingPill text (double animation with dots) - Remove pulse-soft breathing from PendingUserMsg background - Remove yolo-pulse breathing from YOLO mode border - Unify duplicate @keyframes shimmer-bg into shim - Remove dead keyframes: pulse-soft, yolo-pulse - Wire tab status dots to actual busy/idle state (was hardcoded to 'running') Co-authored-by: HUQIANTAO <HUQIANTAO@users.noreply.github.com>11 小时前
fix(telegram): bind callback confirmations (#2222) * fix(telegram): bind callback confirmations * docs(telegram): explain remote setup16 小时前
feat: Esc cancels immediately · native fs tools · cursor fix · slow_count demo (0.4.9) Three reported issues rolled into one release: 1. Esc now truly cancels in-flight work. AbortController threaded through every I/O path: - DeepSeekClient.chat/.stream signal wired at every call site - ToolRegistry.dispatch gets a ToolCallContext { signal } - McpClient.callTool({ signal }) fires notifications/cancelled AND rejects the pending promise immediately — no waiting on subprocess for a graceful finish - bridgeMcpTools forwards ctx.signal down 2. Built-in filesystem tools replace the @modelcontextprotocol/server-filesystem subprocess inside reasonix code. 10 native tools, sandboxed, R1-friendly schemas. The new edit_file takes a flat SEARCH/REPLACE shape instead of the JSON-in-string array that was the single biggest driver of R1 DSML hallucinations in 0.4.x. Per-call latency drops from ~500ms–2s (Windows subprocess IPC) to <10ms (direct fs). 3. PromptInput placeholder cursor now renders at position 0 (before the hint text), not after it. 4. Bonus: slow_count demo tool in examples/mcp-server-demo.ts emits real notifications/progress frames so the progress-bar plumbing from 0.4.8 is testable end-to-end. ChatOptions grows seedTools: ToolRegistry so callers can pre-register tools and still layer MCP on top. ToolCallContext is re-exported for library users writing abortable tools. 416 tests (+29: filesystem-tools +26, mcp abort +3). 1 个月前
fix(ink): scroll jitter on rapid mouse wheel (#2076) (#2095) * fix(ink): add dependency arrays to useBoxMetrics and useTerminalViewport to prevent scroll jitter (#2076) - useBoxMetrics: add [ref.current] deps so measurement only runs when element changes - useTerminalViewport: add [elementRef.current, terminalSize] deps to skip expensive parent-chain walk on every render - App: memoize TerminalSizeContext.Provider value to keep reference stable During rapid mouse wheel scrolling (10-20 events/100ms on Windows), the missing dependency arrays caused each wheel event to trigger 3-5 cascading renders (30-80 renders/100ms), producing visible text jitter. * fix(ink): address PR #2095 review — remove ref.current anti-pattern from hook deps - useBoxMetrics: remove [ref.current] dep array (React anti-pattern); add 16ms throttle to limit measurement frequency during rapid scrolling - useTerminalViewport: remove elementRef.current from deps, keep only [terminalSize] as the reactive dependency - Add regression test verifying useBoxMetrics re-measures on parent resize15 小时前
fix(cli): preserve bundled CLI version metadata (#1997)2 天前
fix(web): apply 15s timeout to all search engines (#2252 follow-up) (#2259) #2252 added a 15s AbortSignal.timeout to searchBing; the other engines (Searxng, Metaso, Baidu, Tavily, Perplexity, Exa, Ollama, Brave) still relied on opts.signal only and could hang indefinitely. Extract searchSignal() helper that combines the caller's abort signal with a per-request SEARCH_TIMEOUT_MS cap, and apply it uniformly.12 小时前
feat(weixin): render ilink qr in terminal (#2246)12 小时前
perf(ui): index-backed mutateCard + O(n) plan.drop + elide cursor (#1769) Three hot-path fixes in the cards reducer measured to cut per-event cost dramatically on long sessions: - mutateCard now does a Map<CardId, number> lookup instead of a full state.cards.findIndex scan. Each streaming/reasoning/tool chunk used to walk the whole transcript; on a 2000-card session that cost ~12.7ms per 1000 chunks, now ~1.7ms (86% faster). - plan.drop replaces a .map() containing a .slice(i+1).some() with a single backward scan to find the last active plan, then one in-place patch. 1000-card session: ~65ms -> ~0.34ms per drop (99.5% faster). - elideOldCardContent now starts from a persistent elideCursor that advances past stubbed and immutable-kind cards, so repeated appends no longer re-scan all prior elision-zone cards. 500 appends on a 1000-card session: ~3.1ms -> ~1.6ms (48% faster). The cardIndex map is mutated in place on append; structural changes (session.fork, session.reset) rebuild it. tools/bench-reducer-hotpath.mjs keeps the inlined old vs new comparison as a regression check. All 3694 existing reducer / memory-budget / hydrate tests pass. Co-authored-by: reasonix <reasonix@deepseek.com>4 天前
feat: add Telegram channel support (#2168)19 小时前
chore: add .gitattributes to force LF (unblocks publish on Windows) Without this, a Windows checkout with autocrlf=true lands the working tree with CRLF even though the repo stores LF. Biome rejects CRLF, so prepublishOnly's npm run lint step fails on tests/resolve.test.ts. Pinning eol=lf for all text files makes the working copy match what Biome expects and what the repo stores, on every platform. 1 个月前
fix(desktop): keep sessions alive when closing window (#2144) * fix(desktop): keep sessions alive when closing window * fix(desktop): make close-to-tray opt-in * chore: ignore local agent notes19 小时前
chore(release): 0.52.0 3 天前
feat(readme): visual polish — hero terminal · stats · feature grid (#102) * feat(readme): hero terminal SVG matches design-doc aesthetic Replace the plaintext code-fence demo of reasonix code with a self-contained SVG that mirrors the design-doc terminal mockup (design/agent-tui-terminal.html) and the website palette: dark chrome, traffic-light dots, JetBrains Mono, ANSI-style color roles (cyan prompt, purple assistant, amber path, coral SEARCH, green REPLACE). Bilingual: a separate zh-CN variant carries the Chinese user message and the localized pending-edit footer. * fix(readme): hero terminal shows unified diff, not raw SEARCH/REPLACE The previous SVG painted the model's raw <<<<<<< SEARCH / ======= / >>>>>>> REPLACE markers, but those are an internal protocol — the TUI actually renders pending edits via formatPendingPreview from src/cli/ui/edit-history.ts, which produces a unified diff with -/+ prefixed lines and a path (-N +M lines) file header. Match that format faithfully; shrink the canvas to 880x360 since the diff is more compact than the marker block was. * docs(readme): tighten prose, replace feature wall with SVG grid Two new design-token SVGs continue the hero-terminal aesthetic so the README has consistent visual rhythm instead of a wall of ### heading subsections. - Add docs/hero-stats.svg (+ zh): three gradient numbers (94% live cache hit · ~30× cheaper / task · MIT) below the hero tagline. - Add docs/feature-grid.svg (+ zh): 6-card 3x2 grid replacing the eight ### subsections that ran 25+ lines of wall text. Prose cleanup: - Drop the --system-append subsection; it's documented in reasonix code --help, doesn't belong in the hero quickstart. - Drop the "Edits stay in memory..." line redundant with the terminal SVG that already shows the /apply gate. - Drop the stale "1665 tests" count from the contributor snippet — the number drifts; "tests" alone is enough. Net: 175 → 132 lines per README, four anchored visual blocks (logo · stats · terminal · features). * docs: publish design mockups under docs/design/ so links render The README points at the dashboard and TUI design mockups, but the links resolved to repo paths — GitHub serves .html files in repos as syntax-highlighted source, never as a rendered page. Anyone clicking through hit a wall of HTML instead of the intended preview. Move the two mockups into docs/design/ (already published via GitHub Pages) and switch the README links to absolute https://esengine.github.io/reasonix/design/... URLs. Now click- throughs land on the rendered mockup, and the links work the same on github.com, on the npm registry, and anywhere else the README gets reposted. dashboard/app.css's "anchored to ..." comment updated to track the new location. * docs(readme): trim comparison table to differentiating rows only Drop the 7 universally-yes rows (plan mode, edit review, MCP, skills, hooks, sandbox, surface) and keep the 6 where Reasonix is actually different from peers: backend, cost, license, cache-hit %, dashboard, sessions. Add a one-line note pointing at the feature grid for the rest, so the information isn't lost — just reordered into the section that's already explaining each feature in detail. * docs(readme): unify hero block to a single centered column Designer-pass cleanup. The hero used to fracture between centered (logo, tagline, lang) and left-aligned (H1, badges, description), making the eye jump as it scanned downward. - Drop the redundant # Reasonix H1 — the wordmark in logo.svg already says it; the H1 was duplication, not hierarchy. Astro, Bun, Tailwind and similar polished READMEs do logo OR title, not both. - Drop the <em> tagline; the description paragraph below conveyed 90% the same info more concretely. Pick one, not two. - Center the badges and the description paragraph inside <p align="center"> so logo → langs → badges → description → stats SVG all share one vertical axis. - Quick start: drop the "First run: paste a key…" paragraph (the wizard prompts the user when they run it; pre-explaining was reading-overhead). Compact note inline as a # comment on the npx reasonix code line, plus an API-key link in the trailing requirements line. - Contributing: drop the trailing git clone … npm install … snippet that duplicated CONTRIBUTING.md's setup section. The link above already says "read CONTRIBUTING.md" — trust it. Net: 132 → 115 lines per README. Hero feels like one block. * docs: drop "free credit on signup" — DeepSeek no longer offers it Three places referenced free signup credit: - README.md / README.zh-CN.md "Non-goals" bullet — rephrased as "needs a paid DeepSeek API key" so the air-gapped redirect to Aider+Ollama / Continue still makes sense - docs/index.html + docs/i18n.js Quick start step 1 — "Sign up at ... and create a key" / "到 ... 注册并创建 Key" - src/cli/ui/Setup.tsx + src/cli/ui/Wizard.tsx — drop "free credit on signup" hints from the key-paste prompt * docs: contributor avatars, more badges, COC + SECURITY README polish bundle: - Add 2 badges: GitHub stars + Discussions count. Brings the row from 5 → 7 (still under the badge-spam threshold). - Add a contrib.rocks contributor-avatar grid at the bottom of the Contributing section. Auto-updates from git log — no bot, no config file. Single <img>, fresh forever. - Reference Code of Conduct + SECURITY.md from the Contributing blurb so first-time PR authors land on the right pages. Project hygiene files: - CODE_OF_CONDUCT.md — Contributor Covenant 2.1, fetched verbatim from the canonical EthicalSource repo, with the [INSERT CONTACT METHOD] placeholder filled in. GitHub's Insights → Community will now show the green check, and the repo nameplate gains a "Code of Conduct" link. - SECURITY.md — private-disclosure policy, scope (in: package, dashboard, sandbox; out: third-party MCP servers, upstream Node, the user's own key handling), supported-versions note, and hardening reminders for users. - CONTRIBUTING.md "Reporting security issues" reduced to a one-line pointer at SECURITY.md, eliminating the duplicate email address. * docs: move README image assets into docs/assets/ The docs/ directory was a mixed bag: GitHub Pages site source (index.html, styles.css, i18n.js, term-anim.js, logo.svg, favicon.svg), documentation pages (ARCHITECTURE.md), README image assets (six hero / feature-grid / stats SVGs at root), and design mockups (design/). Six SVGs cluttering the listing made it hard to tell website-source from README-only-fixtures at a glance. Move the README-only SVGs into docs/assets/: - hero-stats.svg + .zh-CN.svg - hero-terminal.svg + .zh-CN.svg - feature-grid.svg + .zh-CN.svg Update all 6 image references in README.md and README.zh-CN.md. logo.svg stays at docs/ root because it's used by both the website (docs/index.html includes it) and the README — it's genuinely a top-level brand asset, not an asset-folder fixture.27 天前
feat(readme): visual polish — hero terminal · stats · feature grid (#102) * feat(readme): hero terminal SVG matches design-doc aesthetic Replace the plaintext code-fence demo of reasonix code with a self-contained SVG that mirrors the design-doc terminal mockup (design/agent-tui-terminal.html) and the website palette: dark chrome, traffic-light dots, JetBrains Mono, ANSI-style color roles (cyan prompt, purple assistant, amber path, coral SEARCH, green REPLACE). Bilingual: a separate zh-CN variant carries the Chinese user message and the localized pending-edit footer. * fix(readme): hero terminal shows unified diff, not raw SEARCH/REPLACE The previous SVG painted the model's raw <<<<<<< SEARCH / ======= / >>>>>>> REPLACE markers, but those are an internal protocol — the TUI actually renders pending edits via formatPendingPreview from src/cli/ui/edit-history.ts, which produces a unified diff with -/+ prefixed lines and a path (-N +M lines) file header. Match that format faithfully; shrink the canvas to 880x360 since the diff is more compact than the marker block was. * docs(readme): tighten prose, replace feature wall with SVG grid Two new design-token SVGs continue the hero-terminal aesthetic so the README has consistent visual rhythm instead of a wall of ### heading subsections. - Add docs/hero-stats.svg (+ zh): three gradient numbers (94% live cache hit · ~30× cheaper / task · MIT) below the hero tagline. - Add docs/feature-grid.svg (+ zh): 6-card 3x2 grid replacing the eight ### subsections that ran 25+ lines of wall text. Prose cleanup: - Drop the --system-append subsection; it's documented in reasonix code --help, doesn't belong in the hero quickstart. - Drop the "Edits stay in memory..." line redundant with the terminal SVG that already shows the /apply gate. - Drop the stale "1665 tests" count from the contributor snippet — the number drifts; "tests" alone is enough. Net: 175 → 132 lines per README, four anchored visual blocks (logo · stats · terminal · features). * docs: publish design mockups under docs/design/ so links render The README points at the dashboard and TUI design mockups, but the links resolved to repo paths — GitHub serves .html files in repos as syntax-highlighted source, never as a rendered page. Anyone clicking through hit a wall of HTML instead of the intended preview. Move the two mockups into docs/design/ (already published via GitHub Pages) and switch the README links to absolute https://esengine.github.io/reasonix/design/... URLs. Now click- throughs land on the rendered mockup, and the links work the same on github.com, on the npm registry, and anywhere else the README gets reposted. dashboard/app.css's "anchored to ..." comment updated to track the new location. * docs(readme): trim comparison table to differentiating rows only Drop the 7 universally-yes rows (plan mode, edit review, MCP, skills, hooks, sandbox, surface) and keep the 6 where Reasonix is actually different from peers: backend, cost, license, cache-hit %, dashboard, sessions. Add a one-line note pointing at the feature grid for the rest, so the information isn't lost — just reordered into the section that's already explaining each feature in detail. * docs(readme): unify hero block to a single centered column Designer-pass cleanup. The hero used to fracture between centered (logo, tagline, lang) and left-aligned (H1, badges, description), making the eye jump as it scanned downward. - Drop the redundant # Reasonix H1 — the wordmark in logo.svg already says it; the H1 was duplication, not hierarchy. Astro, Bun, Tailwind and similar polished READMEs do logo OR title, not both. - Drop the <em> tagline; the description paragraph below conveyed 90% the same info more concretely. Pick one, not two. - Center the badges and the description paragraph inside <p align="center"> so logo → langs → badges → description → stats SVG all share one vertical axis. - Quick start: drop the "First run: paste a key…" paragraph (the wizard prompts the user when they run it; pre-explaining was reading-overhead). Compact note inline as a # comment on the npx reasonix code line, plus an API-key link in the trailing requirements line. - Contributing: drop the trailing git clone … npm install … snippet that duplicated CONTRIBUTING.md's setup section. The link above already says "read CONTRIBUTING.md" — trust it. Net: 132 → 115 lines per README. Hero feels like one block. * docs: drop "free credit on signup" — DeepSeek no longer offers it Three places referenced free signup credit: - README.md / README.zh-CN.md "Non-goals" bullet — rephrased as "needs a paid DeepSeek API key" so the air-gapped redirect to Aider+Ollama / Continue still makes sense - docs/index.html + docs/i18n.js Quick start step 1 — "Sign up at ... and create a key" / "到 ... 注册并创建 Key" - src/cli/ui/Setup.tsx + src/cli/ui/Wizard.tsx — drop "free credit on signup" hints from the key-paste prompt * docs: contributor avatars, more badges, COC + SECURITY README polish bundle: - Add 2 badges: GitHub stars + Discussions count. Brings the row from 5 → 7 (still under the badge-spam threshold). - Add a contrib.rocks contributor-avatar grid at the bottom of the Contributing section. Auto-updates from git log — no bot, no config file. Single <img>, fresh forever. - Reference Code of Conduct + SECURITY.md from the Contributing blurb so first-time PR authors land on the right pages. Project hygiene files: - CODE_OF_CONDUCT.md — Contributor Covenant 2.1, fetched verbatim from the canonical EthicalSource repo, with the [INSERT CONTACT METHOD] placeholder filled in. GitHub's Insights → Community will now show the green check, and the repo nameplate gains a "Code of Conduct" link. - SECURITY.md — private-disclosure policy, scope (in: package, dashboard, sandbox; out: third-party MCP servers, upstream Node, the user's own key handling), supported-versions note, and hardening reminders for users. - CONTRIBUTING.md "Reporting security issues" reduced to a one-line pointer at SECURITY.md, eliminating the duplicate email address. * docs: move README image assets into docs/assets/ The docs/ directory was a mixed bag: GitHub Pages site source (index.html, styles.css, i18n.js, term-anim.js, logo.svg, favicon.svg), documentation pages (ARCHITECTURE.md), README image assets (six hero / feature-grid / stats SVGs at root), and design mockups (design/). Six SVGs cluttering the listing made it hard to tell website-source from README-only-fixtures at a glance. Move the README-only SVGs into docs/assets/: - hero-stats.svg + .zh-CN.svg - hero-terminal.svg + .zh-CN.svg - feature-grid.svg + .zh-CN.svg Update all 6 image references in README.md and README.zh-CN.md. logo.svg stays at docs/ root because it's used by both the website (docs/index.html includes it) and the README — it's genuinely a top-level brand asset, not an asset-folder fixture.27 天前
Initial commit: Reasonix v0.0.1 — DeepSeek-native agent framework Three-pillar design optimized for DeepSeek's economic and behavioral profile: - Pillar 1: Cache-First Loop (immutable prefix + append-only log + volatile scratch) - Pillar 2: R1 Thought Harvesting (stub surface, full impl in v0.2) - Pillar 3: Tool-Call Repair (scavenge + truncation + storm + flatten — complete) Stack: TypeScript / Node 20+ / ESM. Ink + React TUI with live cache-hit and cost panel. Streaming via SSE. Vitest (41 passing tests), tsup, biome. 1 个月前
docs: add Japanese README (#2011)2 天前
Add Baidu AI Search backend (#2147)1 天前
Add Baidu AI Search backend (#2147)1 天前
chore(ci): drop Node 20 from CI matrix; bump engines to >=22 (#98) Node 20 reached end-of-life on 2026-04-30. The CI matrix kept it green for users on the prior LTS; with EOL passed, the verification cost is no longer paying back. - engines.node: ">=20.10" -> ">=22" - CI matrix: ["20", "22"] -> ["22"] - tsup target: node20 -> node22 - README / README.zh-CN / CONTRIBUTING / REASONIX / docs: Node >= 2227 天前
feat(readme): visual polish — hero terminal · stats · feature grid (#102) * feat(readme): hero terminal SVG matches design-doc aesthetic Replace the plaintext code-fence demo of reasonix code with a self-contained SVG that mirrors the design-doc terminal mockup (design/agent-tui-terminal.html) and the website palette: dark chrome, traffic-light dots, JetBrains Mono, ANSI-style color roles (cyan prompt, purple assistant, amber path, coral SEARCH, green REPLACE). Bilingual: a separate zh-CN variant carries the Chinese user message and the localized pending-edit footer. * fix(readme): hero terminal shows unified diff, not raw SEARCH/REPLACE The previous SVG painted the model's raw <<<<<<< SEARCH / ======= / >>>>>>> REPLACE markers, but those are an internal protocol — the TUI actually renders pending edits via formatPendingPreview from src/cli/ui/edit-history.ts, which produces a unified diff with -/+ prefixed lines and a path (-N +M lines) file header. Match that format faithfully; shrink the canvas to 880x360 since the diff is more compact than the marker block was. * docs(readme): tighten prose, replace feature wall with SVG grid Two new design-token SVGs continue the hero-terminal aesthetic so the README has consistent visual rhythm instead of a wall of ### heading subsections. - Add docs/hero-stats.svg (+ zh): three gradient numbers (94% live cache hit · ~30× cheaper / task · MIT) below the hero tagline. - Add docs/feature-grid.svg (+ zh): 6-card 3x2 grid replacing the eight ### subsections that ran 25+ lines of wall text. Prose cleanup: - Drop the --system-append subsection; it's documented in reasonix code --help, doesn't belong in the hero quickstart. - Drop the "Edits stay in memory..." line redundant with the terminal SVG that already shows the /apply gate. - Drop the stale "1665 tests" count from the contributor snippet — the number drifts; "tests" alone is enough. Net: 175 → 132 lines per README, four anchored visual blocks (logo · stats · terminal · features). * docs: publish design mockups under docs/design/ so links render The README points at the dashboard and TUI design mockups, but the links resolved to repo paths — GitHub serves .html files in repos as syntax-highlighted source, never as a rendered page. Anyone clicking through hit a wall of HTML instead of the intended preview. Move the two mockups into docs/design/ (already published via GitHub Pages) and switch the README links to absolute https://esengine.github.io/reasonix/design/... URLs. Now click- throughs land on the rendered mockup, and the links work the same on github.com, on the npm registry, and anywhere else the README gets reposted. dashboard/app.css's "anchored to ..." comment updated to track the new location. * docs(readme): trim comparison table to differentiating rows only Drop the 7 universally-yes rows (plan mode, edit review, MCP, skills, hooks, sandbox, surface) and keep the 6 where Reasonix is actually different from peers: backend, cost, license, cache-hit %, dashboard, sessions. Add a one-line note pointing at the feature grid for the rest, so the information isn't lost — just reordered into the section that's already explaining each feature in detail. * docs(readme): unify hero block to a single centered column Designer-pass cleanup. The hero used to fracture between centered (logo, tagline, lang) and left-aligned (H1, badges, description), making the eye jump as it scanned downward. - Drop the redundant # Reasonix H1 — the wordmark in logo.svg already says it; the H1 was duplication, not hierarchy. Astro, Bun, Tailwind and similar polished READMEs do logo OR title, not both. - Drop the <em> tagline; the description paragraph below conveyed 90% the same info more concretely. Pick one, not two. - Center the badges and the description paragraph inside <p align="center"> so logo → langs → badges → description → stats SVG all share one vertical axis. - Quick start: drop the "First run: paste a key…" paragraph (the wizard prompts the user when they run it; pre-explaining was reading-overhead). Compact note inline as a # comment on the npx reasonix code line, plus an API-key link in the trailing requirements line. - Contributing: drop the trailing git clone … npm install … snippet that duplicated CONTRIBUTING.md's setup section. The link above already says "read CONTRIBUTING.md" — trust it. Net: 132 → 115 lines per README. Hero feels like one block. * docs: drop "free credit on signup" — DeepSeek no longer offers it Three places referenced free signup credit: - README.md / README.zh-CN.md "Non-goals" bullet — rephrased as "needs a paid DeepSeek API key" so the air-gapped redirect to Aider+Ollama / Continue still makes sense - docs/index.html + docs/i18n.js Quick start step 1 — "Sign up at ... and create a key" / "到 ... 注册并创建 Key" - src/cli/ui/Setup.tsx + src/cli/ui/Wizard.tsx — drop "free credit on signup" hints from the key-paste prompt * docs: contributor avatars, more badges, COC + SECURITY README polish bundle: - Add 2 badges: GitHub stars + Discussions count. Brings the row from 5 → 7 (still under the badge-spam threshold). - Add a contrib.rocks contributor-avatar grid at the bottom of the Contributing section. Auto-updates from git log — no bot, no config file. Single <img>, fresh forever. - Reference Code of Conduct + SECURITY.md from the Contributing blurb so first-time PR authors land on the right pages. Project hygiene files: - CODE_OF_CONDUCT.md — Contributor Covenant 2.1, fetched verbatim from the canonical EthicalSource repo, with the [INSERT CONTACT METHOD] placeholder filled in. GitHub's Insights → Community will now show the green check, and the repo nameplate gains a "Code of Conduct" link. - SECURITY.md — private-disclosure policy, scope (in: package, dashboard, sandbox; out: third-party MCP servers, upstream Node, the user's own key handling), supported-versions note, and hardening reminders for users. - CONTRIBUTING.md "Reporting security issues" reduced to a one-line pointer at SECURITY.md, eliminating the duplicate email address. * docs: move README image assets into docs/assets/ The docs/ directory was a mixed bag: GitHub Pages site source (index.html, styles.css, i18n.js, term-anim.js, logo.svg, favicon.svg), documentation pages (ARCHITECTURE.md), README image assets (six hero / feature-grid / stats SVGs at root), and design mockups (design/). Six SVGs cluttering the listing made it hard to tell website-source from README-only-fixtures at a glance. Move the README-only SVGs into docs/assets/: - hero-stats.svg + .zh-CN.svg - hero-terminal.svg + .zh-CN.svg - feature-grid.svg + .zh-CN.svg Update all 6 image references in README.md and README.zh-CN.md. logo.svg stays at docs/ root because it's used by both the website (docs/index.html includes it) and the README — it's genuinely a top-level brand asset, not an asset-folder fixture.27 天前
refactor(ink): inline ink runtime as workspace package (#1947) Was a stub src/vendor/ink/index.d.ts plus an empty index.js (the real runtime arrived obfuscated, source unreachable). Moving the source into packages/ink as a workspace dep gives consumers real types and makes the runtime editable in-repo. API migrations forced by the new stricter types: - Text/Box color is a typed union now (ansi:<name> | #hex | rgb() | ansi256()); bare ansi names get the ansi: prefix - dimColordim; Text's bold/dim discriminated union relaxed so the two can coexist (terminals collapse them anyway) - ThemeTokens fields typed as Color so theme-derived values flow through helpers / props without manual casts Markdown OSC 8 hyperlinks switch from <Transform> (a shim that silently ignored the transform prop, breaking Ctrl+click hyperlinks) to <Link url>, which uses ink's existing ink-link plumbing. Dropped dead shims: Transform, useAnimation (zero callers after the markdown rewrite). Comment-policy pass on the new package: stripped 638 multi-line essay block comments to 1-line summaries to match the repo rules. Co-authored-by: reasonix <reasonix@deepseek.com>2 天前
feat(weixin): render ilink qr in terminal (#2246)12 小时前
feat(weixin): render ilink qr in terminal (#2246)12 小时前
chore: improve loop.ts tests (#271) * chore: improve loop.ts tests * undo uncessary - change * drive auto-escalation tests through step() instead of private-field access21 天前
refactor(ink): inline ink runtime as workspace package (#1947) Was a stub src/vendor/ink/index.d.ts plus an empty index.js (the real runtime arrived obfuscated, source unreachable). Moving the source into packages/ink as a workspace dep gives consumers real types and makes the runtime editable in-repo. API migrations forced by the new stricter types: - Text/Box color is a typed union now (ansi:<name> | #hex | rgb() | ansi256()); bare ansi names get the ansi: prefix - dimColordim; Text's bold/dim discriminated union relaxed so the two can coexist (terminals collapse them anyway) - ThemeTokens fields typed as Color so theme-derived values flow through helpers / props without manual casts Markdown OSC 8 hyperlinks switch from <Transform> (a shim that silently ignored the transform prop, breaking Ctrl+click hyperlinks) to <Link url>, which uses ink's existing ink-link plumbing. Dropped dead shims: Transform, useAnimation (zero callers after the markdown rewrite). Comment-policy pass on the new package: stripped 638 multi-line essay block comments to 1-line summaries to match the repo rules. Co-authored-by: reasonix <reasonix@deepseek.com>2 天前
refactor(ink): inline ink runtime as workspace package (#1947) Was a stub src/vendor/ink/index.d.ts plus an empty index.js (the real runtime arrived obfuscated, source unreachable). Moving the source into packages/ink as a workspace dep gives consumers real types and makes the runtime editable in-repo. API migrations forced by the new stricter types: - Text/Box color is a typed union now (ansi:<name> | #hex | rgb() | ansi256()); bare ansi names get the ansi: prefix - dimColordim; Text's bold/dim discriminated union relaxed so the two can coexist (terminals collapse them anyway) - ThemeTokens fields typed as Color so theme-derived values flow through helpers / props without manual casts Markdown OSC 8 hyperlinks switch from <Transform> (a shim that silently ignored the transform prop, breaking Ctrl+click hyperlinks) to <Link url>, which uses ink's existing ink-link plumbing. Dropped dead shims: Transform, useAnimation (zero callers after the markdown rewrite). Comment-policy pass on the new package: stripped 638 multi-line essay block comments to 1-line summaries to match the repo rules. Co-authored-by: reasonix <reasonix@deepseek.com>2 天前
refactor(ink): inline ink runtime as workspace package (#1947) Was a stub src/vendor/ink/index.d.ts plus an empty index.js (the real runtime arrived obfuscated, source unreachable). Moving the source into packages/ink as a workspace dep gives consumers real types and makes the runtime editable in-repo. API migrations forced by the new stricter types: - Text/Box color is a typed union now (ansi:<name> | #hex | rgb() | ansi256()); bare ansi names get the ansi: prefix - dimColordim; Text's bold/dim discriminated union relaxed so the two can coexist (terminals collapse them anyway) - ThemeTokens fields typed as Color so theme-derived values flow through helpers / props without manual casts Markdown OSC 8 hyperlinks switch from <Transform> (a shim that silently ignored the transform prop, breaking Ctrl+click hyperlinks) to <Link url>, which uses ink's existing ink-link plumbing. Dropped dead shims: Transform, useAnimation (zero callers after the markdown rewrite). Comment-policy pass on the new package: stripped 638 multi-line essay block comments to 1-line summaries to match the repo rules. Co-authored-by: reasonix <reasonix@deepseek.com>2 天前

Reasonix

English  ·  简体中文  ·  日本語  ·  Website  ·  Guide  ·  Architecture  ·  Benchmarks  ·  Discord

npm version CI license downloads node GitHub stars AtomGit stars contributors Discussions Discord

oosmetrics — Top 2 in Agents by velocity oosmetrics — Top 3 in LLMs by velocity oosmetrics — Top 3 in CLI by velocity


一款面向终端的 DeepSeek 原生 AI 编码助手。

围绕前缀缓存稳定性精心设计,确保长会话中 token 成本始终处于低位,让你可以放心让它持续运行。


Reasonix 代码模式 — 助手提出 SEARCH/REPLACE 编辑建议;执行 /apply 前不会修改磁盘文件


Tip

缓存稳定性并非可开启的功能,而是整个循环设计的核心原则。 这也是 Reasonix 仅支持 DeepSeek 的根本原因——每一层都针对字节级稳定的前缀缓存机制进行了优化。

Note

真实用户单日使用数据(2026-05-01): 4.35 亿输入 tokens,99.82% 缓存命中率,总成本约 12 美元。若在 v4-flash 上无缓存运行相同工作负载,成本约为 61 美元——详见 案例研究。DeepSeek 提供可缓存的字节数据,而 支柱 1 中的四种机制则确保 Reasonix 在长会话中维持这些数据的可缓存性。

Important

社区 · 加入社区 —— 双语 Discord 社区,设有安装帮助频道(#help / #求助)、工作流展示、功能建议以及贡献者专用 PR 协作频道。在服务器内验证你的 GitHub 账号,即可自动获得 Contributor 角色。→ https://discord.gg/XF78rEME2D


安装

需要 Node ≥ 22 版本。支持 macOS · Linux · Windows(PowerShell · Git Bash · Windows Terminal)。

如果希望 reasonix 命令在您的 PATH 中可用,请全局安装 Reasonix:

npm install -g reasonix
reasonix code my-project   # paste a DeepSeek API key on first run; persists after

或者在不全局安装的情况下运行一次:

cd my-project
npx reasonix code          # always uses the latest package by default

获取 DeepSeek API 密钥 → · 使用 reasonix code --help 查看参数说明。

如果您每天都使用 Reasonix,全局安装是最简单的方式。如果您只是想尝试一下,可以使用 npx

希望减少输入次数? 较短的 dsnix 别名与该 CLI 功能相同:

npm install -g dsnix       # exposes `dsnix` on PATH, depends on reasonix
npx dsnix@latest code      # one-shot via the shorter command

全局执行 npm install -g reasonix 时,也会在 PATH 中添加一个 dsnix 快捷命令,因此这两个命令可以互换使用。

直接输入 reasonix(不带子命令)会在当前目录启动 code——输入 reasonixreasonix code 效果相同。

命令 使用场景
reasonix / reasonix code [dir] 编码代理。从此处开始。
reasonix chat 纯聊天模式——不使用文件系统或 shell 工具。
reasonix run "task" 一次性任务,流式输出到标准输出。适用于管道操作。
reasonix doctor 健康检查:Node、API 密钥、MCP 连接。
reasonix update 升级 Reasonix 本身。

其他子命令(replay · diff · events · stats · index · mcp · prune-sessions)可通过 reasonix --helpCLI 参考文档 查看。

QQ 渠道

QQ 可以将现有的 chatcode 或桌面会话扩展为远程渠道。它是当前会话流程的一部分,而非独立的运行模式。

  • CLI:启动会话后,运行 /qq connect
  • 桌面端:打开 设置 -> 通用 -> QQ 渠道

连接后,QQ 消息可以进入当前会话,助手回复会路由回 QQ,后续交互可远程继续。

有关完整设置、桌面端快速入门和故障排除,请参阅 QQ 渠道设置

桌面客户端(预发布版)

一个原生 Tauri 客户端,供希望在相同循环之上使用 GUI 的用户使用。多标签页设计,右侧面板显示代理在本次会话中已读取或编辑的文件,底部实时显示相同的成本/缓存/令牌计量。使用相同的 DeepSeek API 密钥,相同的 ~/.reasonix 配置——桌面版捆绑了自身的 Node 运行时,无需单独执行 npm install 步骤。

可从 GitHub Releases 下载对应平台的安装程序。桌面客户端目前为 预发布版:其循环和协议与 CLI 相同,但 UI 仍在优化中,且安装程序尚未进行代码签名。

  • macOS — 首次启动会触发 Gatekeeper。一次性解决方法:xattr -dr com.apple.quarantine /Applications/Reasonix.app(或右键 → 打开 → 确认)。
  • Windows — SmartScreen 会警告“未知发布者”。点击 更多信息 → 仍要运行
  • Linux — 提供 .deb.AppImage 格式,直接使用,无需额外步骤。

CLI 仍然是标准界面。CLI 中实现的所有功能也可通过桌面端的输入框使用。

在其他文件夹工作 · chat 与 code 的区别 · 编写技能

在不同文件夹工作。 Reasonix 的文件系统工具作用范围限定为启动目录;可通过传递 --dir 参数来重新指定目标目录。设计上不支持会话中途切换目录(内存路径会与旧的根目录混淆)——请退出并重新启动。

npx reasonix code --dir /path/to/project

选择 chat 模式与 code 模式code 是默认模式,也是唯一支持文件系统/Shell 工具以及 SEARCH/REPLACE 审阅功能的模式。chat 则是更轻量的无工具 Shell——当你需要一个附带 MCP 的思考伙伴,但不需要磁盘访问时,可以选择此模式。

功能特性 code chat
文件系统工具 + edit_file
SEARCH/REPLACE → /apply 审阅
Shell 工具(需授权)
计划模式 · /todo · /skill new · /mcp add
记忆功能(remember / recall_memory 项目级 + 全局级 仅全局级
配置中的 MCP 服务器 · 网络搜索 · ask_choice
编码系统提示词 通用型
会话作用域 按目录划分 共享默认值

创建你的首个技能。无需远程注册表——直接编写即可。编辑文件(包含 description: 前置元数据 + 主体内容),然后执行 /skill list。添加 runAs: subagent 可生成独立的子智能体循环,而非内联主体内容。

/skill new my-skill              # <project>/.reasonix/skills/my-skill.md
/skill new my-skill --global     # ~/.reasonix/skills for cross-project use

Claude 格式技能同样支持加载。 系统会与 Reasonix 的原生路径一同读取 <project>/.claude/skills/<name>/SKILL.md~/.claude/skills/,因此生成 Claude 格式技能的工具可直接使用。例如,无需上游适配器即可直接放入 OpenSpec 工作流:

npx openspec init --tools claude    # writes .claude/skills/openspec-*/SKILL.md
/skill openspec-propose <task>      # then invoke from Reasonix

配置

~/.reasonix/config.json 路径下有一个 JSON 文件,此外每个项目可在 <project>/.reasonix/ 目录下进行覆盖配置。完整的双语参考文档(包含所有配置项、所有斜杠命令以及技能/记忆/钩子的磁盘存储结构)可在以下地址查看:

📘 配置指南 · 中文

主题 快速概览
MCP 服务器 标准输入输出 · SSE · 可流式 HTTP。同一规范格式适用于 config.json--mcp 参数。
技能 模型可调用的 Markdown 操作手册。支持 inline(内联)或 subagent(子智能体)模式。
记忆 固定在提示词前缀中的用户私有知识。包含 user(用户)/ feedback(反馈)/ project(项目)/ reference(参考)类型。
钩子 生命周期事件触发的 Shell 命令。包括 PreToolUse(工具使用前,用于控制)· PostToolUse(工具使用后)· UserPromptSubmit(用户提示提交时)· Stop(停止时)。
权限 每个工作区的 Shell 命令允许列表。采用精确前缀匹配方式。
网络搜索 默认使用必应(Bing);可通过 /search-engine 切换为百度 AI 搜索、自托管的 SearXNG、Metaso、Tavily、Perplexity、Exa、Brave 或 Ollama。
语义索引 reasonix index 命令 —— 支持本地 Ollama 或任何兼容 OpenAI 的嵌入端点。

Reasonix 的独特之处

其运行循环围绕三大核心支柱构建。每一个支柱都解决了通用智能体框架甚至未曾意识到的问题——因为这些框架是为不同的缓存机制设计的。

点击查看完整架构说明 → 支柱一 —— 缓存优先循环 · 支柱二 —— 工具调用修复 · 支柱三 —— 成本控制


功能特点

Reasonix capabilities — cell-diff renderer, MCP, plan mode, permissions, dashboard, persistent sessions, hooks/skills/memory, semantic search, auto-checkpoints, /effort knob, transcript replay, event log


产品对比

特性 Reasonix Claude Code Cursor Aider
后端支持 DeepSeek Anthropic OpenAI / Anthropic 任意(OpenRouter)
软件许可 MIT 闭源 闭源 Apache 2
成本模式 单任务低成本 高端付费 订阅制+使用量计费 动态变化
DeepSeek 前缀缓存 深度优化 不适用 不适用 附带功能
嵌入式网页控制台 支持 不适用(IDE 集成)
可配置网络搜索引擎 /search-engine
工作空间级持久会话 支持 部分支持 不适用
规划模式 · MCP · 钩子 · 技能系统 支持 支持 支持 部分支持
网络搜索(Bing + 百度 + SearXNG + API 引擎) 支持 支持 支持 支持
开放社区开发 支持 支持

关于实时缓存命中率、成本数据及测试方法,请参见 benchmarks/ 目录。由于模型定价变动会影响数据,相关数值将随测试工具同步更新,而非固定在 README 中。


文档资料

  • 架构设计 — 三大核心:缓存优先循环、工具调用修复、成本控制
  • 命令行参考 — 所有 shell 子命令、斜杠命令及快捷键说明
  • QQ 频道配置 — 命令行首次连接流程、桌面入口及 QQ 开放平台凭证设置
  • 性能基准 — τ-bench-lite 测试框架、会话记录、成本计算方法
  • 官方网站 — 快速入门指南、控制台界面原型、终端界面原型
  • 贡献指南 — 评论规范、错误处理准则、优先使用库函数原则
  • 行为准则 · 安全策略

社区

Note

Reasonix 是开源且由社区共同开发的项目。本文件底部鸣谢墙中的每个头像都代表一个已合并的真实 PR。

范围明确的新手任务——每个任务都包含背景信息、代码指引、验收标准和提示——均标记有 good first issue 标签。您可以选择任何开放的任务。

公开讨论——征集意见:

已经在使用 Reasonix 并愿意帮助他人了解它吗? 请在展示与分享板块发布博客文章、文章、截图、演讲或视频。该项目没有营销预算——社区口碑是新用户发现它的途径。持续的倡导者将获得下方徽章,一旦授予,将显示在贡献者墙旁边:

Reasonix Advocate badge — earned by sustained advocates

提交首个 PR 前:请阅读 CONTRIBUTING.md——其中包含简短但严格的规则(注释、错误处理、优先使用库而非手动实现)。tests/comment-policy.test.ts 用于强制执行注释规范;npm run verify 是提交前的检查 gate。参与即表示您同意行为准则。安全问题请查阅 SECURITY.md


非目标

Important

Reasonix 是有明确立场的。有些事情它刻意不做——列在这里是为了帮助您为自己的工作选择合适的工具。

  • 多供应商灵活性:特意仅支持 DeepSeek。与单一后端耦合是其特性,而非限制。
  • IDE 集成:以终端为先。代码差异通过 git diff 查看,文件树通过 ls 查看。仪表盘是辅助工具,而非 Cursor 的替代品。
  • 最顶尖的推理能力排行榜:Claude Opus 在某些基准测试中仍然领先。DeepSeek 在编码方面具有竞争力;如果您的工作是“解决这个博士论文级别的证明”而非“修复这个身份验证 bug”,建议从 Claude 开始。
  • 离线/完全免费:Reasonix 需要付费的 DeepSeek API 密钥。如需离线或零成本运行,请查看 Aider + Ollama 或 Continue

星标历史

Star History Chart

支持我们

如果 Reasonix 对您有所帮助,您希望表达感谢,欢迎通过以下方式支持我们。这只是一杯咖啡的心意,而非任何形式的契约——捐赠不会影响功能开发的优先级,也不会改变问题的处理流程。

微信支付二维码


致谢

以下是对 Reasonix 影响最大的部分人员名单——按提交次数和代码量综合衡量。名单按字母顺序排列,不分先后主次。 完整贡献者列表请见 GitHub

特别感谢 Bernardxu123 设计了项目 logo(详见 docs/brand/),以及 AIGC Link 在小红书上对本项目的推广。

esengine/DeepSeek-Reasonix 贡献者



MIT 许可 — 详见 LICENSE
esengine/DeepSeek-Reasonix 社区共同打造

项目介绍

用户可借助该项目进行代码开发、任务执行及会话管理,它具备缓存优化降低成本、多模式交互(编码/聊天)、技能扩展和桌面客户端等功能,专注提升开发效率与成本控制。【此简介由AI生成】

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

TypeScript72.85%
TSX20.07%
CSS5.41%
JavaScript1.06%
Rust0.52%