Repository navigation
Releases
mu v0.3.8
mu 0.3.8: the judge reads the whole call it approves, and your keys stay out of the agent's commands and MCP servers. You can also choose which of an account's models the model menus show.
A session reopened after an interruption says which calls may already have run, a reply you stop keeps its text for the model, and the agent gets a language-server tool and a way to read back output mu shortened. An experimental write sandbox can keep the agent's commands to the project. The desktop app carries mu-agent 0.3.8.
Worth knowing before you update
- The agent's commands no longer see your keys. Commands, background jobs and programs run under the debugger start without the environment variables that hold a credential: a name with KEY, TOKEN, SECRET, PASSWORD or CREDENTIAL and a value that looks like one. A setting such as
MAX_TOKENS=4096stays. If a command needs a key, such asnpm publishwithNPM_TOKEN, name it inMU_PASS_ENV(MU_PASS_ENV=NPM_TOKEN).gh,npmandawsreading their own config files are unaffected. - MCP servers from
mcp.jsonstart without them too. A server that read a token from the environment without naming it now needs it in the entry'senvor inMU_PASS_ENV, or"inheritEnv": trueon the entry. Servers mu inherits from Claude Code, Cursor and Codex already started this way. - Some calls now ask you. In Judge mode, a call too long for the judge to read whole (over 4,000 characters, or a flagged command over 1,500) asks you instead of being judged on an excerpt. In Judge mode and Ask first, a call that carries one of your keys, or a command that sends a credential file (
.env, an ssh key,.npmrc,.aws/credentialsand the like) off the computer, asks you every time and is never allowed for the whole conversation. Full access is unchanged. - mu points out mistakes in mu.json's
features, and a value of the wrong kind is no longer used."enabled": "false"is text and used to count as on; now it keeps the default. A misspelled feature or option, or a value of the wrong kind, is named at the start of the session and in/doctorand/status, with the closest name when it looks like a typo.
Safer runs
- The judge reads the call that runs. In Judge mode the approval judge read only the first 400 characters of a command, and the whole command ran. It now reads the whole call, a command line by line, and a change another extension makes to a call is made before the judge reads it, not after.
- A call that carries a key asks you. The question, and what the model reads when it's refused, show the call with the key taken out. Naming a variable (
$GH_TOKEN) carries nothing and is judged as usual. - Web search and page reading through Tavily never follow a redirect with your key.
- The full output mu keeps when it shortens a tool result is readable only by your user account, and archives untouched for 14 days are removed.
Choose which models the model menus show
- Desktop: Settings → Providers. Each signed-in account (ChatGPT, Antigravity, …) and each provider you use with an API key (OpenRouter, OpenAI or Grok with a key) has a checklist of its models, with Select all, Select none and Restore default, and a search box once there are more than twelve. A click applies at once. The model menus of conversations and of the home page list only the checked models (the model a conversation runs on stays listed) and end with "Choose which models appear…", which opens that provider's checklist.
- The default model page and the first-run guide offer only checked models. When the default isn't checked, both say so: new conversations then start on the first checked model.
- Terminal: signing in to an account with several models opens the same choice for that account, and
/scoped-models <provider>opens it again./modelshows the chosen models first, as before. - By default every model is shown, and models an account gains later appear too. Nothing is written until you uncheck something.
Interruptions
- A reopened session says which calls may have run. When mu is killed, the machine sleeps or the app quits while tool calls run, reopening the session tells the model and you which calls never started and which started with an outcome nobody knows. The model is told to check before running those again, so a
git push, a publish or a migration doesn't happen twice. - A reply you stop keeps its text. The model gets back the text you saw, so "stop, and expand your second point" works. Its reasoning and half-written tool calls are still dropped.
The agent finds more and repeats less
- An
lsptool. With a language server installed (TypeScript, Python, Go, Rust, C/C++), the model can ask where a symbol is defined, where it's used, what implements it and what its type is, instead of guessing from grep. It's in the capability catalog and opened when a task needs it. - Shortened output can be read back. Output mu left out to save context (an old result, noise folded out of a log, the rest of a long web page) is read back a piece at a time with
recall, instead of running the command or fetching the page again. - A subfolder's instructions reach the model. A folder's own AGENTS.md or CLAUDE.md below the project folder, such as one package's in a monorepo, is passed to the model the first time the work reads or changes a file there.
features.inherit.folders: falseturns this off. - Writing a file and running it in one step works. When the model writes a file and runs it in the same batch of tool calls, the run waits for the write. The calls between two file changes still run in parallel.
- Loops are caught sooner, and mu speaks up more than once. A call refused again and again, by a check or by you, now counts as a loop, and mu speaks up at 3, 5 and 8 repeats instead of once.
- A dead end says what to do next. A capability that can't start, or a write sandbox that can't, ends its message with who can fix it and whether trying again helps, so the model stops retrying or installing things on its own.
- Subagents keep a session. Each
delegateorhivesubagent keeps a session file of its own (in~/.mu/agent/subagents/), so what it did can be read after it ended, even when its parent was killed. They don't appear in/resumeor the app's conversation list. - Subagents think hard less often. When the judge picks a subagent's thinking level, "high" now starts a little higher on its reasoning scale, so routine multi-step tasks get medium thinking and finish sooner and cheaper. Tasks the judge rates as deep reasoning still get high.
- Judged rewind speaks up a little sooner. When the agent goes in circles, mu proposes going back to the turn's checkpoint if the judge is sure the approach is a dead end and reads progress as less likely than not; before, it also had to be sure there was no progress. It still only proposes: nothing goes back without you.
- A subagent's patch review names more unrelated files. With
swarm.patchturned on (it is off by default), a file the judge leans against is named as unrelated from p 0.3 down, not only from 0.2.
Seeing what the judge did
- Desktop: the Judge tab says what you answered when a verdict sent you a question ("You allowed it for this conversation"), and an opened verdict has a Mark as wrong button (in the app's own conversations). In a terminal,
/ledger wrong <id> [why]does the same, and/ledgershows each record's short id. mu ledgershows your answer after the verdict that asked you, your marks, and what the agent did after a judge sent it back to work ("acted (2 tool calls)", "ended without a tool call").mu ledger --timelineshows one session step by step: your messages, each model reply with its time and tokens, each verdict and each tool result./statuslists each tool kept off the model's list, and what keeps it off.- The session records a request that broke the provider's prompt cache, with what mu decided just before it. Only hashes, counts and roles are kept, and nothing is sent anywhere.
Write sandbox (experimental, off by default)
features.confine, in Settings as "Write sandbox (experimental)", lets the agent's commands, background jobs and the programs it debugs write only to the project, the temporary folders and package caches, enforced by the operating system: Seatbelt on macOS and bubblewrap on Linux; there's no sandbox on Windows. The project's.git/hooksand.git/configstay read-only.features.confine.writableadds folders.- A write the sandbox refuses is named as the sandbox's, with what to do instead, rather than a bare "Operation not permitted".
- A command or background job that must write elsewhere (
git config,git remote add) can ask to run outside the sandbox, once. The judge decides in every mode, Full access included, and asks you when it's unsure; in Ask first you decide. It's never allowed for the whole conversation. - When the sandbox can't start (no bubblewrap, user namespaces turned off), every command is refused rather than run unconfined, and the message says how to fix it or turn the sandbox off.
Fixed
- The desktop app's permission card words the two new reasons (a step too long for the judge; a call that sends a credential) in all 13 of its languages, instead of falling back to Chinese or English.
- The model choice reads right in all 13 languages.
- While mu runs in the app, the sidebar and the command palette no longer offer Scheduled tasks, which can't start a mu conversation. The page stays reachable by its address, so nothing already scheduled is lost.
- A judge server of your own that answers 401 or 429 is reported as a refused key or a rate limit, not as a bad request.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Dev...
mu v0.3.7
mu 0.3.7: more of the desktop app looks like mu, from the stop button and the line above the send box to notices, the judge's icon and file cards. "Ask mu about this" on an error now opens a new mu conversation.
The desktop app carries mu-agent 0.3.7, which has OpenRouter's current prices for a few models.
Changed
- More of mu's own look. While mu works, the stop button takes the send button's colors, with a small square in the middle, and the line above the send box shows a dot, what mu is doing and how long it has taken; the dot is pink while the judge model reads your message. Success, warning and error notices look like the info notice: the page's own surface with one hairline, and only the icon carries the color. The judge tab and the judge settings page use the judge's diamond (◆) instead of a gavel. Lessons use a graduation cap, so the brain icon only stands for the model. A file attached to a message shows mu's file icon.
- "Ask mu about this" opens a new mu conversation. The button beside an error puts the error into a new conversation's send box, with a request to find the cause and a fix, ready to send. Before, it switched on a separate built-in assistant and sent the error there.
- The home page's + menu lists only what a mu conversation uses. It no longer lists skills and MCP servers that a mu conversation never received. mu's own skills are in its
/menu, and its MCP servers are under Settings → Capabilities.
Fixed
- A message you jump to is highlighted again. The highlight used colors that were no longer defined, so it didn't show.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning. An installed app updates itself.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).
Every release's changes are in CHANGELOG.md.
mu v0.3.6
mu 0.3.6 is built on pi 1.4.0, and hive bees hear more of each other's findings. mu's HTTP client is updated for security fixes.
The desktop app's own code is unchanged from 0.3.5; it now carries mu-agent 0.3.6.
Changed
- Built on pi 1.4.0 and the upstream changes after it. Tool arguments are checked by pi-schema and the system prompt is shorter. Where an MCP server supports it, sign-in uses pi's OAuth client metadata document. Tool rows no longer redraw a long file on every change while it streams, and upstream fixes
/resumesearch, HTML export and Windows paths. The model list gains GPT-6.1 Terra; the Codex provider dropsgpt-5.5andgpt-5.3-codex-spark, which ChatGPT accounts can't use. - Hive bees hear more of each other's findings. A note on the board now goes to another bee unless the judge model is sure it doesn't matter to that bee's work. Before, it went only when the judge model was sure it did, and the judge model is rarely sure either way about a note from a bee on the same problem. So a hive with a judge model delivered fewer of the notes its bees needed than a hive without one, where every note goes. Each bee's delivery limit is unchanged.
Fixed
- mu-agent's HTTP client, undici, is updated to 8.12.3 for its security fixes. Among them, a malicious or compromised server could crash the process by renegotiating TLS with another host's certificate or by sending a response with more than five content encodings.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning. An installed app updates itself.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).
Every release's changes are in CHANGELOG.md.
mu v0.3.5
mu 0.3.5: stage one change from a file's diff, see the branch's pull request and its checks in the Source tab, run the project's package.json scripts from the send box and list every keyboard shortcut.
The desktop app carries mu-agent 0.3.5, which adds /jobs start and makes session files and rewinds safer.
What's new
- Stage one change at a time. In a file's diff from the Source tab, each change has a "Stage this change" button, or "Unstage this change" in the staged diff, so you can commit part of a file. Staging never touches the file on disk. If the file has changed since the diff was shown, nothing is staged and the diff refreshes.
- The branch's pull request in the Source tab. Under the branch line you see the pull request's number and title (click to open it on GitHub) and its state: open, draft, merged or closed. Next to it, a count shows how many of its checks passed; click it to list the checks and open one. While a check is still running, the row updates every 30 seconds. On a branch without a pull request, "Let mu open one" puts a request in the send box for mu to push the branch and open one; mu shows you the title, description, repository and base branch first. It uses GitHub's
ghCLI, signed in as you; without it, there's no row. - Run package.json scripts from the send box. When the conversation's folder has a package.json with scripts, the background jobs pill beside the send box shows Run and lists them. Run starts one as a background job, with its log and a stop button. When it ends, mu is told, so you can ask it why the tests failed. In the terminal,
/jobs start [--name <label>] <command>does the same. - A list of keyboard shortcuts. Cmd/Ctrl+/ lists every shortcut the app handles, written the way your system shows keys (⇧⌘A on a Mac, Ctrl+Shift+A elsewhere). It's also in the command palette and under Help → Keyboard shortcuts.
Fixed
- A file's diff in the preview lost its comment rows and its side-by-side toggle whenever the preview redrew, for example when the diff was opened again. They now stay.
- Tool call names, the preview's tabs, the Source tab's section headers and the assistant cards in Settings can now be reached with Tab and opened with Enter or Space.
- A rewind could delete a file through a folder that had been replaced by a symlink, and it reported files it couldn't remove as removed. It now leaves such files alone and says why.
- Rewriting a session file (opening an older session, branching) could leave it cut short after a crash. It's now written to a new file and swapped in, and an entry that can't be saved no longer joins the session.
- The judge model's answers are checked more closely: a choice must be one of the question's own options. Commands that expand a variable (
$NAME), andgit --ext-diffor--textconv, no longer count as read-only.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning. An installed app updates itself.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).
Every release's changes are in CHANGELOG.md.
mu v0.3.4
mu 0.3.4: commit from the Source tab, hear when a conversation is done or needs you, show mu a page's screenshot and console, and move between conversations from the keyboard.
This release changes only the desktop app. The agent is the same as 0.3.3, and the desktop app carries mu-agent 0.3.4.
What's new
- Commit from the Source tab. In the work panel's Source tab, stage or unstage a file or a whole section, write a message and commit with Cmd/Ctrl+Enter. With nothing staged, "Commit all" stages every change first, new files included. "Let mu commit" has mu split the changes into commits and write their messages; it shows you the plan and commits only when you agree. If git refuses (a hook fails, or no identity is set), its output shows under the box.
- A sound when a conversation finishes or needs you. Turn it on in Settings → System. It plays a short chime even while mu is in front, and a different one when mu asks something or a run fails. While it's on, system notifications stay silent, so you don't hear two sounds.
- Show mu the page and its console. In the work panel's browser, the screenshot button puts the page as it looks now into your next message, as an image. When the page has logged errors or warnings since it loaded, a console button shows how many; clicking it adds the last 50 to your next message, oldest first, each with its source.
- Keys to move between conversations. Cmd/Ctrl+1 to 9 open the conversation at that position in the sidebar. Cmd/Ctrl+Shift+A opens the next one that finished or asked something while you were elsewhere. Ctrl+Tab and Ctrl+Shift+Tab open the one below or above. A row's tooltip shows its key, and the command palette offers the next waiting conversation too.
Fixed
- Ctrl+Tab and Ctrl+Shift+Tab did nothing in a conversation. They now move through the sidebar's rows.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning. An installed app updates itself.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).
Every release's changes are in CHANGELOG.md.
mu v0.3.3
mu 0.3.3: with a Nebius Token Factory key, mu now starts on Nemotron 3.5 Super VL, ahead of Token Factory retiring Nemotron 3 Super on 2026-11-09.
Nothing else changed since 0.3.2. The desktop app carries mu-agent 0.3.3.
Changed
- Nebius Token Factory starts on Nemotron 3.5 Super VL. Token Factory retires Nemotron 3 Super (
nvidia/nemotron-3-super-120b-a12b) from Serverless on 2026-11-09, doesn't send its requests anywhere else, and names Nemotron 3.5 Super VL (nvidia/Nemotron-3.5-Super-VL) as its replacement, at the same price.mu setupwith a Token Factory key, and thenebiusprovider's default model, now start on Super VL. The Nemotron judges (Nemotron 3 Ultra) are unchanged. - If you set mu up with a Token Factory key before, run
mu setupagain, or pick Super VL with/model. Nemotron 3 Super stops answering on 2026-11-09.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning. An installed app updates itself.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).
Every release's changes are in CHANGELOG.md.
mu v0.3.2
mu 0.3.2: point at what you mean (an element of a page, a line of a diff, a message to go back to) and see what runs in the background.
This release changes only the desktop app. The agent is the same as 0.3.1, and the desktop app carries mu-agent 0.3.2.
What's new
- Show mu an element of a page. In the work panel's browser, the pointer button lets you click an element of the page, and the click doesn't reach the page. The element goes into your next message with the page's address, a selector that finds it, and its text, styles and HTML. A picture of it is attached too. ↑ selects its parent, and Esc cancels.
- Comment on a diff's lines. In a diff in the preview, the button beside a line opens a comment box under it. Your comments go with your next message, each with its file, line and code, and you can remove one before you send.
- Go back to before a message. If a message of yours started a turn that changed files, a button under it goes back to the checkpoint mu took then. mu first asks whether to roll back the files, the conversation or both. When the conversation goes back, your message returns to the send box so you can send it again.
- Background commands beside the send box. While a command the agent started in the background is running (a dev server, a watcher, a long build), a pill beside the send box shows how many there are. Click it to see each command, how long it has run and its log, with buttons to stop one or all of them.
Fixed
- A message that carried an element picked in the HTML preview dropped the reply it quoted. The quote stays now, and the send box keeps several picked elements instead of only the last one.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning. An installed app updates itself.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).
Every release's changes are in CHANGELOG.md.
mu v0.3.1
mu 0.3.1: what a conversation shows opens beside it, and the work panel keeps up with the agent.
This release changes only the desktop app. The agent is the same as 0.3.0, and the desktop app carries mu-agent 0.3.1.
What's new
- Files open beside the conversation. Click the path of a file a tool call read or wrote, or a file a reply names, and it opens in the work panel's preview. This covers code and other text, Markdown, HTML, PDF, CSV, images and diffs. Other files still open in their own app.
- Your dev server opens in the app. When a command prints a local address such as
http://localhost:5173/, a button under it opens the page in the work panel's browser. - The work panel follows the agent. While the panel is open on Files, Preview, Source or Browser, a file the agent finishes writing shows in the preview. When the agent uses its browser, the Browser tab comes forward. A closed panel still only gets dots, and a toggle on those tabs turns following off.
- Quick open. ⌘P (Ctrl+P on Windows and Linux) finds a file in the conversation's folder by name and opens it in the preview. The command palette offers it too.
- A count on the Dock icon shows how many conversations are waiting for you (macOS; the launcher on Linux).
- The computer stays awake while a conversation runs, so idle sleep doesn't cut a long run short. The display can still turn off, and closing the lid still puts it to sleep. You can turn this off in Settings → System.
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning. An installed app updates itself.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).
Every release's changes are in CHANGELOG.md.
mu v0.3.0
mu 0.3.0: a coding agent that asks you less, wastes fewer tokens and finishes what it starts.
A coding agent makes hundreds of small calls in a session: is this command safe for the task, does this output matter, is the work really done? mu gives those calls to a small, fast judge model, at 40 points in the agent loop, so the main model can stay on your code. It comes as a desktop app for macOS, Windows and Linux, and as the mu command line.
What you get
- Fewer approval prompts. In Judge mode, the default, the judge lets through the steps your task clearly needs, like running the project's tests and checks, and asks you about the rest. Rules catch risky commands before the judge is asked, and web pages and MCP output are screened for instructions aimed at the AI before the model sees them.
- Fewer wasted tokens. Long tool output is read chunk by chunk, and only what the task needs goes into the context. Stale results are dropped, and when you're likely to be back, the prompt cache is refreshed before it expires.
- Fewer runs that stop halfway. When the agent says "next I'll run the tests" and stops, or calls something done that nothing checked, the judge sends it back to finish.
- Every verdict on record. Each decision goes into a local ledger with its probabilities and timing:
mu ledger,/status, or the desktop app's Judge tab. Any decision point can run in shadow mode, logged but changing nothing, so you can try a judge before you rely on it. - A judge that runs on your Mac, if you want one.
mu judge mude installsets up mude 1.0, mu's own 2B decision model, on Apple silicon. With--local-only, nothing the judge reads leaves your machine. You don't need a judge key to start: until you set one, a hosted judge answers for free, for a limited time (what it sees). - A desktop app with nothing else to install. mu and its runtime are built in. Sign in with ChatGPT or add an API key for any provider, and follow the run on the plain-language board, the Judge tab and the Hive tab.
On Terminal-Bench 2.1, with the same model on the same tasks, mu passed 68.2% of attempts, against 58.7% for the open-source agent it is built on (+9.5 points, 95% interval +3.8 to +15.2). How it was measured
Install
- Desktop app: download it below. macOS (.dmg, .zip), Windows (.exe) and Linux (.deb), each for x64 and arm64. The macOS app is signed with a Developer ID and notarized by Apple. The Windows app isn't code-signed yet, so SmartScreen shows a warning.
- Command line:
npm i -g mu-agent && mu setup && mu(Node.js 22.19 or newer).mu doctorchecks the installation, the judges and the connections.
What's new since 0.2.13
0.3.0 brings the model list up to date; otherwise the agent is the same as 0.2.13. The desktop app carries mu-agent 0.3.0.
- The model list is up to date. Newer models are in it, among them Kimi K3.1 Pro, MiniMax M3.1 Flash and DeepSeek V4.1 Flash, and models their providers no longer serve are gone.
Every release's changes are in CHANGELOG.md.
mu v0.2.13
0.2.13 counts the project's own test runner as a check in judge mode.
0.2.13:判定模式把项目自带的测试运行器也算作检查,比如在包目录里用 node "$(git rev-parse --show-toplevel)/node_modules/vitest/dist/cli.js" 跑单个测试文件。
mu v0.2.13: the desktop app and the mu command line.
- Desktop app: macOS (.dmg, .zip), Windows (.exe), Linux (.deb), each for x64 and arm64.
- macOS: signed with a Developer ID and notarized by Apple. Windows is not code-signed yet: SmartScreen shows a warning.
- The app carries mu inside it: nothing else to install, no Node.js, no download at the first start.
- The
mucommand line:npm i -g mu-agent(Node.js 22.19 or newer), or from source (the archive below, or a clone).
What's new
0.2.13 counts the project's own test runner as a check in judge mode. The desktop app carries mu-agent 0.2.13.
Fixed
- Judge mode counts the project's own test runner as a check. 0.2.12 lowered the approval line for checks, but a single test file run the way many repositories' contributor notes say, from a package folder with the project's own vitest (
cd /path/to/project/packages/app && node "$(git rev-parse --show-toplevel)/node_modules/vitest/dist/cli.js" --run test/a.test.ts), didn't count as a check, so the judge's 0.78 still meant asking you. A check may now run in a folder inside the project, with the project's ownnode_modules/vitestornode_modules/.bin/<tool>, and"$(git rev-parse --show-toplevel)"counts as the project folder when the repository starts there. Acdthrough a link out of the project or into a separate repository inside it, and any other$(…), still don't count.
中文说明
判定模式把项目自带的测试运行器也算作检查。桌面端自带 mu-agent 0.2.13。
- 判定模式把项目自带的测试运行器也算作检查。 0.2.12 降低了检查类命令的放行门槛,但很多仓库的贡献说明让你在包目录里用项目自带的 vitest 跑单个测试文件(
cd /项目/packages/app && node "$(git rev-parse --show-toplevel)/node_modules/vitest/dist/cli.js" --run test/a.test.ts),这种写法当时不算检查,判定器给 0.78 分仍会来问你。现在检查可以在项目内的子目录里跑,可以用项目自己的node_modules/vitest或node_modules/.bin/<工具>;仓库从项目目录开始时,"$(git rev-parse --show-toplevel)"也算项目目录。通过链接cd到项目外、进入项目里另一个独立仓库,或其他$(…),仍不算检查。