系列回顾:主循环 · 代码库工具 · REPL · 项目上下文 · Skills · 权限 + Write · MCP · Context Budget · Bash · compact · autocompact · Hooks · Memory · Interrupt · WebSearch/Fetch

react-agent-mini 前面几篇多在立柱子:主循环、工具、权限、MCP、compact、子代理……
v7 有一批 change 性质不同:对照 Claude Code,把已经有的能力修到「同款心智」——不是再发明一套,而是修漂移、补体验、堵协议坑。
这篇把这一轮收成一张地图,方便以后检索;细节仍以各专题文 / README 为准。


先说结论:这是「对齐」,不是「新引擎」

类型例子读者该怎么记
行为对齐Windows 用 Git Bash;cancel 三段态;权限 a 记住允许和 CC 用起来像同一套习惯
默认策略对齐micro 默认不再 content-clear;Read 去重 stub少踩「和 CC 不一样」的坑
协议/顺序对齐Skill 必须先 tool_result 再注入正文不对齐会直接 400
体验对齐/status、compact 反馈、MCP help/错误黑盒变成可预期

合集覆盖的主要 change:

v7-cc-align-compact-read-init
v7-windows-bash-gitbash
v7-slash-init(入口;正文再对齐 OLD_INIT)
v7-cancel-semantics
v7-permission-rules
v7-compact-ux
v7-mcp-ux
v7-fix-skill-tool-result-order

(WebSearch/Fetch、interrupt cascade 也是对齐方向,已有专文,文末只点名。)


1. Compact:默认别再清旧 tool_result

对照 CC 时发现:legacy 出站 content-clear 路径在上游已拿掉,压力交给单条截断、保尾和摘要。mini 若仍默认把旧 Read/Bash 结果换成:

[Old tool result content cleared]

就会和 CC 会话形态分叉,还容易逼模型反复重读。

现在:

  • 默认:microcompact 不再 content-clear
  • 逃生口COMPACT_MICRO_CONTENT_CLEAR=1 或选项 microContentClear

出站仍靠:budget 截断 →(可选 clear)→ 重估保尾 → autocompact。


2. Read:同文件未改,别再灌全文

长会话里模型常「再 Read 一遍刚读过的文件」,上下文被同一份正文灌爆。CC 用 readFileState + FILE_UNCHANGED_STUB

mini 对齐后:

条件行为
同路径 + 同 offset/limit + mtime 未变 + 上次来自 Read返回短 stub,提示看更早的 tool_result
分段变了 / 文件被 Edit·Write 改过正常重读并更新 state

这是工具层去重,不改主循环。也解释了 Edit/Write 必须把 fromRead 语义弄对,否则会误 stub。


3. /init:正文跟 OLD_INIT,再加宿主约束

/init 本身是「slash → 注入引导 → runTurn」;对齐的第二刀是引导词

  • 正文结构跟 CC OLD_INIT_PROMPT(目标文件换成 AGENTS.md / CLAUDE.md
  • 不做 NEW_INIT(AskUserQuestion / 访谈 UI)
  • 文末 host note:用读配置发现测试命令,禁止在 init 里跑全量测试 / 长 typecheck(REPL 下每次 Bash 都要确认)

目标文件策略不变:有 CLAUDE.md 就改它,否则默认 AGENTS.md


4. Windows Bash:Git Bash,不是 cmd

模型(和 CC)默认吐 Unix 语法:ls&&/dev/null。Windows 若仍 cmd.exe,大量「命令不认识」+ OEM 乱码。

现在:

  • win32 上 spawn Git Bashbash.exe + -c
  • 解析:CLAUDE_CODE_GIT_BASH_PATH → bash 形 SHELL → 常见 Git 路径 / 从 git.exe 推断
  • 找不到就明确 isError,不静默退回 cmd
  • 工具描述写明:全平台按 Unix/bash 写命令

杀进程树仍可走 taskkill;变的是解释器,不是权限模型。


5. Cancel:收成 idle / running / cleanup

interrupt 接线之后,入口仍散:Ctrl+C、权限 deny、流里 AbortError、收尾再按一次……v7-cancel-semantics 把语义钉死:

状态第一次 Ctrl+C第二次(窗口内 / 仍在收尾)
runningabort 当前轮,会话可继续
cleanup(已 abort 还在收尾)强制退出
idle不动作退出 REPL

权限 deny 与流中 AbortError 一样落到 { reason: 'aborted' }配对规则不变
这不是新 Abort API,是把「和 CC 一样的可预期取消」写成状态机。


6. 权限:y 一次,a 本会话记住

CC 有 always-allow;mini 长会话若每次 Write 都 y/N,会被打断烦死。

REPL 现在是 [y/a/N]

含义
y允许这一次
a会话内始终允许(工具名 + 可选路径)
N拒绝(并按既有语义 abort 本轮)

规则在 SessionPermissionRules:进程内存,不跨重启。headless 仍默认拒写,靠 ALLOW_WRITE=1 或规则命中放行。

不做:Ink 弹窗、企业策略引擎、落盘永久策略文件(可后续)。


7. Compact UX:压了什么,要看得见

策略柱子早有了,但用户侧仍偏黑盒。v7-compact-ux 对齐「可预期」:

  • /compact 与 autocompact:有实质压缩时反馈前后占用(ctx ~NN%
  • 新增 /status:随时看当前上下文估计(与回合后 ctx 行同源)
  • 文档写清开关:COMPACT / AUTOCOMPACT / COMPACT_MICRO_CONTENT_CLEAR

不重做完整 CC compact 策略树——只让已有管道可读


8. MCP UX:列得出、错得懂

stdio MCP 骨架在;缺口是发现性与错误可读性。v7-mcp-ux

  • /help / MCP 列表更清楚
  • prompt / resource 失败文案统一、可读
  • 合并进会话的工具表更可观测

仍不做 HTTP/SSE MCP、marketplace、OAuth 大流——对齐的是「会话里真正好用」,不是传输面扩容。


9. Skill 顺序:先 tool_result,再注入正文

这是典型「不对齐就炸」的坑。

OpenAI 兼容 API 要求:带 tool_calls 的 assistant 后面必须紧跟对应 role:tool
若编排层把 Skill 正文(普通 user 文本)插在 tool_result 之前,下一轮直接 400,会话污染后怎么输入都挂。

对齐 CC 后:

assistant(tool_use: Skill)
  → tool_result(短确认)
  → 再注入 Skill 正文(字段名仍叫 prependMessages,语义是「附加注入」)

已脏掉的会话需要 /clear 或重启 REPL。字段名历史遗留,顺序才是契约


一张总图

对照 Claude Code
        │
        ├─ 默认策略    micro 默认不 clear · Read 去重 stub
        ├─ 运行时外壳  Git Bash · cancel 三段态 · y/a/N 规则
        ├─ 可观测      /status · compact 反馈 · MCP help/错误
        ├─ 引导入口    /init ≈ OLD_INIT + host note
        └─ 硬协议      Skill:tool_result 先于注入正文

旁路已有专文、合集只点名:


刻意仍没对齐的(非目标)

未做为什么
Ink UI / Escape / rewindreadline 子集够用
NEW_INIT 访谈、Plan Mode另开大刀
持久化企业权限策略先会话内存
time-based / cached microcompact复杂度换收益不值
HTTP/SSE MCP、marketplace保持 stdio 边界
完整 CC compact 策略树UX 可观测优先于重写策略

对齐原则可以记成:

同一心智、同一硬契约;UI 与重型产品面可以瘦。


你可以从这里带走什么?

  1. v7 这一波很多是「修漂移」——对照 CC 比空想新柱子更值钱。
  2. 默认策略要对齐——content-clear、Read 去重会改变长会话味道。
  3. 取消与权限是日常肌肉记忆——三段态 + a 记住允许。
  4. 协议顺序没有商量余地——Skill 必须先 tool_result
  5. 体验对齐可以很薄——/status、可读错误,不必重做整棵策略树。

仓库与相关文档

欢迎 Star、Issue 和 PR。


本文汇总 react-agent-mini v7 一批「对照 Claude Code 的优化」:修默认策略、对齐运行时习惯、补可观测性,并堵住 Skill 编排顺序这类硬协议坑。

更多推荐