pi-firecode 0.8.1 → 1.0.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.
Files changed (79) hide show
  1. package/README.md +58 -24
  2. package/README.zh-CN.md +74 -0
  3. package/config.example.jsonc +47 -57
  4. package/dist/config.example.jsonc +90 -0
  5. package/dist/index.js +11464 -0
  6. package/dist/master/prompts/master.en.md +22 -0
  7. package/dist/master/prompts/master.zh.md +22 -0
  8. package/dist/master/prompts/worker.en.md +1 -0
  9. package/dist/master/prompts/worker.zh.md +1 -0
  10. package/{review → dist/review}/prompts/review.en.md +7 -6
  11. package/{review → dist/review}/prompts/review.zh.md +7 -6
  12. package/dist/watcher/prompts/watch.en.md +43 -0
  13. package/{watcher → dist/watcher}/prompts/watch.zh.md +1 -1
  14. package/package.json +10 -27
  15. package/config.ts +0 -474
  16. package/deliver.ts +0 -32
  17. package/flame-frames.ts +0 -460
  18. package/format.ts +0 -80
  19. package/header.ts +0 -92
  20. package/herdr-client.ts +0 -60
  21. package/index.ts +0 -62
  22. package/jsonc.ts +0 -34
  23. package/master/event-card.ts +0 -106
  24. package/master/event-format.ts +0 -52
  25. package/master/index.ts +0 -1200
  26. package/master/prompt.ts +0 -26
  27. package/master/prompts/master.zh.md +0 -17
  28. package/master/prompts/worker.zh.md +0 -1
  29. package/master/role.ts +0 -13
  30. package/master/spawn.ts +0 -193
  31. package/master/state.ts +0 -201
  32. package/provider/claude-sub.ts +0 -129
  33. package/provider/openai-native/index.ts +0 -8
  34. package/provider/openai-native/src/compact-client.ts +0 -362
  35. package/provider/openai-native/src/config.ts +0 -297
  36. package/provider/openai-native/src/extension.ts +0 -93
  37. package/provider/openai-native/src/native-compaction.ts +0 -151
  38. package/provider/openai-native/src/native-details.ts +0 -157
  39. package/provider/openai-native/src/native-replay.ts +0 -253
  40. package/provider/openai-native/src/native-runtime.ts +0 -144
  41. package/provider/openai-native/src/options.ts +0 -85
  42. package/provider/openai-native/src/request-pipeline.ts +0 -21
  43. package/provider/openai-native/src/responses-input.ts +0 -433
  44. package/review/advisor.ts +0 -112
  45. package/review/card.ts +0 -385
  46. package/review/checkpoint.ts +0 -384
  47. package/review/evidence.ts +0 -232
  48. package/review/index.ts +0 -1246
  49. package/review/outcome.ts +0 -74
  50. package/review/progress.ts +0 -324
  51. package/review/prompt.ts +0 -210
  52. package/review/reviewer.ts +0 -356
  53. package/review/session.ts +0 -129
  54. package/review/state.ts +0 -905
  55. package/review/ui.ts +0 -528
  56. package/session/bark.ts +0 -157
  57. package/session/herdr-display.ts +0 -87
  58. package/session/presets.ts +0 -257
  59. package/session/rename.ts +0 -46
  60. package/session/stats.ts +0 -310
  61. package/session/working-flame.ts +0 -116
  62. package/statusbar/index.ts +0 -118
  63. package/statusbar/quota-cache.ts +0 -60
  64. package/statusbar/quota-parse.ts +0 -85
  65. package/statusbar/quota.ts +0 -203
  66. package/statusbar/render.ts +0 -181
  67. package/statusbar/tps.ts +0 -87
  68. package/theme.ts +0 -84
  69. package/tools/grouping.ts +0 -233
  70. package/tools/index.ts +0 -183
  71. package/tools/line.ts +0 -194
  72. package/tools/parts.ts +0 -143
  73. package/tools/timing.ts +0 -22
  74. package/watcher/card.ts +0 -85
  75. package/watcher/index.ts +0 -204
  76. package/watcher/observer.ts +0 -75
  77. package/watcher/transcript.ts +0 -64
  78. /package/{review → dist/review}/prompts/advisor.en.md +0 -0
  79. /package/{review → dist/review}/prompts/advisor.zh.md +0 -0
package/README.md CHANGED
@@ -1,40 +1,74 @@
1
- # FireCode
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Suge8/firecode/main/design/brand/logo-dark.svg">
4
+ <img alt="firecode" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/brand/logo-light.svg" height="72">
5
+ </picture>
6
+ </p>
2
7
 
3
- FireCode 是一个模块化 Pi Package,提供终端状态与工具渲染、会话预设、`/fire-review` 对抗审查、`/fire-master` 进程内子代理委派和 `/fire-watch` 观察员。指挥官与观察员的新会话状态由配置决定,裸命令只翻转当前会话;各模块由功能开关独立注册,关闭任一模块不会改变其余模块。
8
+ <h3 align="center">Install one extension. Uninstall the rest.</h3>
4
9
 
5
- ## 安装
10
+ <p align="center">Parallel sub-agents, multi-model code review and a cleaner terminal for <a href="https://pi.dev">Pi</a>. One install, works out of the box.</p>
6
11
 
7
- ```bash
8
- pi install git:github.com/Suge8/firecode@v0.6.1
9
- ```
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/pi-firecode"><img alt="npm" src="https://img.shields.io/npm/v/pi-firecode?color=FF7A0F"></a>
14
+ <a href="https://github.com/Suge8/firecode/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/Suge8/firecode/actions/workflows/ci.yml/badge.svg"></a>
15
+ <a href="LICENSE"><img alt="MIT" src="https://img.shields.io/badge/license-MIT-blue"></a>
16
+ · <a href="README.zh-CN.md">中文</a>
17
+ </p>
10
18
 
11
- 也可在本地仓库中直接试用:
19
+ <p align="center"><img alt="The commander dispatching three sub-agents in parallel" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/promo/hero.gif" width="860"></p>
12
20
 
13
- ```bash
14
- pi -e .
15
- ```
21
+ ## Why FireCode
16
22
 
17
- Pi Package 拥有与 Pi 相同的本机权限;安装前应审阅源码。
23
+ - **Works out of the box.** The default config is the recommended one, in your language.
24
+ - **Sub-agents under control.** Run them in parallel, pick a model per role, switch automatically on failure, step in any time.
25
+ - **Hands-off review and delivery.** You don't babysit it. What reaches you has already passed review.
26
+ - **An ultra-light core.** Built the Pi way: minimal, so your context stays lean.
27
+ - **Low visual load.** Focus on the results that matter. Everything in between folds away until you open it.
18
28
 
19
- ## 配置
29
+ ## Fully automatic review and delivery
20
30
 
21
- 运行配置不随包分发。将公开模板复制到 Pi Agent 目录后按需启用功能,再重启 Pi:
31
+ Just tell the commander what you want. On important or hard tasks it starts an adversarial review on its own: any number of models you choose look for problems, every problem goes back to be fixed, and the fix is reviewed again until it passes. What reaches you is code that meets the bar and does what you asked. If it keeps getting stuck, an advisor model decides what to do next. You can also run `/fire-review` yourself at any time.
22
32
 
23
- ```bash
24
- agent_dir="${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}"
25
- mkdir -p "$agent_dir/extensions/firecode"
26
- curl -fsSL https://raw.githubusercontent.com/Suge8/firecode/v0.6.1/config.example.jsonc \
27
- -o "$agent_dir/extensions/firecode/config.jsonc"
28
- ```
33
+ <p align="center"><img alt="Round 1 fails, the agent fixes it, round 2 passes" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/promo/review-loop.gif" width="760"></p>
34
+
35
+ Other reviewers hand you a list of problems. FireCode hands you code that's fixed and re-reviewed:
36
+
37
+ | | Reviewers | What you get |
38
+ | --- | --- | --- |
39
+ | **FireCode** | Any number of models, reviewing adversarially | **Fixed code that passed re-review** |
40
+ | Qwen Code `/review` | Up to 16 agents, one model | A findings list; `--fix` patches once, no re-review |
41
+ | Open Code Review (Alibaba) | One model, file by file | A findings list to fix yourself |
42
+ | PR-Agent / Qodo | Specialist agents, one model | Comments and suggestions |
43
+ | multi-model-review (Pi) | Several model families | One combined verdict |
29
44
 
30
- 公开模板提供维护者当前的完整推荐配置:除 Bark 外功能全开,Master 与 Watcher 在新会话自动激活。Watcher 会在每个主会话回合后调用模型,OpenAI priority 会按供应商规则加价;复制前应确认列出的模型均已认证并接受额外费用。审查与观察员的模型必须显式写入运行配置,否则对应功能拒绝启动。缺少运行配置时,FireCode 会关闭可选功能并在会话启动时警告;配置模板本身不会被运行时读取。
45
+ ## Clear sub-agent status
31
46
 
32
- ## 开发
47
+ Every sub-agent sits above the input box. Click one to read its whole run and talk to it directly.
33
48
 
34
- 需要 [Bun](https://bun.sh/) 和一个 pi-mono checkout。开发版 `pi` 在 `PATH` 中时,测试会自动定位它;否则设置 `PI_PACKAGES_DIR` 为 pi-mono 的 `packages/` 目录。
49
+ <p align="center"><img alt="A sub-agent's full run with a follow-up typed into its own input box" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/promo/shot-worker-view.png" width="720"></p>
50
+
51
+ ## An ultra-light core
52
+
53
+ Built the Pi way: sub-agents add just two small tools, and review and the watcher add none. Here is what sub-agent tools cost on every request (tool definitions sent to the model, measured October 2026):
54
+
55
+ | | Sub-agent tools | Characters |
56
+ | --- | --- | --- |
57
+ | **FireCode** | 2 | **926** |
58
+ | omp | 2 | 3,140 |
59
+ | Codex CLI | 5–6 | 4,766–9,378 |
60
+ | pi-subagents | 2–3 | 4,703–23,182 |
61
+
62
+ ## Also in the box
63
+
64
+ `/fire-watch` a cheap model that speaks up only when work drifts · `/preset` switch model, thinking and tools in one go · `/quota` and `/tokens` usage at a glance · `Ctrl+R` rename the session · `Ctrl+Shift+S` OpenAI Fast mode · Works with Claude subscription login
65
+
66
+ ## Install
35
67
 
36
68
  ```bash
37
- bun test
69
+ pi install npm:pi-firecode
38
70
  ```
39
71
 
40
- 模块边界、状态机约束和领域术语见 `AGENTS.md`、各模块的 `AGENTS.md` 与 `CONTEXT.md`。
72
+ Restart Pi (1.1.0+) and it's ready; the config is created on first launch. Turn anything off with `"features": { "<name>": false }` in `~/.pi/agent/extensions/firecode/config.jsonc`.
73
+
74
+ [Contributing](.github/CONTRIBUTING.md) · MIT © Suge8
@@ -0,0 +1,74 @@
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Suge8/firecode/main/design/brand/logo-dark.svg">
4
+ <img alt="firecode" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/brand/logo-light.svg" height="72">
5
+ </picture>
6
+ </p>
7
+
8
+ <h3 align="center">装这一个,其余扩展都可以卸了。</h3>
9
+
10
+ <p align="center">给 <a href="https://pi.dev">Pi</a> 加上并行子代理、多模型代码审查和更干净的终端界面。装一个就够,开箱即用。</p>
11
+
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/pi-firecode"><img alt="npm" src="https://img.shields.io/npm/v/pi-firecode?color=FF7A0F"></a>
14
+ <a href="https://github.com/Suge8/firecode/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/Suge8/firecode/actions/workflows/ci.yml/badge.svg"></a>
15
+ <a href="LICENSE"><img alt="MIT" src="https://img.shields.io/badge/license-MIT-blue"></a>
16
+ · <a href="README.md">English</a>
17
+ </p>
18
+
19
+ <p align="center"><img alt="指挥官并行派出三个子代理" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/promo/hero.zh.gif" width="860"></p>
20
+
21
+ ## 为什么用 FireCode
22
+
23
+ - **开箱即用。** 默认配置就是推荐配置,支持多语言。
24
+ - **子代理可控。** 并行跑,每个角色独立选模型,出故障自动切换,随时点开干预。
25
+ - **审查交付全自动。** 不用盯着,交到你手里的就是审查通过的结果。
26
+ - **核心极轻。** 完美契合 Pi 原生的极简思路,上下文保持极度轻量。
27
+ - **视觉负担低。** 你只需要在乎真正重要的结果,中间过程全部折叠,想看再展开。
28
+
29
+ ## 全自动审查交付
30
+
31
+ 你只管告诉指挥官要做什么。遇到重要、难的任务,它会自动发起对抗审查:你配置的任意多个模型一起挑问题,挑出来就打回修复,修完再审,直到通过才交给你,交出来的是质量过关、满足需求的代码。反复卡住时,顾问模型会出来拿主意。想手动审,也可以随时执行 `/fire-review`。
32
+
33
+ <p align="center"><img alt="第 1 轮没过,代理修复后第 2 轮通过" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/promo/review-loop.zh.gif" width="760"></p>
34
+
35
+ 别的审查工具交给你一份问题清单,FireCode 交给你修好并复审通过的代码:
36
+
37
+ | | 审查者 | 交到你手里的是 |
38
+ | --- | --- | --- |
39
+ | **FireCode** | 任意多个模型对抗审查 | **修好、复审通过的代码** |
40
+ | Qwen Code `/review` | 最多 16 个代理,同一个模型 | 问题清单;`--fix` 修一次,不复审 |
41
+ | Open Code Review(阿里) | 同一个模型,逐文件审 | 问题清单,要你自己修 |
42
+ | PR-Agent / Qodo | 分工代理,同一个模型 | 评论和修改建议 |
43
+ | multi-model-review(Pi) | 多家模型 | 一份汇总结论 |
44
+
45
+ ## 清晰的子代理状态
46
+
47
+ 每个子代理都列在输入框上方,点一下就能看它的完整过程,并直接跟它说话。
48
+
49
+ <p align="center"><img alt="子代理的完整过程,在它自己的输入框里补一句话" src="https://raw.githubusercontent.com/Suge8/firecode/main/design/promo/shot-worker-view.zh.png" width="720"></p>
50
+
51
+ ## 核心极轻
52
+
53
+ 完美契合 Pi 原生的极简思路:子代理只加两个小工具,审查和观察员一个都不加。下表是子代理工具在每次请求里占的上下文(发给模型的工具定义字符数,2026 年 10 月实测):
54
+
55
+ | | 子代理工具数 | 字符数 |
56
+ | --- | --- | --- |
57
+ | **FireCode** | 2 | **926** |
58
+ | omp | 2 | 3,140 |
59
+ | Codex CLI | 5–6 | 4,766–9,378 |
60
+ | pi-subagents | 2–3 | 4,703–23,182 |
61
+
62
+ ## 还有这些
63
+
64
+ `/fire-watch` 便宜模型帮你盯着,跑偏才开口 · `/preset` 一键切换模型、思考档和工具 · `/quota`、`/tokens` 看用量 · `Ctrl+R` 改会话名 · `Ctrl+Shift+S` 开关 OpenAI 加速档 · 适配 Claude 订阅登录
65
+
66
+ ## 安装
67
+
68
+ ```bash
69
+ pi install npm:pi-firecode
70
+ ```
71
+
72
+ 重启 Pi(1.1.0 及以上)就能用,配置文件首次启动时自动生成。不想要哪个功能,在 `~/.pi/agent/extensions/firecode/config.jsonc` 里写 `"features": { "<名字>": false }` 关掉。
73
+
74
+ [参与开发](.github/CONTRIBUTING.md) · MIT © Suge8
@@ -1,100 +1,90 @@
1
1
  {
2
- // 公开推荐配置:除 Bark 外功能全开。复制后重启 Pi。
3
- // Watcher 默认在每个主会话回合后调用模型;OpenAI priority 会按供应商规则加价。
2
+ // Recommended config: every feature on. It is written here on first launch; swap in the models you are logged in to, then restart Pi.
3
+ // The watcher does not activate itself in a new session; run /fire-watch to toggle it for the current session.
4
+ // Everywhere a model is named, use the same model atom: "provider/model/thinking" (the last segment is the thinking level).
5
+ // Language of the UI and of the text shown to models: follows the system locale by default (zh* → Chinese, otherwise English); uncomment the next line to pin it, "zh" | "en".
6
+ // "language": "en",
4
7
  "features": {
5
8
  "header": true,
6
9
  "statusbar": true,
7
10
  "tools": true,
8
11
  "presets": true,
9
- "rename": true,
10
12
  "stats": true,
11
13
  "claudeSub": true,
12
14
  "openaiNative": true,
13
- "workingFlame": true,
14
- "bark": false,
15
15
  "review": true,
16
16
  "master": true,
17
17
  "watcher": true
18
18
  },
19
19
 
20
20
  "keys": {
21
- "rename": "ctrl+r",
22
- "cyclePreset": "ctrl+shift+u",
23
- "fast": "ctrl+f"
21
+ "fast": "ctrl+shift+s"
24
22
  },
25
23
 
26
- // nativeCompaction 使用 OpenAI 原生上下文压缩;priority 加钱换更快出字。
24
+ // nativeCompaction uses OpenAI's native context compaction; priority pays more for faster output and is off by default.
27
25
  "openai": {
28
26
  "nativeCompaction": true,
29
27
  "providers": {
30
- "openai-codex": { "textVerbosity": "low", "priority": true },
31
- "xai": { "priority": true }
28
+ "openai-codex": { "textVerbosity": "low", "priority": false }
32
29
  }
33
30
  },
34
31
 
35
- // 每个主会话回合后评估新增内容,会产生额外模型调用;需要开口时当场插话。
36
- "watcher": {
37
- "enabled": true,
38
- "model": "openai-codex/gpt-5.6-sol",
39
- "thinking": "low",
40
- "context": "minimal"
41
- },
42
-
43
- // 新会话默认激活指挥官;每个模型原子必须是 provider/model/thinking。
32
+ // New sessions activate the Master by default. Role names are yours to choose; the Master picks a role by its "use".
44
33
  "master": {
45
34
  "autoActivate": true,
46
35
  "workerExcludeExtensions": [],
47
36
  "roles": {
48
- "调研员": {
49
- "model": "openai-codex/gpt-5.6-luna/xhigh",
50
- "use": "大规模并行调研,便宜,不承担实现"
51
- },
52
- "工程师": {
53
- "model": "openai-codex/gpt-5.6-sol/medium",
54
- "use": "常规实现与调试,速度快",
55
- "fallback": ["anthropic/claude-opus-5/medium"]
37
+ "researcher": {
38
+ "model": "anthropic/claude-haiku-5-5/low",
39
+ "use": "Read-only: web search, docs and version lookups, reading logs, locating code from leads, checking references",
40
+ "fallback": ["openai-codex/gpt-6-luna/medium"]
56
41
  },
57
- "全栈": {
58
- "model": "anthropic/claude-opus-5/medium",
59
- "use": "前后端综合实现与调试",
60
- "fallback": ["openai-codex/gpt-5.6-sol/medium"]
42
+ "engineer": {
43
+ "model": "anthropic/claude-sonnet-5-5/high",
44
+ "use": "Changes code: implementation, debugging; also for audits that need deep code reading to find defects (read-only)",
45
+ "fallback": ["openai-codex/gpt-6.1-sol/high"]
61
46
  },
62
- "架构师": {
63
- "model": "anthropic/claude-fable-5/high",
64
- "use": "高级架构顾问;费用高,启用前必须先征求用户确认"
47
+ "batch": {
48
+ "model": "anthropic/claude-haiku-5-5/medium",
49
+ "use": "Well-specified bulk changes that tests or type checks can verify: pattern migrations, renames, boilerplate; for large volumes split by file and run several in parallel",
50
+ "fallback": ["openai-codex/gpt-6.1-sol/medium"]
65
51
  },
66
- "设计师": {
67
- "model": "kimi-coding/k3-256k/high",
68
- "use": "纯视觉设计;已有固定组件和设计方案时不适用"
52
+ "designer": {
53
+ "model": "anthropic/claude-opus-5-5/medium",
54
+ "use": "Visual and frontend work",
55
+ "fallback": ["openai-codex/gpt-6.1-sol/high"]
69
56
  },
70
- "哨兵": {
71
- "model": "openai-codex/gpt-5.6-luna/low",
72
- "use": "盯守 CI、部署与长测试等等待过程"
57
+ "sentinel": {
58
+ "model": "anthropic/claude-haiku-5-5/low",
59
+ "use": "Waiting on CI, deployments and long tests",
60
+ "fallback": ["anthropic/claude-sonnet-5-5/low"]
73
61
  }
74
62
  }
75
63
  },
76
64
 
77
65
  "presets": {
78
- "fable": { "provider": "anthropic", "model": "claude-fable-5", "thinkingLevel": "high", "key": "alt+1" },
79
- "opus5": { "provider": "anthropic", "model": "claude-opus-5", "thinkingLevel": "medium", "key": "alt+2" },
80
- "sol": { "provider": "openai-codex", "model": "gpt-5.6-sol", "thinkingLevel": "medium", "key": "alt+3" },
81
- "gemini": { "provider": "antigravity", "model": "gemini-3.7-flash", "thinkingLevel": "high", "key": "alt+4" },
82
- "ds": { "provider": "deepseek", "model": "deepseek-v4-flash", "thinkingLevel": "high", "key": "alt+5" },
83
- "k3-256": { "provider": "kimi-coding", "model": "k3-256k", "thinkingLevel": "high", "key": "alt+6" },
84
- "xai": { "provider": "xai", "model": "grok-4.6", "thinkingLevel": "high", "key": "alt+7" }
66
+ "sonnet": { "model": "anthropic/claude-sonnet-5-5/high", "key": "alt+1" },
67
+ "opus": { "model": "anthropic/claude-opus-5-5/high", "key": "alt+2" },
68
+ "fable": { "model": "anthropic/claude-fable-5-1/medium", "key": "alt+3" },
69
+ "astra": { "model": "openai-codex/gpt-6-astra/medium", "key": "alt+4" },
70
+ "sol": { "model": "openai-codex/gpt-6.1-sol/medium", "key": "alt+5" },
71
+ "ds": { "model": "deepseek/deepseek-flash/high", "key": "alt+6" }
85
72
  },
86
73
 
87
- // 审查只在用户或指挥官发起时调用模型。
74
+ // Review only calls models when the user or the Master starts it.
88
75
  "review": {
89
- "advisor": { "model": "anthropic/claude-fable-5", "thinking": "high" },
90
- "reviewers": [
91
- { "model": "anthropic/claude-sonnet-5", "thinking": "medium" },
92
- { "model": "anthropic/claude-opus-5", "thinking": "medium" }
93
- ],
76
+ "advisor": "anthropic/claude-fable-5-1/high",
77
+ "reviewers": ["anthropic/claude-opus-5-5/low", "openai-codex/gpt-6.1-sol/low"],
94
78
  "maxRounds": 5,
95
79
  "advisorAfterFailures": 2,
96
- "timeoutMinutes": 20,
97
- "tools": ["read", "grep", "find", "ls", "bash"],
98
- "language": "zh"
80
+ "timeoutMinutes": 40,
81
+ "tools": ["read", "grep", "find", "ls", "bash"]
82
+ },
83
+
84
+ // Once active, it evaluates what each main-session turn added, which costs extra model calls; it speaks up on the spot when needed.
85
+ "watcher": {
86
+ "enabled": false,
87
+ "model": "openai-codex/gpt-6.1-sol/medium",
88
+ "context": "minimal"
99
89
  }
100
90
  }
@@ -0,0 +1,90 @@
1
+ {
2
+ // Recommended config: every feature on. It is written here on first launch; swap in the models you are logged in to, then restart Pi.
3
+ // The watcher does not activate itself in a new session; run /fire-watch to toggle it for the current session.
4
+ // Everywhere a model is named, use the same model atom: "provider/model/thinking" (the last segment is the thinking level).
5
+ // Language of the UI and of the text shown to models: follows the system locale by default (zh* → Chinese, otherwise English); uncomment the next line to pin it, "zh" | "en".
6
+ // "language": "en",
7
+ "features": {
8
+ "header": true,
9
+ "statusbar": true,
10
+ "tools": true,
11
+ "presets": true,
12
+ "stats": true,
13
+ "claudeSub": true,
14
+ "openaiNative": true,
15
+ "review": true,
16
+ "master": true,
17
+ "watcher": true
18
+ },
19
+
20
+ "keys": {
21
+ "fast": "ctrl+shift+s"
22
+ },
23
+
24
+ // nativeCompaction uses OpenAI's native context compaction; priority pays more for faster output and is off by default.
25
+ "openai": {
26
+ "nativeCompaction": true,
27
+ "providers": {
28
+ "openai-codex": { "textVerbosity": "low", "priority": false }
29
+ }
30
+ },
31
+
32
+ // New sessions activate the Master by default. Role names are yours to choose; the Master picks a role by its "use".
33
+ "master": {
34
+ "autoActivate": true,
35
+ "workerExcludeExtensions": [],
36
+ "roles": {
37
+ "researcher": {
38
+ "model": "anthropic/claude-haiku-5-5/low",
39
+ "use": "Read-only: web search, docs and version lookups, reading logs, locating code from leads, checking references",
40
+ "fallback": ["openai-codex/gpt-6-luna/medium"]
41
+ },
42
+ "engineer": {
43
+ "model": "anthropic/claude-sonnet-5-5/high",
44
+ "use": "Changes code: implementation, debugging; also for audits that need deep code reading to find defects (read-only)",
45
+ "fallback": ["openai-codex/gpt-6.1-sol/high"]
46
+ },
47
+ "batch": {
48
+ "model": "anthropic/claude-haiku-5-5/medium",
49
+ "use": "Well-specified bulk changes that tests or type checks can verify: pattern migrations, renames, boilerplate; for large volumes split by file and run several in parallel",
50
+ "fallback": ["openai-codex/gpt-6.1-sol/medium"]
51
+ },
52
+ "designer": {
53
+ "model": "anthropic/claude-opus-5-5/medium",
54
+ "use": "Visual and frontend work",
55
+ "fallback": ["openai-codex/gpt-6.1-sol/high"]
56
+ },
57
+ "sentinel": {
58
+ "model": "anthropic/claude-haiku-5-5/low",
59
+ "use": "Waiting on CI, deployments and long tests",
60
+ "fallback": ["anthropic/claude-sonnet-5-5/low"]
61
+ }
62
+ }
63
+ },
64
+
65
+ "presets": {
66
+ "sonnet": { "model": "anthropic/claude-sonnet-5-5/high", "key": "alt+1" },
67
+ "opus": { "model": "anthropic/claude-opus-5-5/high", "key": "alt+2" },
68
+ "fable": { "model": "anthropic/claude-fable-5-1/medium", "key": "alt+3" },
69
+ "astra": { "model": "openai-codex/gpt-6-astra/medium", "key": "alt+4" },
70
+ "sol": { "model": "openai-codex/gpt-6.1-sol/medium", "key": "alt+5" },
71
+ "ds": { "model": "deepseek/deepseek-flash/high", "key": "alt+6" }
72
+ },
73
+
74
+ // Review only calls models when the user or the Master starts it.
75
+ "review": {
76
+ "advisor": "anthropic/claude-fable-5-1/high",
77
+ "reviewers": ["anthropic/claude-opus-5-5/low", "openai-codex/gpt-6.1-sol/low"],
78
+ "maxRounds": 5,
79
+ "advisorAfterFailures": 2,
80
+ "timeoutMinutes": 40,
81
+ "tools": ["read", "grep", "find", "ls", "bash"]
82
+ },
83
+
84
+ // Once active, it evaluates what each main-session turn added, which costs extra model calls; it speaks up on the spot when needed.
85
+ "watcher": {
86
+ "enabled": false,
87
+ "model": "openai-codex/gpt-6.1-sol/medium",
88
+ "context": "minimal"
89
+ }
90
+ }