你说话的时候
Jev 先读一遍
这是新任务、追问,还是在纠正它?干活时的插话要不要立刻打断?要不要把技能和工具加载进来,还是一句话就能答?
图里是一轮真实的会话。「跑一下测试,把失败的用例修好」进来,不到一秒 Jev 就给出判定:多步任务,用重档。用不到的技能和 MCP 服务器不进上下文,需要时才打开。
μ · Only what's needed.
mu 是一个编码代理。一个小而快的判定模型 Jev,每一轮替大模型做几十个小决定:什么留在上下文里,这条命令安不安全,活到底干完了没有。大模型把注意力留给正事。
$ npm i -g mu-agent
需要 Node.js 22.19 或更新。装好后在项目目录里运行 mu;第一次用先运行 mu setup 接入一个模型。
v0.1.7 · macOS 版已签名并经 Apple 公证;Windows 版暂未签名,SmartScreen 会提示。应用自带 mu,不用另装 Node.js。ARM 版 Windows、Linux 和全部安装包见 Releases。
MU · 一轮真实的会话
写个方案,上下文里却背着一整套工具;模型越来越会写代码,人却越来越看不懂它在说什么。mu 的办法是把「判断」和「干活」分开:判断交给 Jev,干活交给大模型,讲话交给会说人话的模型。
+6 .replace(/^-+|-+$/g, ""); 7 } $ cd /Users/Shared/mu/slugify && npm test 2>&1 ... (10 earlier lines, ctrl+o to expand) ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 85.342125 Took 0.3s 4 个用例全部通过。 问题:slugify.js 结尾的正则 .replace(/^-/, "") 只去掉了开头的 -,没有处理末尾。 修复:把正则改为 /^-+|-+$/g,同时去掉首尾的连字符,顺手把 ^- 也加上 + 以支持多个连 字符的情况。 ──────────────────────────────────────────────────────────────────────────────────── ──────────────────────────────────────────────────────────────────────────────────── ~/slugify (master) ↑6.1k ↓729 R20k CH94.1% $0.035 (sub) 2.5%/200k (auto) claude-sonnet-4-6 • medium jev-1.13-free active: multi_step_task -> heavy 699ms Permissions: Full access
你说话的时候
这是新任务、追问,还是在纠正它?干活时的插话要不要立刻打断?要不要把技能和工具加载进来,还是一句话就能答?
图里是一轮真实的会话。「跑一下测试,把失败的用例修好」进来,不到一秒 Jev 就给出判定:多步任务,用重档。用不到的技能和 MCP 服务器不进上下文,需要时才打开。
工具返回的时候
一次测试、一次搜索,动辄几百行。Jev 逐块判断哪些现在有用:失败的用例留下,一遍遍刷屏的日志去掉。没进上下文的部分归档,留一个指针,需要时再取回。
网页和 MCP 返回的内容里,冲着模型来的指令会先被拦下。
动手之前
每条命令执行之前,Jev 判断会不会造成不可逆的后果,有没有越过你定下的规矩。权限分三档:完全访问、Jev 审批、最小权限,随时切换。在「Jev 审批」下,该问你的才问你,其余直接放行。
判定只改变模型接下来做什么,从不让它多来问你一句。
一轮结束的时候
模型说「好了」的时候,mu 会看这一轮有没有验证过,中途有没有跑偏,要不要退回检查点重来。
用 /goal <条件> 给一个目标,它会一直干到条件成立才停。做没做完由大模型核对,Jev 兜底;同一个错反复出现时,Jev 判断这是不是一条死路。
蜂群
让几个代理一起啃一个难题,最难的不是派活,是交流。什么都不说,各自走进同一条死路;什么都说,每个人的上下文里全是别人的聊天。
mu 的蜂群里,每个发现 Jev 都判一次值不值得共享,只有对另一只蜂真有用的,才作为上下文传过去。后来的发现推翻了先前的结论,更正会送到每一只收到过它的蜂。
人话看板
模型越来越强,汇报却越来越像写给机器看的。mu 里干活的模型照旧用它自己的方式干活;每隔几次工具调用,Jev 读一遍现场,挑出真正算新消息的几条,交给一个专门因为会说人话而选出来的模型,告诉你做到哪了。
运行结束时,你看到的不只是「做完了」,还有它到底做了什么。
刻意不做的事
大模型的注意力有限,上下文也是。下面这些,是 mu 特意没做、或者特意换了做法的地方。
Jev 的判定只改变模型接下来做什么,从不改变它要不要来问你。
开口第一句先判断:闲聊、追问,还是要动手的活。用不到的技能和 MCP 服务器不进上下文。
上下文变长时,过期的结果直接丢,不用写摘要;缓存快过期时,判断值不值得续一次。
38 个判定点,每个都能单独开关、单独换判定器:免费的 Jev、本地的 Laya,或任意一个大模型。
没配判定器的 key 时,默认由 OpenCode Zen 上免费的 Jev 回答,每天提醒一次。
命令行基于 pi,pi 的模型、扩展、技能和会话树都在;桌面端基于 AionUi 改造。
还有这些
/status、mu ledger,桌面端有判定页。参与进来
报 bug、提需求,模板会带你填好要的信息。
用法、想法、你做的东西,都可以来聊。
修 bug、提新判定点、测判定器、做翻译,从 good first issue 开始。
Jev Key 福利活动已结束,网页领取已下架。现在不配 key 也能用;想换成自己的 TypeSafe key 或别的判定器,见判定器。