SivanCola e7a0f1163b fix(release): prevent skipped stable publishers (#6629)
Problem:
The stable orchestrator reported success after approval even though the CLI, npm, and Desktop publication jobs were skipped through a transitive skipped dependency. The existing recovery dispatch also could not use a workflow fix without moving the already-published tags.

Root cause:
Each reusable publisher joined an orchestrated guard with a deliberately skipped standalone gate. The cache guard used an explicit status condition, but its descendants did not, so GitHub propagated the skipped ancestor through the dependency chain. Recovery also checked out and executed control scripts from the old release candidate.

Fix:
Add explicit success conditions to every affected publication stage, keep recovery authorization and verification on protected main-v2 while building the immutable historical tag SHA, and reject non-ancestor or mismatched tag sets. Add a stable postflight that verifies required CLI/Desktop release assets and the exact npm latest version so a no-op release cannot stay green.

Verification:
- bash scripts/release-workflows.test.sh
- go run github.com/rhysd/actionlint/cmd/[email protected] -ignore 'label "windows-11-arm" is unknown' on all release workflows
- bash -n on all changed release scripts
- verify-stable-release-artifacts.sh against public v1.17.14 artifacts
- ./scripts/cache-guard.sh
- go test ./...
- git diff --check
2026-07-18 08:36:22 +08:00

Reasonix

English  ·  简体中文  ·  Guide  ·  Spec  ·  Website  ·  Discord

Important

Reasonix 1.0 is a ground-up rewrite in Go — this branch (main-v2) is the new default and where development happens now. The earlier 0.x TypeScript releases are legacy, living on the v1 branch (maintenance only). See the migration guide. npm i -g reasonix stays the install command — 1.0.0+ delivers the Go binary, 0.x is the legacy TS build.

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


A DeepSeek-native AI coding agent for your terminal.

A config- and plugin-driven harness — a single static Go binary, tuned around DeepSeek's prefix cache so token costs stay low across long sessions.


Important

Community · 加入社区 — bilingual Discord for setup help (#help / #求助), workflow showcases, and feature ideas. → https://discord.gg/XF78rEME2D


Features

  • Config-driven. Providers, the agent, enabled tools, and plugins are all declared in reasonix.toml. No hardcoded models.
  • Multi-model & composable. DeepSeek ships as a preset; any OpenAI-compatible endpoint is a config entry, not new code. Optionally run two models together (executor + planner) in separate, cache-stable sessions.
  • Plugin-driven. External tools run as subprocesses over stdio JSON-RPC (MCP-compatible). Built-in tools self-register at compile time.
  • Cache-aware context maintenance. Startup injects a small stable environment summary, stale tool output is snipped/pruned before summary compaction, and the built-in tool schema contract is documented for regression review.
  • Zero-friction distribution. CGO_ENABLED=0 single binary; cross-compile to six targets with one command. The only dependency is a TOML parser.

Install

npm i -g reasonix                  # any OS; pulls the prebuilt native binary
brew install esengine/reasonix/reasonix   # macOS

Prebuilt archives (darwin|linux|windows × amd64|arm64) and SHA256SUMS are on every GitHub release.

Code signing

Windows builds are code-signed with a free certificate provided by the SignPath Foundation, with signing through SignPath.io.

Build from source

make build      # -> bin/reasonix(.exe)
make cross      # -> dist/ (darwin|linux|windows × amd64|arm64)

Quick start

reasonix setup                      # manage providers in the user config
reasonix setup --local              # optional: manage ./reasonix.toml
export DEEPSEEK_API_KEY=sk-...      # or let setup save it to Reasonix home .env
reasonix                            # then run /init to generate AGENTS.md (project memory)
reasonix run "implement the TODOs in main.go"
reasonix run --model deepseek-pro "add unit tests for this function"
echo "explain this code" | reasonix run

Configuration

A minimal reasonix.toml — one provider and a default model — is enough to start:

default_model = "deepseek-flash"

[[providers]]
name        = "deepseek-flash"
kind        = "openai"
base_url    = "https://api.deepseek.com"
model       = "deepseek-v4-flash"
api_key_env = "DEEPSEEK_API_KEY"

Resolution order is flag > ./reasonix.toml > the user config file > built-in defaults; starting with Reasonix v1.8.1, the user file lives at ~/.reasonix/config.toml on macOS/Linux and %AppData%\reasonix\config.toml on Windows. See Configuration paths for migration details and the full config.toml / .env structure. Provider entries name secrets with api_key_env; the secret values themselves live in Reasonix's global <Reasonix home>/.env, shared by CLI and desktop. Project .env files are not provider-key runtime fallbacks, but still feed workspace-scoped, non-provider ${VAR} expansion for MCP/plugin settings without importing Reasonix control variables. Permissions, the sandbox, plugins (MCP), slash commands, @ references, and two-model setup are all in the Guide.

Documentation

  • CLI reference — interactive and one-shot commands, structured output, resume, permission modes, and searchable pickers.
  • Guide — configuration, permissions & sandbox, plugins (MCP), slash commands, @ references, two-model collaboration.
  • Subagent profiles — create, share, preview, run, edit, and safely delete isolated agent profiles from desktop or CLI.
  • Capability diagnostics — reasonix doctor capabilities, desktop Settings → Diagnostics, and the /reasonix-guide skill for skills/hooks/MCP/plugin troubleshooting.
  • Recovery and Safe Mode — Guard diagnostics, configuration snapshots, native recovery, update rollback, and optional AI-assisted repair plans.
  • Bot guide — connect Feishu, Lark, and WeChat bots from the desktop app, then use approvals, YOLO, and commands from IM.
  • Spec — engineering contract: architecture, registries, data types, and roadmap.
  • Task contracts & pause policy — structure complex requests with context, output boundaries, constraints, and when to ask.
  • Tool contract — provider-visible built-in tool names, read-only flags, and schema snapshot guard.
  • Migrating from 0.x — moving from the legacy TypeScript releases to the 1.0 Go rewrite.
  • Checkpoints & rewind — the snapshot-based edit safety net (Esc-Esc / /rewind).

Star History

Star History Chart

Support

If Reasonix has been useful and you'd like to say thanks, you can. It stays a coffee, not a contract — donations don't buy feature priority or change how issues get triaged.

WeChat Pay QR code


Acknowledgments

A small list of folks whose work has shaped Reasonix the most — the current top 20 contributors by commit count. The full contributor graph is on GitHub.

Contributor Contributor Contributor Contributor
SivanCola esengine ttmouse lifu963
reasonix (anonymous) HUQIANTAO GTC2080 light-front-theory
merge-order-check (anonymous) Li-Charles-One eghrhegpe wufengfan (anonymous)
CVEngineer66 dependabot[bot] lanshi17 SuMuxi66
CnsMaple cyq1017 JesonChou XTLine

Also a separate thank-you to Bernardxu123 for designing the project logo, and to AIGC Link for promoting the project on XiaoHongShu.

Contributors to esengine/DeepSeek-Reasonix



MIT — see LICENSE
Built by the community at esengine/DeepSeek-Reasonix

2026-11-06 17:13:39 -10:00
Languages
Go 69.3%
TypeScript 20.4%
JavaScript 3.9%
HTML 2.6%
CSS 1.7%
Other 2%