mu-agent 0.1.14 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +3 -1
- package/judge/dist/mude.js +1436 -0
- package/judge/dist/setup.js +1409 -160
- package/judge/manifest.json +26 -26
- package/judge/mu/index.js +16 -1
- package/kyrn/bin/kyrn-doctor +27 -1
- package/kyrn/bin/mu.mjs +125 -3
- package/kyrn/local-judge/mude-requirements.lock.txt +746 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.2.1] - 2026-10-24
|
|
6
|
+
|
|
7
|
+
**0.2.1 makes mude 1.0 the recommended judge on a Mac, set up from `mu setup`, and its install survives a power cut.**
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `mu setup` offers mude 1.0 in its judge step on a Mac that can run it (Apple silicon, macOS 14 or later, 8 GB of memory or more). It is the first choice and the recommended one, so pressing Enter picks it; the Jev that was recommended before follows it and stays a choice. Picking it writes Jev as the judge, then installs mude 1.0 in front of it in the same terminal, with its progress. If the install doesn't finish, Jev stays the judge and `mu judge mude install` goes on from where it stopped. Scripts use `--judge mude`. On other machines the judge step is as before: free Jev is first and recommended.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- `mu judge mude install` survives a power cut in the middle of the download. Every 32 MiB the partly downloaded file is synced to the disk and the amount on disk is recorded in `<file>.part.saved`. The next install goes on from there, so it never builds on an end the disk didn't keep. A part left by mu 0.2.0, which has no record, goes on from 32 MiB before its end.
|
|
16
|
+
- A resumed file that fails its sha256 check is downloaded once more from the start, instead of ending the install.
|
|
17
|
+
- The download rides out a lost connection: a try that gets some of the file starts the count of failed tries again. Tries that get nothing wait 2, 5, 10, 20 and then 30 s, about two minutes in all, before the install stops.
|
|
18
|
+
- Ctrl-C, or the desktop app ending an install, stops the download where it is, keeps what it got and says how much: "Stopped with 0.9 of 1.8 GB downloaded: mu judge mude install goes on from there". An install that goes on says how much is already there.
|
|
19
|
+
- An install that goes on from one that stopped keeps that one's `--local-only`: it is recorded in `install.json` until the install finishes. Before, running it again without the flag left the hosted judges behind mude.
|
|
20
|
+
|
|
21
|
+
## [0.2.0] - 2026-10-23
|
|
22
|
+
|
|
23
|
+
**0.2.0 starts the era of mu's own models: `mu judge mude install` turns on mude 1.0 in one command.**
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- `mu judge mude install` makes mude 1.0, mu's own decision model optimized for coding, the judge on a Mac with Apple silicon (macOS 14 or later, 8 GB of memory or more). The steps:
|
|
28
|
+
- It downloads the MLX 8-bit edition from huggingface.co/qybaihe/mude-1.0-mlx-8bit at a pinned revision: 31 files, 1.8 GB. Every file is checked against the sha256 pinned in `src/mude/manifest.ts`, and an interrupted download resumes with a range request.
|
|
29
|
+
- It makes a Python 3.13 environment with uv: the machine's own, or a pinned release mu downloads. The packages come from `kyrn/local-judge/mude-requirements.lock.txt` with `--require-hashes`.
|
|
30
|
+
- It starts the package's own System One server on 127.0.0.1:8790 (another free port when that one is taken) with a random key.
|
|
31
|
+
- It puts `mude` first in `tiers`. The key goes in the .env as `MU_JUDGE_MUDE_KEY`.
|
|
32
|
+
- What happens when mude can't answer:
|
|
33
|
+
- By default, a decision it can't answer (its server is down, or a yes/no between 0.2 and 0.8) goes to the judges that were there before. Those are hosted, so what they read leaves the machine. `tool.description` and `tool.injection` also keep going to them (`routes`): mude did worse than Jev on the first in mu's internal benchmark, and the second was not measured.
|
|
34
|
+
- With `--local-only`, mude is the only judge.
|
|
35
|
+
- Other commands: `enable [--local-only | --with-fallback]`, `disable` (back to the judges from before), `start`, `stop`, `status` and `uninstall`. `--json` prints one JSON object per line, for the desktop app.
|
|
36
|
+
- A session starts the server in the background when `tiers`, a route or `MU_JUDGE` names mude, on macOS only; the desktop app's host does too, with Electron as Node. It is shared by every session like Laya's, and uses about 4 GB of memory until stopped.
|
|
37
|
+
- The built-in judge `mude`: `typesafe` at 127.0.0.1:8790, key `MU_JUDGE_MUDE_KEY` (never sent to TypeSafe), 4 s timeout, trusted on every capability.
|
|
38
|
+
- `mu doctor` checks the mude server's `/health` and its key.
|
|
39
|
+
|
|
5
40
|
## [0.1.14] - 2026-10-23
|
|
6
41
|
|
|
7
42
|
### Added
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**A coding agent with a judgment kernel.** It hands its routine decisions to a small, fast judge model, so the main model can keep its attention on the work.
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> Source, docs and the desktop app: [github.com/qybaihe/mu](https://github.com/qybaihe/mu) (README in English, 简体中文, 繁體中文, 日本語 and 한국어).
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -32,6 +32,7 @@ Out of the box, the judge is Jev 1.13, TypeSafe's hosted judge model, free on Op
|
|
|
32
32
|
- **Jev** (hosted): set `TYPESAFE_API_KEY` (TypeSafe), `MU_JUDGE_OPENROUTER_API_KEY` (Jev on OpenRouter), `AI_GATEWAY_API_KEY` (Vercel AI Gateway), `OPENCODE_API_KEY` (OpenCode Zen) or `CLOUDFLARE_API_KEY` with `CLOUDFLARE_ACCOUNT_ID` (Cloudflare Workers AI) in your environment, or add it to `~/.mu/.env` as `KEY=value`. `mu setup` asks for a key and writes it there. mu reads that file as data, never prints it and starts using the key automatically.
|
|
33
33
|
- **Another classifier** from pi's catalog: `/mu judge classifier:<provider>/<model>`, for example Cloudflare's Clef (`clef`, `clef-flash`) or a System One model on OpenRouter, with that provider's key.
|
|
34
34
|
- **CLM** (self-hosted; its encoder needs a GPU): start `clm-serve` from [Contrastive-LM/CLM](https://github.com/Contrastive-LM/CLM), then run `/mu judge clm`. For a server on another machine, add `"judges": { "clm": { "type": "clm", "baseUrl": "http://<host>:8700" } }` to `~/.mu/agent/mu.json`. If the server was started with `CLM_API_KEY`, set the same value in `MU_JUDGE_CLM_API_KEY`. `mu doctor` checks the server.
|
|
35
|
+
- **mude 1.0** (local, a Mac with Apple silicon, macOS 14+), mu's own decision model, optimized for coding: `mu judge mude install` downloads it (1.8 GB), sets it up in `~/.mu/local-judge/mude`, starts its server on 127.0.0.1 and puts it first. What it can't answer goes to the judges you had before, which are hosted; `mu judge mude enable --local-only` keeps everything on your Mac. Its server uses about 4 GB of memory until `mu judge mude stop`.
|
|
35
36
|
- **Laya** (local, macOS on Apple silicon): `mu judge setup` installs it into `~/.mu/local-judge`. It downloads about 930 MB, and only when you run that command.
|
|
36
37
|
- **Any model you already use:** `/mu judge llm:<provider>/<model>`.
|
|
37
38
|
|
|
@@ -45,6 +46,7 @@ mu "prompt" start a session with this prompt
|
|
|
45
46
|
mu -p "prompt" run one prompt, print the answer and exit
|
|
46
47
|
mu -c | -r continue the last session | pick a session to resume
|
|
47
48
|
mu setup connect a model and choose a judge (see mu setup --help for scripting and services)
|
|
49
|
+
mu judge mude <cmd> mude 1.0 on this Mac: install | enable | disable | start | stop | status | uninstall
|
|
48
50
|
mu judge <cmd> manage the local judge, Laya (macOS on Apple silicon): setup | start | stop | status | run
|
|
49
51
|
mu ledger [n] [--json] print the judge's verdicts from the last n sessions
|
|
50
52
|
mu import <file>... import Claude Code, Codex and ZCode conversations; --list shows them (mu import --help)
|