返回 DeepSeek-Reasonix
CHANGELOG.md
根目录 / CHANGELOG.md
1 # Changelog
2
3 All notable changes to the Go line (Reasonix 1.0+) are recorded here. The legacy
4 `0.x` TypeScript history lives on the [`v1`](https://github.com/esengine/DeepSeek-Reasonix/tree/v1)
5 branch.
6
7 ## Unreleased
8
9 ### Fixed
10
11 - **Issue #7575:** Linux Bash under bubblewrap no longer mounts a fresh empty
12 `--tmpfs /tmp` on every call. Consecutive commands in the same logical session
13 now share a private temporary directory (bound at `/tmp` on Linux, exported via
14 `TMPDIR`/`TMP`/`TEMP` on all platforms) without exposing the host public
15 temporary root. `/new`, `/clear`, resume of another session, and branch
16 switches rotate the directory; model/settings hot rebuilds keep it. Sub-agent
17 runs get independent directories. Temporary files are not durable across process
18 restarts.
19
20 ### Added
21
22 - Added `[ui].show_turn_usage` so CLI/TUI users can hide per-request token and
23 cost receipts from transcript scrollback without disabling usage accounting.
24
25 ## [1.20.0] — 2026-08-05
26
27 Extension kernel, Task Monitor, and safer Goal completion.
28
29 Compact decision surfaces, local decision receipts, unified extension kernel,
30 native Task Monitor, bounded sub-agent progress, Goal fail-closed completion,
31 MiMo and DashScope Responses fixes, SSH remote access simplification, and
32 multiple Desktop stability improvements.
33
34 ### Highlights
35
36 - **Unified Extension Kernel and Extension Protocol v1**: Immutable runtime
37 snapshots, fail-atomic reload, Plugin Manifest v1 (prompts, themes, full-trust
38 code runtimes), stable JSON-RPC sidecar protocol, interceptor dispatch,
39 streaming provider adapter, structured UI, and Go SDK.
40 - **Native Task Monitor**: Monitor agent tasks natively in CLI and Desktop with
41 lifecycle semantics and session-scoped summary view.
42 - **Bounded Sub-agent Progress Forwarding**: Forward structured progress for
43 `task`, `parallel_tasks`, and `fleet` without flooding the parent stream.
44 Renders nested lifecycle cards in Desktop and stable per-child transcript
45 slots in CLI.
46 - **Goal Completion Fail-Closed**: Replace free-form Goal footer markers with a
47 stable `update_goal` tool and epoch-scoped per-turn reports. Centralized
48 completion logic with bounded evaluator, progress-aware budgets, and
49 pause/resume controls.
50 - **Ablation Subsystem Switches**: Switch subsystems off behind one shared
51 vocabulary for controlled experiments. Includes planner, subagent, retrieval,
52 evidence, and compaction.
53 - **Benchmark Cost per Solved Task**: Report cost per solved task, tokens per
54 solved, median wall time, and failure-class breakdown in e2e reports.
55 - **Compact Decision Surfaces and Local Receipts**: Compact footer decision-card
56 layout with bounded scroll, dense action rows, and overflow disclosure.
57 Record bounded Ask, approval, and recovery decisions as local transcript
58 receipts.
59 - **Simplified SSH Remote Access**: Remove Remote Workbench protocol and
60 stacks; reuse CLI/Serve remote model. Desktop opens per-host native web child
61 windows via SSH. Keyless remote Serve setup with loopback-only page.
62 - **Model Usage Charts with Primer Palette**: Replace monochrome accent ramp
63 with GitHub Primer data-viz two-set categorical palette. Fix donut overflow
64 on hover and keyboard accessibility.
65 - **Cross-platform Extension and Task Monitor Reliability**: Make
66 content-reference eviction deterministic, reject Unix and Windows absolute
67 plugin paths consistently, stabilize parallel-task cancellation, and restore
68 reliable Windows validation for Task Monitor and remote provider setup.
69 - **MiMo and DashScope Responses Wire Alignment**: Fix multi-turn tool loops,
70 reasoning round-trip, JSON output for MiMo; fix DashScope second-turn 400
71 error, all-zero usage suppression, and vendor-aware cache TTL.
72 - **Desktop Stability Fixes**: Recover stuck updates and legacy WebKit, contain
73 macOS alias repair startup crashes, keep composer overflow stacks readable,
74 and harden account verification and community flows.
75 - **Remote Web Recovery After SSH Drops**: Add integration regression test for
76 SSH drop, forward recovery, and window reload. Document transient outage
77 behavior.
78 - **CI: Auto-minimize Activity-Farming Spam Comments**: Detect and minimize
79 template spam comments from non-contributor accounts based on structural
80 signals.
81
82 ### Added
83
84 - Added Extension Protocol v1 and the unified extension kernel: installed or
85 linked sidecars can contribute tools, skills, commands, hooks, MCP servers,
86 providers, interceptors, and structured UI surfaces through a versioned
87 NDJSON contract and the public Go SDK. CLI, Desktop, ACP, and Serve support
88 fail-atomic runtime reloads; Serve also renders extension surfaces and lists
89 extension-hosted providers without exposing credentials.
90 - Added the structured Goal completion protocol: the always-registered
91 `update_goal` tool (continue/complete/blocked with reason and next_action)
92 replaces the `[goal:*]` footer markers. The Goal FSM is now the exclusive
93 cross-turn decision point and validates every complete claim against Delivery
94 readiness; when the model submits no report, an independent bounded evaluator
95 (recovery_model → guardian_model → main model, no tools/history, usage
96 attributed to `goal-evaluator`) judges the turn once, and any evaluator
97 failure pauses the goal instead of continuing silently.
98 - Added Goal budget classes with safe pauses: simple 10 turns / 200k tokens,
99 write 20 turns / 400k tokens, AutoResearch 40 turns / 800k tokens, and a
100 4-turn no-host-verifiable-progress gate. Pauses keep all Goal state; `/goal
101 resume` continues and adds one slice of the current class when the pause was
102 budget-related. `/goal status` shows the full turn/token/no-progress runtime,
103 and `/goal pause` manually suspends a running Goal.
104 - Added the `goalRuntime` nested view to the desktop Meta, the remote protocol
105 (`session/goal/pause` operation, `goalRuntime` DTO on session meta), and the
106 ACP status payload; the desktop Composer goal menu shows the runtime summary
107 with distinct pause/end/resume actions.
108
109 ### Changed
110
111 - Delivery no longer retries final-answer readiness with hidden model messages:
112 a plain Delivery run ends on the first unsatisfied final answer and surfaces
113 the recovery card, while a Goal + Delivery run has the Goal FSM absorb the
114 failure and continue under budget with the missing requirements as the next
115 turn's prompt. Historical `[goal:*]` footers are stripped from old transcripts
116 for display only and never participate in state decisions.
117 - Added a **Remote SSH** module (VS Code Remote-SSH style): a user-global
118 `[remote]` host config, `reasonix remote` CLI (add/list/remove/import/test/
119 connect/status/forward/serve/fs) and `/remote` slash command, an SSH transport
120 with trust-on-first-use host-key verification, keepalive + exponential-backoff
121 reconnect, `-L`/`-R` port forwarding, and SFTP file access. `connect`
122 bootstraps a persistent `reasonix serve` on the remote host and tunnels its
123 loopback port so the full agent runs remotely. The desktop app adds a
124 **Settings -> Remote SSH** host manager, a remote file browser/editor, a
125 port-forwarding panel, and a status-bar connection chip. Linux/macOS remotes.
126 - Added `reasonix serve --port-file/--token-file/--pid-file` so a supervised
127 headless serve can bind an ephemeral port and read its auth token from a file
128 (keeping it out of `ps`).
129 - Added an authenticated, loopback-only Provider setup page for `reasonix
130 serve`. A Serve whose selected Provider is missing its API key now remains
131 reachable, stores the submitted key in that host's Reasonix credential file,
132 and rebuilds the active controller in place without restarting Serve.
133 - Added Claude Code-style searchable CLI pickers for models, providers, and
134 sessions, with arrow, Vim, and `Ctrl+P` / `Ctrl+N` navigation.
135 - Added `-p` / `--print`, `text`, `json`, and `stream-json` output modes for
136 one-shot use and automation.
137 - Added session-scoped `--allowed-tools`, repeatable `--add-dir`, Claude-compatible
138 permission modes, flexible `--resume [QUERY]`, and the `--copy` resume escape
139 hatch.
140 - Added `/status` details for the active model, effort, cache, Git state,
141 background jobs, work profile, and provider balance where available.
142 - Remote SSH workspaces now open as a standalone remote web window again.
143 Opening a workspace from the status bar or the Remote Server tab starts or
144 reuses the remote `reasonix serve`, tunnels its loopback port, and opens the
145 Serve web client in a dedicated per-host window. The remote web page uses
146 the provider configuration and API keys on the **remote** host; the desktop
147 no longer exposes its local providers to remote hosts. If the selected remote
148 Provider is missing its API key, the window opens a setup page that saves the
149 key only on that host and then opens the normal Serve UI. The Remote Workbench
150 protocol, its Provider Broker, and the same-window remote projection were
151 removed. Legacy mirror and provider-trust files are not deleted
152 automatically; Settings -> Remote SSH shows a cleanup card when they exist.
153 The hidden `remote attach-workspace`, `remote runtime-workbench`, and
154 `remote workbench-build-id` commands now fail with a pointer to
155 `reasonix remote connect <host> --open`.
156 - Automatic Plan Mode has been retired. Plan Mode is now always entered through
157 an explicit user choice, and the one-time config v5 upgrade removes legacy
158 `agent.auto_plan` and `agent.auto_plan_classifier` values so upgraded users
159 receive the same behavior as new users.
160 - `Shift+Tab` now cycles CLI safe modes from Ask to Auto to Plan, while YOLO
161 remains an independent `Ctrl+Y` toggle.
162 - Model, provider, resume, and approval menus now use consistent row selection;
163 slash completion, help, aliases, and dispatch share one command registry.
164 - The full-screen CLI composer now uses theme-accented borders and a slim bar
165 cursor by default, grows within the available terminal height, scrolls long
166 drafts independently, and preserves selections across explicit image paste.
167 - The persistent CLI footer now uses a responsive, theme-aware layout for
168 interaction state, model, effort, localized work mode, Git identity, cache,
169 context, compaction headroom, jobs, and balance. Narrow terminals move or
170 compact complete groups instead of clipping labels.
171 - CLI clipboard actions now separate terminal-native text paste from explicit
172 image paste: `Ctrl+V` on macOS/Linux, `Alt+V` on Windows, or `/paste-image`.
173 Local transcript copy verifies the native clipboard write, while SSH uses a
174 clearly labelled OSC 52 fallback.
175 - Runtime rebuilds after model, effort, or work-mode changes now preserve the
176 conversation, session permission overrides, additional directories, and
177 session lease ownership.
178 - Agent execution now monitors host-observed Todo progress automatically. A
179 stalled current item receives a recovery nudge after 8 tool-call rounds with
180 no new completion, unique read, command, or mutation, and pauses with saved
181 work after 16. Exact repeats do not renew the progress lease; real work does.
182 Two-level task lists keep the single in_progress contract: the active
183 sub-step is the only current item while its phase stays pending, and the
184 phase becomes in_progress to sign off only after all of its sub-steps are
185 completed. A level-1 sub-step with no phase header above it is rejected.
186 Executor and planner rounds now use automatic progress management. Retired
187 `[agent].max_steps` and `planner_max_steps` keys remain parseable for upgrades,
188 but are ignored and removed by a one-time migration so stale hidden limits
189 cannot truncate new behavior. One-off CLI and unattended bot limits remain.
190
191 ### Fixed
192
193 - Fixed long parallel sub-agent research being silently lost when combined
194 `parallel_tasks` or `fleet` answers exceeded the single-tool output limit.
195 Persisted sessions now keep each child transcript independently, return a
196 bounded fair preview plus stable reference for every result, and page full
197 answers through the conversation-scoped `read_subagent_result` tool.
198 - Fixed Remote Workbench failing with only `initialize: workbench-desktop:
199 connection closed` on fresh or cross-platform SSH hosts. Desktop now proves
200 the exact Host CLI Build ID, provisions the matching verified release without
201 requiring remote npm, runs the managed binary explicitly, and preserves a
202 safe structured bootstrap error when the remote command exits early.
203 - Hardened Bash permission reuse for dynamic and indirect execution. Parameter/arithmetic expansions,
204 assignments, redirects, heredocs, and globs can only be remembered as exact
205 `Bash=<literal>` rules, while still using Auto's normal fallback. Nested or
206 indirect execution now requires a human in interactive Ask/Auto and fails
207 closed in headless Ask/Auto/DontAsk. Broad Bash rules, Guardian/hook allows,
208 and the approved-plan window can no longer silently authorize that stricter
209 class; YOLO remains the explicit full-access bypass and sandbox enforcement
210 is unchanged.
211 - Fixed Desktop sessions incorrectly locking themselves during Goal + Delivery
212 mode changes, controller rebuilds, duplicate-tab restore, and background
213 reattachment. Desktop now keeps one process-local runtime owner per canonical
214 session, fences stale controller events by runtime epoch, blocks sends until
215 that runtime is ready, and scopes single-instance ownership to
216 `REASONIX_HOME` instead of the executable path. Switching saved sessions is
217 now transactional: a target build, restore, or lease failure leaves the
218 current controller, lease, path, mode profile, and runtime epoch untouched.
219 - Stabilized the desktop rich composer caret after skill and plugin invocation
220 tags. DOM→model and model→DOM selection mapping now treat invocation chips as
221 zero-length atoms while still counting user text that lands inside the NBSP
222 caret anchor (common on Windows WebView2), restore both selection ends, and
223 recover the insertion point from a `beforeinput` snapshot when the browser
224 temporarily loses selection — so mid-text edits no longer jump to the end.
225 - Isolated the Windows desktop WebView2 shell from stale system proxies, so an
226 exited proxy client cannot leave the embedded UI hidden during startup. If
227 WebView2 still does not reach DOM-ready within 15 seconds, Reasonix now shows
228 the native window with a recovery prompt instead of appearing not to launch.
229 Remote Markdown images are fetched by the backend with Reasonix's proxy
230 configuration instead of bypassing that proxy through the isolated WebView.
231 - Restored captured-mouse right-click text paste, made composer drag selection
232 copy through the verified native clipboard path, and kept non-Git footer
233 telemetry left-aligned without reserving an empty data band.
234 - Restored stateful MCP behavior after the v1.17.13 regression: user-added
235 servers work without extra trust settings (including delivery-mode on-demand
236 calls), repository-provided servers use one exact launch confirmation, and
237 stdio tools reuse one persistent process so browser sessions survive across
238 calls without repeated startup latency. The former trust/reverify/catalog
239 management UI and CLI are removed.
240 - Localized persistent-footer labels and displayed work-mode values in English,
241 Simplified Chinese, and Traditional Chinese, while keeping command arguments
242 stable.
243 - Restored the `0.53` content boundary: model output, tool output, session
244 transcripts, recovery branches, and background-job artifacts retain their
245 original text instead of being rewritten by heuristic secret redaction.
246 Credential masking remains in key-entry summaries and explicit diagnostic or
247 session-cleanup paths. Transcript-bearing session/job sidecars are kept
248 private (`0600`, with private job directories), and the retired
249 `redact_tool_output` setting is removed with a one-time upgrade notice.
250
251 ### Notes
252
253 - Full bilingual release notes:
254 <https://reasonix.io/changelog/v1.20.0/> ·
255 [GitHub release](https://github.com/esengine/DeepSeek-Reasonix/releases/tag/desktop-v1.20.0).
256 - The detailed entries below accumulated on `main-v2` after 1.0.0 and shipped
257 across 1.1.0–1.20.0; per-version attribution lives in the per-version release
258 notes linked above.
259
260 ## 1.1.0 – 1.19.7
261
262 Per-version entries for the intermediate releases are published in the
263 [bilingual release notes](https://reasonix.io/changelog/) and on the
264 [GitHub releases page](https://github.com/esengine/DeepSeek-Reasonix/releases).
265
266 ## [1.0.0] — 2026-06-03
267
268 First stable release — a **ground-up rewrite in Go**. Not an upgrade of the `0.x`
269 TypeScript line; a new codebase that becomes the default (`main-v2`).
270
271 ### Highlights
272
273 - **Go kernel**: a single static binary (CGO-free), cross-compiled for
274 darwin/linux/windows on amd64 + arm64. Distributed via npm (the package wraps
275 the native binary), Homebrew (`esengine/reasonix` tap), and release archives;
276 no Node runtime needed to run it.
277 - **Agent core**: the loop, built-in tools (read/write/edit/multi_edit/glob/grep/
278 ls/bash/web_fetch/todo_write), permission gate, sandboxed bash, and the
279 DeepSeek prefix-cache–oriented design.
280 - **Subagents**: `task` plus explore/research/review/security_review skill agents.
281 - **Skills & hooks**: Claude-Code-style skills (`internal/skill`) and hooks
282 (`internal/hook`), symlink-aware and slash-integrated.
283 - **MCP client**: connect external servers over stdio / Streamable HTTP; reads
284 `[[plugins]]` and a Claude-Code `.mcp.json`.
285 - **Code intelligence via CodeGraph**: a tree-sitter symbol/call graph
286 (`codegraph_*` tools) replaces embedding semantic search — no embedding service
287 or API cost. Fetched into a local cache on first use (or `reasonix codegraph
288 install`) and indexed in the background, so installs and startup stay fast.
289 - **Plan mode** with evidence-backed step sign-off (`complete_step`).
290 - **Memory**: `REASONIX.md` hierarchy + auto-memory, folded into the cache-stable
291 prefix.
292 - **ACP** (`reasonix acp`) and an HTTP/SSE server frontend; desktop app (Wails).
293
294 ### Fixed
295
296 - **File encoding support restored** — GBK/GB18030 (and other non-UTF-8) files
297 can now be read, edited, and grepped correctly. The v2 rewrite had dropped
298 v1's encoding detection; files in CJK Windows charsets were silently misread
299 or rejected as binary. The read/edit/write round-trip now preserves the
300 original file encoding. (#2637)
301
302 ### Notes
303
304 - Versions: the legacy TypeScript line stays in `0.x`; the Go line starts at
305 `1.0.0`. See [docs/MIGRATING.md](docs/MIGRATING.md).
306 - Release archives ship a bare binary; CodeGraph is fetched on first use. Windows
307 support for the fetched runtime is unverified — install `codegraph` on PATH if
308 the auto-fetch doesn't resolve there.
309
310 [1.20.0]: https://github.com/esengine/DeepSeek-Reasonix/releases/tag/desktop-v1.20.0
311 [1.0.0]: https://github.com/esengine/DeepSeek-Reasonix/releases/tag/v1.0.0
312
312 lines MARKDOWN