codebee 0.1.95 → 0.1.97

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 (144) hide show
  1. package/CHANGELOG.md +733 -720
  2. package/LICENSE +21 -21
  3. package/README.md +516 -509
  4. package/app/core/acceptance.py +100 -100
  5. package/app/core/agent_context.py +118 -0
  6. package/app/core/aiflavor.py +197 -197
  7. package/app/core/analytics.py +38 -38
  8. package/app/core/artifacts.py +148 -148
  9. package/app/core/assets.py +110 -110
  10. package/app/core/attachments.py +623 -623
  11. package/app/core/audit.py +30 -30
  12. package/app/core/backup.py +470 -470
  13. package/app/core/beekeeper.py +183 -183
  14. package/app/core/benchstore.py +102 -95
  15. package/app/core/board.py +246 -209
  16. package/app/core/bookmeta.py +1036 -1036
  17. package/app/core/bookmeta_catalog.py +180 -180
  18. package/app/core/branching.py +137 -137
  19. package/app/core/builtin_agent.py +2055 -1680
  20. package/app/core/capability.py +144 -144
  21. package/app/core/chaptersafe.py +32 -32
  22. package/app/core/checkpoints.py +648 -0
  23. package/app/core/cleanup.py +303 -303
  24. package/app/core/compaction.py +201 -201
  25. package/app/core/contracts.py +255 -255
  26. package/app/core/covergen.py +356 -356
  27. package/app/core/defectretro.py +43 -43
  28. package/app/core/diagnostics.py +114 -114
  29. package/app/core/dispatch.py +198 -191
  30. package/app/core/dispatch_log.py +128 -128
  31. package/app/core/env_scrub.py +85 -85
  32. package/app/core/errorlog.py +137 -137
  33. package/app/core/eval_matrix.py +82 -0
  34. package/app/core/evalbench.py +184 -91
  35. package/app/core/evaluation.py +174 -174
  36. package/app/core/failure_notify.py +290 -290
  37. package/app/core/flow_graph.py +33 -0
  38. package/app/core/goal_service.py +167 -167
  39. package/app/core/health.py +389 -389
  40. package/app/core/history.py +38 -38
  41. package/app/core/hooks.py +162 -162
  42. package/app/core/jobs.py +25 -4
  43. package/app/core/knowledge_pipeline.py +86 -0
  44. package/app/core/manager.py +2232 -2232
  45. package/app/core/mcp_client.py +200 -29
  46. package/app/core/mocks.py +64 -64
  47. package/app/core/notify.py +201 -201
  48. package/app/core/novel_quality.py +181 -189
  49. package/app/core/openapi.py +177 -154
  50. package/app/core/operations.py +228 -228
  51. package/app/core/paihang.py +145 -145
  52. package/app/core/pipeline.py +319 -59
  53. package/app/core/planner.py +17 -11
  54. package/app/core/policy.py +84 -0
  55. package/app/core/portguard.py +111 -111
  56. package/app/core/presence.py +77 -77
  57. package/app/core/preview.py +293 -293
  58. package/app/core/project_memory.py +139 -0
  59. package/app/core/prompt_guard.py +78 -78
  60. package/app/core/publish/__init__.py +7 -7
  61. package/app/core/publish/auto.py +106 -22
  62. package/app/core/publish/browser.py +694 -655
  63. package/app/core/publish/chaprows.py +138 -0
  64. package/app/core/publish/fanqie.py +212 -165
  65. package/app/core/publish/flow.py +832 -640
  66. package/app/core/publish/flows-fanqie-calibrated.json +361 -336
  67. package/app/core/publish/ledger.py +51 -2
  68. package/app/core/publish/manager.py +1150 -1118
  69. package/app/core/publish/qimao.py +176 -176
  70. package/app/core/publish/volumes.py +108 -0
  71. package/app/core/publish/ws.py +139 -139
  72. package/app/core/quality_gate.py +194 -194
  73. package/app/core/redact.py +38 -38
  74. package/app/core/repeat_guard.py +129 -129
  75. package/app/core/retrieval.py +137 -137
  76. package/app/core/router.py +398 -398
  77. package/app/core/runner.py +2239 -2238
  78. package/app/core/selfupdate.py +384 -384
  79. package/app/core/session_log.py +161 -161
  80. package/app/core/sessions.py +312 -312
  81. package/app/core/settings.py +33 -5
  82. package/app/core/settings_schema.py +282 -271
  83. package/app/core/share_page.py +114 -114
  84. package/app/core/skill_scan.py +139 -139
  85. package/app/core/skillpacks/fanqie-novel.md +8 -6
  86. package/app/core/skillpacks/market/character-bible.md +66 -66
  87. package/app/core/skillpacks/market/code-risk-checklist.md +58 -58
  88. package/app/core/skillpacks/market/git-workflow.md +57 -57
  89. package/app/core/skillpacks/market/release-notes.md +72 -72
  90. package/app/core/skillpacks/market/weekly-report.md +71 -71
  91. package/app/core/skillpacks/market/worldview-consistency.md +70 -70
  92. package/app/core/skillpacks/qimao-signing.md +14 -11
  93. package/app/core/skills.py +32 -21
  94. package/app/core/step_runner.py +132 -132
  95. package/app/core/store.py +24 -0
  96. package/app/core/story_tracking.py +275 -275
  97. package/app/core/task_compile.py +199 -199
  98. package/app/core/telemetry.py +292 -292
  99. package/app/core/tlsctx.py +64 -64
  100. package/app/core/token_meter.py +147 -147
  101. package/app/core/tool_outputs.py +107 -0
  102. package/app/core/tracing.py +207 -144
  103. package/app/core/upstream.py +41 -41
  104. package/app/core/usage.py +1038 -1038
  105. package/app/core/volumes.py +389 -389
  106. package/app/core/webhooks.py +89 -0
  107. package/app/core/wxdigest.py +865 -858
  108. package/app/core/zentao.py +2692 -2692
  109. package/app/main.py +179 -10
  110. package/app/mcp_server.py +244 -244
  111. package/app/pick_dialog.py +110 -110
  112. package/app/ui/app.js +563 -21
  113. package/app/ui/artdiff.js +74 -74
  114. package/app/ui/assets/community-qr.png +0 -0
  115. package/app/ui/assets/donate-alipay.jpg +0 -0
  116. package/app/ui/assets/donate-qr.jpg +0 -0
  117. package/app/ui/assets/workbench-reference.png +0 -0
  118. package/app/ui/board.css +451 -666
  119. package/app/ui/board.html +165 -162
  120. package/app/ui/board.js +509 -305
  121. package/app/ui/hive3d.js +242 -0
  122. package/app/ui/i18n.js +125 -9
  123. package/app/ui/icons/bee.svg +79 -79
  124. package/app/ui/index.html +60 -3
  125. package/app/ui/manifest.json +16 -16
  126. package/app/ui/qrcode.js +2297 -2297
  127. package/app/ui/style.css +189 -9
  128. package/bin/tutti.js +147 -147
  129. package/package.json +49 -48
  130. package/tools/wx_reader.py +261 -261
  131. package/app/.playwright-cli/console-2026-09-23T08-26-03-635Z.log +0 -88
  132. package/app/.playwright-cli/page-2026-09-23T08-26-03-845Z.yml +0 -126
  133. package/app/.playwright-cli/page-2026-09-23T08-29-44-203Z.png +0 -0
  134. package/app/.playwright-cli/page-2026-09-23T08-35-42-046Z.yml +0 -210
  135. package/app/.playwright-cli/page-2026-09-23T08-36-52-858Z.png +0 -0
  136. package/app/.playwright-cli/page-2026-09-23T08-37-33-938Z.png +0 -0
  137. package/app/.playwright-cli/run-detail-after.png +0 -0
  138. package/app/output/_createbook_body.json +0 -1
  139. package/app/output/_probe_fq_click.py +0 -50
  140. package/app/output/_probe_fq_form.py +0 -42
  141. package/app/output/_probe_fq_modal.py +0 -55
  142. package/app/output/_probe_fq_points.py +0 -71
  143. package/app/output/_probe_fq_submit.py +0 -34
  144. package/app/output/_probe_fq_watch.py +0 -62
package/README.md CHANGED
@@ -1,509 +1,516 @@
1
- # <img src="app/ui/icons/logo-horizontal.png" width="96" align="top" alt="CodeBee"> CodeBee · 多智能体编排台
2
-
3
- > All agents, one hive. —— 一声令下,群蜂齐作。
4
- > *CodeBee*,码蜂:蜂后统筹(编排者)、侦察蜂定方向(规划/评审)、工蜂采蜜(实现)——
5
- > 一个蜂巢,多只蜜蜂,酿同一份蜜。
6
-
7
- [![npm version](https://img.shields.io/npm/v/codebee)](https://www.npmjs.com/package/codebee)
8
- [![python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/downloads/)
9
- [![license](https://img.shields.io/badge/license-MIT-green)](LICENSE)
10
-
11
- **AI 是引擎,你的经验是方向盘。** CodeBee 为你指挥一支跨厂商的执笔/编码小队:
12
- 统一调度本机已装的 AI 编码 CLI(Codex CLI、Claude Code、Qwen Code、OpenCode、Aider、
13
- Kimi Code、MiMo Code、Grok Build、Pi、DeepSeek Harness、Gemini CLI、CodeBuddy CLI、
14
- Trae Agent、OpenClaw……),提供
15
- **目标 → 自动拆解 → 智能路由 → 执行 → 客观验证 → 跨厂商评审 → 自动修复/换将 → 汇总报告**
16
- 的完整闭环。你不在时它们自动推进、自我打磨;需要你拍板的地方——质量闸门、任务分支的
17
- 采纳与丢弃——它们会亮起「待裁决」等你,绝不静默替你决定。
18
-
19
- <img src="docs/screenshots/home.png" width="820" alt="CodeBee 主界面:极简新建任务 + 任务列表">
20
-
21
- 零第三方依赖:纯 Python 标准库(3.8+),本地 Web 界面,数据全部落盘可回放,
22
- 不会把你的任务内容交给任何第三方。
23
-
24
-
25
-
26
- ### 最新版更新内容(v0.1.65)
27
-
28
- - 非小说任务不再生成「作品简介」垃圾(报告腔标题实案修复)
29
- - 简介自动净化:剥标题符/列表符/加粗
30
-
31
-
32
-
33
- ---
34
-
35
- <!-- relnotes:start -->
36
- ### 最新版更新内容(v0.1.95)
37
-
38
- - 验证命令保真修复:预置代码流程的参数覆盖/分享码导入不再把验证命令当文件名消毒——`pytest tests/test_a.py` 这类含路径命令原样保真
39
- - 视频脚本类型推荐补词:照引导语输入「B站/视频号」现在正确弹出类型切换建议
40
- <!-- relnotes:end -->
41
-
42
-
43
- ---
44
-
45
- ## 功能速览
46
-
47
- ### 🐝 蜂巢工作台:实时盯进度,像看蜂群干活
48
-
49
- 运行详情按智能体分格,谁在采蜜一目了然:每只蜜蜂带忙碌动画,点一下直接看该 CLI
50
- 的实时日志流;步骤卡片记录每一步的角色、耗时、token 与费用。
51
-
52
- <div>
53
- <img src="docs/screenshots/hive.png" width="400" align="top" alt="蜂巢工作台">
54
- <img src="docs/screenshots/run_steps.png" width="400" align="top" alt="步骤时间线与 CLI 日志">
55
- </div>
56
-
57
- ### ⚔️ 跨厂商对抗式评审
58
-
59
- 评审者强制来自与作者不同的模型族——同族自评有同款盲区,换一双"眼睛"才挑得出
60
- 陈词滥调。评审按维度独立打分 + 提行级意见,不达标自动回炉修订;无跨厂商可用时
61
- 如实备注,绝不伪装。
62
-
63
- <img src="docs/screenshots/bindings.png" width="820" alt="CLI 绑定:跨厂商模型链">
64
-
65
- ### 🔗 模型链跨厂商降级
66
-
67
- 「CLI 绑定」页把模型链配成 `主模型 → 备选 → 再备选`,每条自带供应商凭据注入
68
- (API key + 地址,只影响 CodeBee 发起的调用,不改写 CLI 全局配置)。主模型瞬态失败
69
- (503/限流)自动切下一条——可能是另一家厂商的模型。配额耗尽、供应商欠费也能自动接力。
70
-
71
- ### 🧠 经验库:越跑越好,无需人工维护
72
-
73
- 每次任务结束由编排者复盘评审暴露的问题,自动沉淀为教训并归类(情节逻辑 / 人物塑造 /
74
- 节奏爽点 / 文笔风格 / 一致性 / 流程规范),下次同类任务自动注入提示词。内置规范包
75
- (如七猫签约标准)自动注入小说类任务;「插件市场」一键安装社区经验包。
76
-
77
- <div>
78
- <img src="docs/screenshots/skills.png" width="400" align="top" alt="经验库">
79
- <img src="docs/screenshots/market.png" width="400" align="top" alt="插件市场">
80
- </div>
81
-
82
- ### 📚 知识库:你的个人知识管理库
83
-
84
- 与经验库是一对搭档——教训记「别这么做」,知识记「已知是这样」。任务结束由编排者
85
- 从产出材料(调研报告/文档)自动提炼可复用知识条目,默认直接转正参与注入;也可手动
86
- 新建。条目按任务类型与相关性自动注入同类任务的规划与评审提示词;事实带账龄,
87
- as_of 超 90 天注入时自动标注「可能过期」。
88
-
89
- <img src="docs/screenshots/knowledge.png" width="820" alt="知识库:自动提炼 + 标签过滤 + 手动新建">
90
-
91
- ### 🛠 智能体管理台:检测 / 安装 / 升级 / 一键绑模型
92
-
93
- 自动检测本机全部 CLI(含版本号),安装失败时 AI 读日志自动诊断给修正命令;「默认模型」
94
- 写回各家 CLI 自己的配置文件;「一键绑定推荐模型」按协议适配与可用性自动配好跨厂商链。
95
-
96
- <img src="docs/screenshots/agents.png" width="820" alt="智能体管理:目录检测与一键绑定">
97
-
98
- ### 📡 模型接入:十种来源聚合
99
-
100
- 点「导入」扫描本机 CCSwitch / Claude Code / Codex CLI / ZCode / Qwen / Gemini /
101
- OpenCode / Continue / Cursor / Trae 十种工具的配置,一次带入全部供应商(自动拉取模型
102
- 列表与价格表);也支持手动添加任意 OpenAI / Anthropic 兼容网关。密钥只存本机。
103
-
104
- <img src="docs/screenshots/models.png" width="820" alt="模型接入:多来源供应商聚合">
105
-
106
- ### 📊 用量台账:每一分钱都有账
107
-
108
- 所有真实 LLM 调用(编排步骤、编排者直连、连通性冒烟、AI 修复)计入 append-only
109
- 台账:总 tokens、成功率、累计费用、每日趋势(纯 SVG 零依赖),按工具 / 智能体 /
110
- 模型 / 角色 / 任务类型五维排行,支持今天 / 近 7 天 / 近 30 天 / 全部。
111
-
112
- <img src="docs/screenshots/usage.png" width="820" alt="用量统计">
113
-
114
- ### ⏱ 自动化:定时任务无人值守
115
-
116
- 按计划自动运行任务(每天 / 每周 / 间隔 / 一次性),复用真实运行链到点开跑;
117
- 错过的临时任务标记跳过不补跑,连载类错过自动断点续跑。
118
-
119
- <img src="docs/screenshots/automation.png" width="820" alt="自动化:定时任务列表与下次运行时间">
120
-
121
- ### 📖 帮助中心与作品信息
122
-
123
- **F1** 随时呼出多章帮助中心(快速上手 / 模型接入与绑定 / 功能一览 / 连载创作流程 /
124
- 发布上架 / 代码任务与版本 / 自动化与技能市场 / 常见问题),设置页与工作台头部的
125
- 「?」直达对应章节。连载任务详情页「作品信息」按发布平台生成建书表单资料
126
- (番茄 / 七猫),逐字段复制即用;封面生成与发布上架通道打通最后一公里。
127
-
128
- <div>
129
- <img src="docs/screenshots/help.png" width="400" align="top" alt="帮助中心">
130
- <img src="docs/screenshots/bookmeta.png" width="400" align="top" alt="作品信息:按平台生成建书资料">
131
- </div>
132
-
133
- ### 更多内置能力
134
-
135
- - **18 种任务类型**:直接执行、代码、小说、连载小说、自媒体文章、短视频脚本、
136
- 文档、翻译、扫榜选材、缺陷复盘、调研报告、演讲稿、演示文稿、工作汇报、商务邮件、技术方案、简历、标书编制;
137
- 全部支持自定义流程(引擎 / 评审维度 / 阈值 / 轮数 / 提示词覆盖);
138
- - **质量闸门与裁决**:评审失败≠0 分照过、降级大纲不开写、超时但已落盘的稿件照常
139
- 送评审;需要人拍板的事项进「待裁决」队列(徽章 + 提示音),`tools/bee.py`
140
- 命令行不开浏览器也能过裁决;
141
- - **产物隔离在任务分支**:指定代码版本的任务,产物提交在 `codebee/<task-id>`
142
- 分支上(工作区始终干净),详情页 Git 工作台看 diff,一键合并回原分支或丢弃;
143
- - **运行中指挥**:任务跑着也能递话——文字 / 截图 / 附件注入下一轮;
144
- - **对话模式**:不拆步骤、直接执行,时间线式对话页,随时追话续上下文;
145
- - **自动化**:定时任务复用真实运行链,到点自动开跑(错过的一次性任务不补跑);
146
- - **禅道 Bug 自动修复**:多产品档案(每产品配我方端/前后端仓库/负责人),定时扫描
147
- 激活 Bug 先排查定责(模块路由规则 > AI 判端 > 留人工)——我方端自动建修复任务
148
- 跑完整代码链,修完自动合并;双端问题修完我方部分后带修复报告转派另一端负责人,
149
- 非我方转回报告人;测试指错人也按排查结论改派;修复失败自动升级转派;群机器人
150
- 全程播报(设置页「禅道」子页配置);
151
- - **多任务并发**:任务默认立即启动、无等待队列,并发保护上限默认 12;连载任务超时/中断自动
152
- 断点续跑;
153
- - **远程访问**:手机同一 WiFi 直开、Tailscale 外网可达、Cloudflare Tunnel 固定
154
- 域名——8 位访问令牌保护,多端实时同步(SSE),单设备控制权防互踩;
155
- - **7 套皮肤**(默认「深海」),每套自带日间 / 夜间两版,安装默认即 深海·日间 + 中文。
156
-
157
- ---
158
-
159
- ## 快速开始
160
-
161
- **方式一:npm 安装(推荐,普通用户)**
162
-
163
- 需要本机装有 [Node.js](https://nodejs.org) 与 [Python 3.8+](https://www.python.org/downloads/)
164
- (Windows 装 Python 时勾选 “Add python.exe to PATH”)。然后:
165
-
166
- ```bat
167
- npm install -g codebee
168
- codebee
169
- ```
170
-
171
- `codebee` 命令会启动服务并自动打开浏览器(默认 `http://127.0.0.1:8765`)。
172
- **启动后那个命令行窗口就是服务本身**——保持开着别关,Ctrl+C 即退出。
173
- 每一步启动进度都会实时打印,卡在哪一步一眼可见。
174
-
175
- 升级:`npm update -g codebee`,或在界面「设置 → 关于与更新」里一键升级;
176
- 发现新版本时页面会直接展示本次更新内容。
177
-
178
- 数据存放在用户目录(Windows `%APPDATA%\CodeBee`,macOS/Linux `~/.codebee`),
179
- 升级/重装不影响;老版本 Tutti 目录(`%APPDATA%\Tutti`)会被自动沿用,无需迁移。
180
-
181
- ### macOS:npm 全局安装报 EACCES(permission denied)
182
-
183
- 官方 pkg 安装的 Node,全局目录 `/usr/local/lib/node_modules` 归 root,直接
184
- `npm install -g codebee` 会报
185
- `EACCES: permission denied, mkdir '/usr/local/lib/node_modules/codebee'`。
186
- **不要用 sudo 装**:装完目录归 root,应用内「一键升级」(以普通用户跑
187
- `npm install -g codebee@latest`)之后每次都会撞同样的权限错误。
188
- 正确做法是把 npm 全局目录改到用户目录下,一次配好、安装与自动升级都畅通:
189
-
190
- ```bash
191
- mkdir -p ~/.npm-global
192
- npm config set prefix "~/.npm-global"
193
- echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc
194
- source ~/.zshrc
195
- npm install -g codebee
196
- ```
197
-
198
- 默认 shell 是 bash 的话,把第 3 行的 `~/.zshrc` 换成 `~/.bash_profile`。
199
- 用 Homebrew 装的 Node(prefix 在 `/opt/homebrew`)没有这个问题,可直接安装。
200
- 验证 `which codebee` 指向 `~/.npm-global/bin/codebee` 即配置成功。
201
-
202
- ### macOS:HTTPS 请求报 SSL 证书错误(CERTIFICATE_VERIFY_FAILED)
203
-
204
- python.org 安装的 Python 不读 macOS 系统钥匙串,本机又没有可用的 CA 束时,
205
- 「获取模型列表 / 适配测试 / 插件市场」等所有 HTTPS 检测会报
206
- `certificate verify failed: unable to get local issuer certificate`。
207
- CodeBee 已内置兜底:出站请求自动加载 certifi 与 macOS 系统证书束
208
- (`/etc/ssl/cert.pem`),多数机器无需任何操作。若仍报错,补齐证书后重试:
209
-
210
- ```bash
211
- python3 -m pip install --upgrade certifi # CodeBee 自动采用,装完即生效
212
- # 或:Finder → 应用程序 → Python 3.x → 双击 Install Certificates.command
213
- ```
214
-
215
- **方式二:源码运行(开发者)**
216
-
217
- ```bat
218
- git clone https://github.com/Vercel-By-WXP/CodeBee.git
219
- cd CodeBee
220
- start.bat
221
- :: 或
222
- python app\main.py --port 8765
223
- ```
224
-
225
- 自动打开 `http://127.0.0.1:8765`。源码模式数据落仓库 `data/` 目录。
226
-
227
- ## 作者侧命令行(可选)
228
-
229
- 不开浏览器也能过裁决队列(本机免令牌):
230
-
231
- ```bat
232
- python tools\bee.py status :: 任务总览(含待裁决标记)
233
- python tools\bee.py pending :: 待裁决队列(分支 / 变更文件)
234
- python tools\bee.py diff <task> :: 看本次变更
235
- python tools\bee.py approve <task> :: 采纳——任务分支合并回原分支
236
- python tools\bee.py discard <task> :: 否决——删除任务分支(需输 yes)
237
- ```
238
-
239
- ## 任务类型与自定义流程
240
-
241
- 主表单的「类型」下拉即流程列表,点「管理」可新增/编辑自定义流程(引擎、评审维度、
242
- 阈值、轮数、产出文件名、起草/评审提示词覆盖)。内置 18 种;禅道工单是自动转成
243
- `code` 修复任务的集成入口,不另占菜单类型:
244
-
245
- | 类型 | 引擎 | 流程 |
246
- |---|---|---|
247
- | 💬 直接执行 | direct | 不拆步骤直接跑,时间线对话页可追话续上下文 |
248
- | 💻 代码 | code | 实现 → 验证 → 跨厂商评审 → 自动修复/换将 |
249
- | 📖 小说 | review | 起草 → 多维评审(情节/人物/文笔/节奏/吸引力)→ 修订 → 发布门禁 |
250
- | 📚 连载小说 | review | 大纲 → 逐章起草/评审/修订 → 全局一致性评审 → 合并成书(断点续跑/继续连载) |
251
- | 📰 自媒体文章 | review | 平台化标题/开头/结构 → 多维评审 → 修订 → 发布门禁 |
252
- | 🎬 短视频脚本 | review | 画面 + 口播 + 字幕/音效 → 多维评审 → 修订 → 发布门禁 |
253
- | 📝 文档 | review | 起草 → 多维评审(准确性/结构/表达/实用)→ 修订 → 门禁 |
254
- | 🌐 翻译 | review | 起草 → 多维评审(忠实度/流畅度/术语/风格)→ 修订 → 门禁 |
255
- | 📈 扫榜选材 | direct | 抓七猫/番茄/起点/纵横四平台榜单 → 跨平台题材/人设/切入点洞察,逐条附 A-E 证据分级 |
256
- | 🕓 缺陷复盘 | direct | 读禅道/Jira 导出 → 产品/开发/测试三视角复盘报告 |
257
- | 🔍 调研报告 | review | 起草 → 多维评审(全面性/深度/论据/结论)→ 修订 → 门禁 |
258
- | 🎤 演讲稿 | review | 起草 → 多维评审(主题/结构/感染力/语言)→ 修订 → 门禁 |
259
- | 🖥️ 演示文稿 | review | 逐页大纲 + 讲稿(Markdown,不生成 PPT 二进制)→ 多维评审(结构/密度/呈现/演讲适配)→ 修订 → 门禁 |
260
- | 📅 工作汇报 / ✉️ 商务邮件 / 📋 技术方案 / 📄 简历 | review | 各自专属角色、交付约束与评审维度 |
261
- | 📑 标书编制 | review | 招标文件对齐评分点 → 多维评审(应答/合规/针对性)→ 修订 → 门禁 |
262
-
263
- 三种引擎:
264
- - **direct 引擎**:单智能体直接执行目标,保留会话上下文,适合问答、探索和无需评审链的快捷任务;
265
- - **code 引擎**:实现者在工作目录直接改代码 → 执行验证命令(确定性结果)→ 跨厂商评审
266
- (结构化 JSON)→ 不通过则自动修复循环(至多 2 轮)→ 仍失败自动换将全量重实现;
267
- - **review 引擎**:作者起草产出文件 → 多个评审智能体按维度独立打分 + 提问题 →
268
- 任一维度低于阈值则汇总 major 意见回炉修订 → 所有维度达标才标记"达到发布标准"。
269
-
270
- 自定义流程的参数在创建任务时固化到任务上,之后修改流程定义不影响已建任务。
271
-
272
- ### 连载小说与继续连载
273
-
274
- 「连载小说」按批次写作:大纲 → 逐章起草/每章评审修订 → 全局一致性评审 → 合并成书。
275
- 写完一批想接着写下一批(比如先写了前 10 章,现在续写 11–20 章):
276
-
277
- - **侧栏任务右键 → 「继续连载(新任务)」**,或打开任务/运行详情点「继续连载」按钮;
278
- - 弹框填续写章数(默认与上一批相同)→ 自动**新建一个任务**开跑。
279
-
280
- 续写任务沿用原任务的目标/上下文/工作目录/评审设置,从已写到的新一章接着写:
281
- 旧章一字不动,章节文件(`chapter-NN.md`)与成书合并(`manuscript.md`)都按
282
- 全书章号衔接;续写大纲会自动注入前情大纲与最新一章结尾作衔接锚点,保证跨批
283
- 剧情连贯;新任务标题自动带「·续 / ·续2」代数。若上一批没写完(超时/中断),
284
- 先用「↻ 重试任务」断点续跑补完本批(继承大纲与已完成章),再「继续连载」写
285
- 下一批。「继续连载」只出现在连载任务上(带章节衔接语义)。
286
-
287
- 任何任务右键 → 「基于此任务新建」可把同款配置预填进新建表单(连载的章节衔接
288
- 请用「继续连载」;沿用同一工作目录会覆盖原产出,表单会提醒)。
289
-
290
- ## 极简输入 + 会话延续
291
-
292
- 主表单只有 3 项:**类型、目标(一句话)、工作目录**(自动记住上次填写)。
293
- 标题自动取目标首行;其余(上下文/验证命令/编排模式/实现者/评审组/轮数/阈值)全部
294
- 收进"高级选项"折叠,默认全智能无需改动。
295
-
296
- **在已有会话上继续**:「继续会话」下拉列出本机**已安装且支持会话恢复**的 CLI
297
- (Codex CLI、Claude Code、OpenCode、QwenCode、MiMo Code 等),选中后 CodeBee 扫描
298
- 其本地会话(时间 / 项目 / 内容预览),挑一条即可延续那个会话的完整上下文——
299
- 实现者自动指定为对应智能体,规划、实现、修复都在原会话上进行(评审仍用新鲜
300
- 上下文避免偏见)。
301
-
302
- 各家会话存放位置与恢复方式(2026-09 本机实测):
303
-
304
- | CLI | 会话位置 | 恢复方式 |
305
- | --- | --- | --- |
306
- | Codex CLI | `~/.codex/sessions/**.jsonl` | `codex exec resume <sid>` |
307
- | Claude Code | `~/.claude/projects/*/<sid>.jsonl` | `claude -p --resume <sid>` |
308
- | OpenCode | `~/.local/share/opencode/opencode.db`(SQLite) | `opencode run -s <sid>` |
309
- | QwenCode | `~/.qwen/projects/*/chats/<sid>.jsonl` | `qwen -r <sid>` |
310
- | MiMo Code | `~/.local/share/mimocode/mimocode.db`(SQLite) | `mimo run -s <sid>` |
311
-
312
- 两点注意:续会话是**显式指定**,不要求该 CLI 在设置页开启「参与编排」;
313
- headless 一次性调用的 CLI(如 DeepSeek Harness)不支持会话恢复,不出现在下拉里。
314
-
315
- ## 手机 / 远程访问
316
-
317
- 服务默认监听 `0.0.0.0`,启动时控制台会打印所有可用地址:
318
-
319
- ```
320
- [CodeBee] 本机 http://127.0.0.1:8765
321
- [CodeBee] 局域网 http://192.168.x.x:8765/?token=xxxxxxxx ← 手机同一 WiFi 直接打开
322
- [CodeBee] Tailscale http://100.x.x.x:8765/?token=xxxxxxxx ← 外网随时随地访问
323
- ```
324
-
325
- - **令牌**:远程访问受访问令牌保护(首次启动生成,存于 `data/remote.json`;本机
326
- 127.0.0.1 免令牌)。手机打开带 `?token=` 的地址后自动记住;令牌错误会弹输入门。
327
- - **多端同步**:所有设备看到同一份实时状态(SSE 推送,秒级),断线自动降级为轮询。
328
- - **控制权**:同一时刻只有一台设备能操作,空闲时任意操作自动接管,其他设备只读,
329
- 顶栏胶囊一键抢回;45 秒无操作自动释放。
330
- - **外网**:手机与电脑都装 [Tailscale](https://tailscale.com) 登录同一账号即随时随地访问。
331
-
332
- ### 公网访问(自己的域名 + Cloudflare Tunnel)
333
-
334
- ```bat
335
- :: 一次性配置:cloudflared 登录后创建隧道并绑定子域名
336
- cloudflared tunnel login
337
- cloudflared tunnel create codebee
338
- cloudflared tunnel route dns --overwrite-dns <隧道UUID> codebee.你的域名.com
339
-
340
- :: 之后日常启动(服务 + 隧道一键起):
341
- start-public.bat
342
- ```
343
-
344
- - 真本机(不带转发头的 loopback)不受影响。
345
- - `--public-url` 让「手机连接」弹框的二维码直接给公网地址。
346
- - 公网暴露面 = 8 位访问令牌;想更强可叠加 Cloudflare Access(零信任,免费档 50 用户)。
347
- - Cloudflare 免费版即可:无需公网 IP、无需备案、不开任何入站端口。
348
-
349
- ### 公网访问(零配置临时隧道)
350
-
351
- 装了 [cloudflared](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/)
352
- (`winget install Cloudflare.cloudflared`)后,**默认启动即自动建立 Cloudflare 临时隧道**:
353
- 控制台打印一个随机的 `https://xxx.trycloudflare.com` 公网地址,出门扫码即用。
354
- 每次重启地址会变(手机重新扫码即可)。
355
-
356
- - 已有 Cloudflare 隧道凭据的机器(`~/.cloudflared` 下有 `*.json`)不会自动起临时隧道,
357
- 请走固定域名路径;`--no-public-tunnel` 可彻底关闭该行为。
358
- - 打开即自动强制 `--trusted-proxy`:公网暴露 ⇆ 反代回源令牌校验,二者永不分离。
359
-
360
- ## 多任务并发
361
-
362
- 任务执行器采用直接启动模式(并发保护上限默认 12,设置页「编排设置」可调 1-12):多个任务同时跑、
363
- 互不打扰——每个任务独立线程,运行数据按 run 隔离,不进入等待队列。达到保护上限时本次请求明确失败并提示稍后重试;并发数调小只影响后续任务,已有任务继续完成。
364
- 连载任务超时/中断会自动断点续跑;重试前按明确时间退避,防止在网关限流墙上连续撞死,
365
- 这段等待不占执行位,也不属于任务容量排队。
366
-
367
- ## 编排设置(编排者模型)
368
-
369
- 「编排设置」页可给 **CodeBee 自己的智能体**指定一个厂商的模型(直连 API,不占
370
- CLI 会话):统一负责任务的**规划拆解、难度判定与写作大纲**。未启用或调用失败时
371
- 自动回落为「最强可用 CLI 智能体」规划,流程永不阻塞。三种协议(anthropic /
372
- openai / google)都可作编排者;一键测试连通。
373
-
374
- ## 两种智能体
375
-
376
- - **真实智能体**:来自 `data/catalog.json`,已安装且在管理页勾选"参与编排"的 CLI;
377
- - **mock 智能体**(演示智能体 A/B):内置、零消耗,用于验证流程 / 演示 / 回归测试。
378
-
379
- mock 的评分逻辑是确定性的:第 1 轮故意略低于阈值、第 2 轮达标——用来验证发布门禁。
380
- 仅当本机一个真实智能体都没有时才回退显示在表单里。
381
-
382
- ## 模型接入(API 供应商)
383
-
384
- "模型接入"页是**主从视图**:左侧选供应商,右侧看该供应商的模型。
385
-
386
- - **导入(多来源)**:点「导入」弹出扫描结果,列出本机所有受支持的 AI 工具及各自可导入
387
- 的供应商数量,勾选后可一次导入。支持 **CCSwitch(含 Claude Desktop / Codex / Gemini /
388
- OpenClaw)、Claude Code、Codex CLI、ZCode、Qwen Code、Gemini CLI、OpenCode、Continue、
389
- Cursor、Trae**——只读这些工具的配置,不改写它们本身;导入后**自动拉取各供应商的可用
390
- 模型列表**(后台并发,CCSwitch 的每百万 token 价格表一并带入);按「来源 + 原始条目」
391
- 幂等,重复导入原地更新并保留你设置的模型、启停状态与已删除墓碑;
392
- - **手动添加**:点「+」弹出表单(名称 / 协议 / API 地址 / 密钥 / 默认与难度模型),
393
- 保存后自动拉取模型列表;地址若误填成 `.../v1/chat/completions` 会自动收敛为基址;
394
- - **协议**:`anthropic` 与 `openai` 可注入 CLI;`google`(Gemini)**仅登记**——
395
- 可查看、可拉取模型列表,但不会出现在 CLI 绑定的下拉里;
396
- - **左侧供应商列表**:名称、协议、来源标签、已拉取的模型数;支持批量启用/停用/删除;
397
- 停用即「暂不参与编排」,配置与墓碑保留,随时可再启用;
398
- - **右侧供应商详情**:测试连接(连通性 + 延迟);模型按协议分组、每行可测试
399
- (1-token 真实对话,显示 `✓ 850ms` 或 `✗ HTTP 402 欠费`)与启停;批量操作原子生效;
400
- 拖动 ☰ 调整调用优先级;删除模型是标记隐藏而非物理移除(刷新/重导入不会带回来),
401
- 「已删除 N 个」可恢复;
402
- - **自动优先级**:新拉取的模型按名称启发式自动排序(pro/opus 强者靠前,
403
- mini/flash 便宜者靠后),手动调序后刷新会保留你的顺序;
404
- - **协议适配**:网关实际支持的 wire(responses / chat completions)可一键「适配测试」
405
- 实测登记;`protocol=auto` 的供应商按实测能力集自动归类;
406
- - **运行时语义**:「CLI 绑定」页的**模型链可跨厂商混搭**——每条自带该供应商的
407
- 凭据注入(API key + 地址),第 1 条是主模型,其余按序降级:主模型瞬态失败
408
- (503/限流/无可用通道)自动切到下一条,**可能是另一家厂商的模型**(最多 3 条);
409
- 链空则按供应商默认 / 难度路由自动选;同厂商多密钥可配多把 KEY,欠费/冷却自动切备用;
410
- - **安全**:拉取与测试仅访问用户自己配置的 http/https 地址,解析 IP 做边界校验、
411
- 禁用重定向;内网自建网关(私网 IP)导入时自动放行 `allow_private`;
412
- 密钥只存本机 `data/models.json`。
413
-
414
- CLI 默认冒烟、供应商可达性、wire 适配、单模型生成、绑定路由与完整任务验收各有不同的
415
- 通过条件;统一错误分类、换路规则和近期失败复盘见 [执行与评测标准](docs/execution-standard.md)。
416
-
417
- ## 智能编排(默认模式)
418
-
419
- 任务表单默认"智能"模式:只填 **目标 + 工作目录**,其余由系统决定:
420
-
421
- 1. **规划**:最强可用智能体把目标拆成 ≤4 个有序子任务(JSON 计划,失败退化为单步模板),计划在运行详情可见;
422
- 2. **智能路由**:能力基线 × 历史胜率(过往 run 的 verdict 统计)打分选实现者;评审者强制跨厂商;每一步记录"为什么选它";
423
- 3. **自动修复**:验证或评审不通过 → 问题清单自动发回实现者修复 → 重验证 → 重评审(至多 2 轮);
424
- 4. **自动换将**:修复穷尽仍失败 → 自动切换到次优智能体全量重实现一次;
425
- 5. **报告**:结论、评分、路由依据、修复轮数、问题清单。
426
-
427
- "手动"模式保留完整人工控制(指定实现者、评审组等),行为同 v1。
428
-
429
- ## 智能体管理
430
-
431
- "智能体管理"页提供:
432
-
433
- - **检测**:已装 / 未装、版本号(CLI `--version` / UWP AppxManifest / PowerShell);
434
- - **安装 / 升级 / 卸载**:执行 catalog 里配置的命令,日志**实时流式落盘**(边跑边看);
435
- **安装失败时 AI 自动诊断**——真实智能体读取失败日志 + 本机环境给出修正命令,
436
- 只有命中白名单(`npm install` / `winget install` / `pip install` 前缀)才自动执行,
437
- 否则留待人工确认;卸载命令由安装命令自动推导,特殊渠道可显式覆盖;
438
- - **模型配置**:工具默认模型(写回各家配置文件,自动备份 `.bak`);
439
- CodeBee 编排运行时用哪个供应商 / 模型统一在「CLI 绑定」页配置;
440
- - **编排开关**:决定哪些 CLI 参与任务路由。
441
-
442
- Kimi Code / MiMo Code / Grok Build / Pi / DeepSeek Harness / Gemini CLI / CodeBuddy CLI /
443
- Trae Agent 的安装命令已内置(均取自
444
- 各工具官方渠道)。若某个条目的安装命令缺失,直接编辑 `data/catalog.json` 补上
445
- `install` 字段保存后点"重新加载 catalog"即可;点"恢复默认 catalog"可回滚。
446
-
447
- ## 接入原理(已在本机实测)
448
-
449
- | CLI | 无头调用 | 输出解析 |
450
- |---|---|---|
451
- | Codex CLI | `codex exec --skip-git-repo-check --json -s <sandbox>`(stdin 传提示词) | JSONL 事件流:`item.completed`=回答,`turn.completed`=token 用量 |
452
- | Claude Code | `claude -p --output-format json`(stdin 传提示词;自动注入 Git Bash 路径与输出上限) | 单个 JSON:`result` / `total_cost_usd` / `usage` |
453
- | DeepSeek Harness | `dsh --profile headless "<任务>"`(任务只能走位置参数) | stdout 即最终回答;退出码 0=完成 / 1=错误 |
454
-
455
- - **模型指定因 CLI 而异**:codex/claude 支持运行时注入(env / `-c` 覆盖);dsh 只认
456
- `~/.dsh/settings.yaml` 的配置项,凭据走 `DEEPSEEK_API_KEY` 环境变量(不落盘);
457
- kimi/grok-build/mimo/pi/openclaw 的默认模型落点均已逐一实测内置,配置由 CodeBee
458
- 托管写入(自动备份)。
459
- - **协议闸门**:claude 只吃 anthropic wire、codex 只吃 openai responses、dsh 只吃
460
- OpenAI 兼容 chat——不匹配的供应商在绑定与起跑前就会被剔除并提示,不会产生
461
- 「必然失败的注入组合」。
462
- - 所有子进程:并发读管道防死锁、超时/取消杀整棵进程树(`taskkill /T`)、stdout 全量
463
- 落盘;输出静默看门狗(默认 600s)防个别 CLI 卡死,超时自动换将接力。
464
-
465
- ## 目录约定
466
-
467
- ```
468
- data/(npm 安装:%APPDATA%\CodeBee 或 ~/.codebee;源码模式:仓库 data/)
469
- catalog.json 智能体目录(可手动编辑)
470
- orchestration.json 编排偏好(参与编排开关)
471
- models.json 供应商 / CLI 绑定(跨厂商模型链)/ 多 KEY
472
- flows.json 自定义任务流程
473
- settings.json 运行设置(最大并发数)
474
- tasks/*.json 任务
475
- runs/<run_id>/ 每次运行:run.json、steps/*.log、report.md、error.log
476
- usage/ 用量台账(usage-YYYYMM.jsonl,按月分文件,append-only)
477
- skills.json 经验库(教训 + 规范包)
478
- ```
479
-
480
- 安全约束(内置,勿绕过):配置路径必须位于用户主目录内;任务工作目录必须是已存在的
481
- 绝对路径;稿件文件名消毒后限制在工作目录内;步骤日志读取禁止目录穿越;
482
- 远程写操作需设备控制权 + 访问令牌。
483
-
484
- ## 测试
485
-
486
- ```bat
487
- cd tests && python -m unittest discover -p "test_*.py" -v
488
- python tests\e2e_service.py :: 起真实服务的端到端(临时数据目录 + 独立端口,零配额)
489
- node tests\ui_check.mjs :: Edge headless + CDP 的 UI 交互验证
490
- node tests\ui_audit.mjs :: 全页面体检(逐页可见性 + 控制台异常)
491
- node tests\ui_skin.mjs :: 皮肤核验(调色板变量对齐 + 换肤/持久化)
492
- ```
493
-
494
- 单元测试(解析器/消毒/穿越防护/mock 确定性/流程注册表/跨厂商链/编排者/并发池/
495
- 自更新一致性)+ 端到端(mock 全流程、门禁逻辑、验证失败拦截、服务级 API 全链路),
496
- 全部不消耗真实配额。
497
-
498
- 发版必须使用根目录的 `npm run release:gate`:它会阻断脏工作区和全量红灯,
499
- 并从实际 npm 归档解包做 Python import 冒烟;只有闸门通过后,`npm run release`
500
- 才会执行 `npm publish`。
501
-
502
- ## 更新日志
503
-
504
- 见 [CHANGELOG.md](CHANGELOG.md)。应用内「设置 → 关于与更新」可检查更新、查看
505
- 每次更新的内容并一键升级(npm 安装模式)。
506
-
507
- ## License
508
-
509
- [MIT](LICENSE)
1
+ # <img src="app/ui/icons/logo-horizontal.png" width="96" align="top" alt="CodeBee"> CodeBee · 多智能体编排台
2
+
3
+ > All agents, one hive. —— 一声令下,群蜂齐作。
4
+ > *CodeBee*,码蜂:蜂后统筹(编排者)、侦察蜂定方向(规划/评审)、工蜂采蜜(实现)——
5
+ > 一个蜂巢,多只蜜蜂,酿同一份蜜。
6
+
7
+ [![npm version](https://img.shields.io/npm/v/codebee)](https://www.npmjs.com/package/codebee)
8
+ [![python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/downloads/)
9
+ [![license](https://img.shields.io/badge/license-MIT-green)](LICENSE)
10
+
11
+ **AI 是引擎,你的经验是方向盘。** CodeBee 为你指挥一支跨厂商的执笔/编码小队:
12
+ 统一调度本机已装的 AI 编码 CLI(Codex CLI、Claude Code、Qwen Code、OpenCode、Aider、
13
+ Kimi Code、MiMo Code、Grok Build、Pi、DeepSeek Harness、Gemini CLI、CodeBuddy CLI、
14
+ Trae Agent、OpenClaw……),提供
15
+ **目标 → 自动拆解 → 智能路由 → 执行 → 客观验证 → 跨厂商评审 → 自动修复/换将 → 汇总报告**
16
+ 的完整闭环。你不在时它们自动推进、自我打磨;需要你拍板的地方——质量闸门、任务分支的
17
+ 采纳与丢弃——它们会亮起「待裁决」等你,绝不静默替你决定。
18
+
19
+ <img src="docs/screenshots/home.png" width="820" alt="CodeBee 主界面:极简新建任务 + 任务列表">
20
+
21
+ 零第三方依赖:纯 Python 标准库(3.8+),本地 Web 界面,数据全部落盘可回放,
22
+ 不会把你的任务内容交给任何第三方。
23
+
24
+
25
+ ---
26
+
27
+ <!-- relnotes:start -->
28
+ ### 最新版更新内容(v0.1.97)
29
+
30
+ - 知识注入扩展到全部任务类型:引擎经验库/知识库全量覆盖,不再只有连载链受益
31
+ - 命中计数不重复累加,修复「从未被读到反而升权」的反馈回路缺陷
32
+ <!-- relnotes:end -->
33
+
34
+
35
+ ---
36
+
37
+ ## 功能速览
38
+
39
+ ### 🐝 蜂巢工作台:实时盯进度,像看蜂群干活
40
+
41
+ 运行详情按智能体分格,谁在采蜜一目了然:每只蜜蜂带忙碌动画,点一下直接看该 CLI
42
+ 的实时日志流;步骤卡片记录每一步的角色、耗时、token 与费用。
43
+
44
+ <div>
45
+ <img src="docs/screenshots/hive.png" width="400" align="top" alt="蜂巢工作台">
46
+ <img src="docs/screenshots/run_steps.png" width="400" align="top" alt="步骤时间线与 CLI 日志">
47
+ </div>
48
+
49
+ ### ⚔️ 跨厂商对抗式评审
50
+
51
+ 评审者强制来自与作者不同的模型族——同族自评有同款盲区,换一双"眼睛"才挑得出
52
+ 陈词滥调。评审按维度独立打分 + 提行级意见,不达标自动回炉修订;无跨厂商可用时
53
+ 如实备注,绝不伪装。
54
+
55
+ <img src="docs/screenshots/bindings.png" width="820" alt="CLI 绑定:跨厂商模型链">
56
+
57
+ ### 🔗 模型链跨厂商降级
58
+
59
+ 「CLI 绑定」页把模型链配成 `主模型 → 备选 → 再备选`,每条自带供应商凭据注入
60
+ (API key + 地址,只影响 CodeBee 发起的调用,不改写 CLI 全局配置)。主模型瞬态失败
61
+ (503/限流)自动切下一条——可能是另一家厂商的模型。配额耗尽、供应商欠费也能自动接力。
62
+
63
+ ### 🧠 经验库:越跑越好,无需人工维护
64
+
65
+ 每次任务结束由编排者复盘评审暴露的问题,自动沉淀为教训并归类(情节逻辑 / 人物塑造 /
66
+ 节奏爽点 / 文笔风格 / 一致性 / 流程规范),下次同类任务自动注入提示词。内置规范包
67
+ (如七猫签约标准)自动注入小说类任务;「插件市场」一键安装社区经验包。
68
+
69
+ <div>
70
+ <img src="docs/screenshots/skills.png" width="400" align="top" alt="经验库">
71
+ <img src="docs/screenshots/market.png" width="400" align="top" alt="插件市场">
72
+ </div>
73
+
74
+ ### 📚 知识库:你的个人知识管理库
75
+
76
+ 与经验库是一对搭档——教训记「别这么做」,知识记「已知是这样」。任务结束由编排者
77
+ 从产出材料(调研报告/文档)自动提炼可复用知识条目,默认直接转正参与注入;也可手动
78
+ 新建。条目按任务类型与相关性自动注入同类任务的规划与评审提示词;事实带账龄,
79
+ as_of 超 90 天注入时自动标注「可能过期」。
80
+
81
+ <img src="docs/screenshots/knowledge.png" width="820" alt="知识库:自动提炼 + 标签过滤 + 手动新建">
82
+
83
+ ### 🛠 智能体管理台:检测 / 安装 / 升级 / 一键绑模型
84
+
85
+ 自动检测本机全部 CLI(含版本号),安装失败时 AI 读日志自动诊断给修正命令;「默认模型」
86
+ 写回各家 CLI 自己的配置文件;「一键绑定推荐模型」按协议适配与可用性自动配好跨厂商链。
87
+
88
+ <img src="docs/screenshots/agents.png" width="820" alt="智能体管理:目录检测与一键绑定">
89
+
90
+ ### 📡 模型接入:十种来源聚合
91
+
92
+ 点「导入」扫描本机 CCSwitch / Claude Code / Codex CLI / ZCode / Qwen / Gemini /
93
+ OpenCode / Continue / Cursor / Trae 十种工具的配置,一次带入全部供应商(自动拉取模型
94
+ 列表与价格表);也支持手动添加任意 OpenAI / Anthropic 兼容网关。密钥只存本机。
95
+
96
+ <img src="docs/screenshots/models.png" width="820" alt="模型接入:多来源供应商聚合">
97
+
98
+ ### 📊 用量台账:每一分钱都有账
99
+
100
+ 所有真实 LLM 调用(编排步骤、编排者直连、连通性冒烟、AI 修复)计入 append-only
101
+ 台账:总 tokens、成功率、累计费用、每日趋势(纯 SVG 零依赖),按工具 / 智能体 /
102
+ 模型 / 角色 / 任务类型五维排行,支持今天 / 近 7 天 / 近 30 天 / 全部。
103
+
104
+ <img src="docs/screenshots/usage.png" width="820" alt="用量统计">
105
+
106
+ ### ⏱ 自动化:定时任务无人值守
107
+
108
+ 按计划自动运行任务(每天 / 每周 / 间隔 / 一次性),复用真实运行链到点开跑;
109
+ 错过的临时任务标记跳过不补跑,连载类错过自动断点续跑。
110
+
111
+ <img src="docs/screenshots/automation.png" width="820" alt="自动化:定时任务列表与下次运行时间">
112
+
113
+ ### 📖 帮助中心与作品信息
114
+
115
+ **F1** 随时呼出多章帮助中心(快速上手 / 模型接入与绑定 / 功能一览 / 连载创作流程 /
116
+ 发布上架 / 代码任务与版本 / 自动化与技能市场 / 常见问题),设置页与工作台头部的
117
+ 「?」直达对应章节。连载任务详情页「作品信息」按发布平台生成建书表单资料
118
+ (番茄 / 七猫),逐字段复制即用;封面生成与发布上架通道打通最后一公里。
119
+
120
+ <div>
121
+ <img src="docs/screenshots/help.png" width="400" align="top" alt="帮助中心">
122
+ <img src="docs/screenshots/bookmeta.png" width="400" align="top" alt="作品信息:按平台生成建书资料">
123
+ </div>
124
+
125
+ ### 更多内置能力
126
+
127
+ - **18 种任务类型**:直接执行、代码、小说、连载小说、自媒体文章、短视频脚本、
128
+ 文档、翻译、扫榜选材、缺陷复盘、调研报告、演讲稿、演示文稿、工作汇报、商务邮件、技术方案、简历、标书编制;
129
+ 全部支持自定义流程(引擎 / 评审维度 / 阈值 / 轮数 / 提示词覆盖);
130
+ - **质量闸门与裁决**:评审失败≠0 分照过、降级大纲不开写、超时但已落盘的稿件照常
131
+ 送评审;需要人拍板的事项进「待裁决」队列(徽章 + 提示音),`tools/bee.py`
132
+ 命令行不开浏览器也能过裁决;
133
+ - **产物隔离在任务分支**:指定代码版本的任务,产物提交在 `codebee/<task-id>`
134
+ 分支上(工作区始终干净),详情页 Git 工作台看 diff,一键合并回原分支或丢弃;
135
+ - **运行中指挥**:任务跑着也能递话——文字 / 截图 / 附件注入下一轮;
136
+ - **对话模式**:不拆步骤、直接执行,时间线式对话页,随时追话续上下文;
137
+ - **自动化**:定时任务复用真实运行链,到点自动开跑(错过的一次性任务不补跑);
138
+ - **禅道 Bug 自动修复**:多产品档案(每产品配我方端/前后端仓库/负责人),定时扫描
139
+ 激活 Bug 先排查定责(模块路由规则 > AI 判端 > 留人工)——我方端自动建修复任务
140
+ 跑完整代码链,修完自动合并;双端问题修完我方部分后带修复报告转派另一端负责人,
141
+ 非我方转回报告人;测试指错人也按排查结论改派;修复失败自动升级转派;群机器人
142
+ 全程播报(设置页「禅道」子页配置);
143
+ - **多任务并发**:任务默认立即启动、无等待队列,并发保护上限默认 12;连载任务超时/中断自动
144
+ 断点续跑;
145
+ - **远程访问**:手机同一 WiFi 直开、Tailscale 外网可达、Cloudflare Tunnel 固定
146
+ 域名——8 位访问令牌保护,多端实时同步(SSE),单设备控制权防互踩;
147
+ - **7 套皮肤**(默认「深海」),每套自带日间 / 夜间两版,安装默认即 深海·日间 + 中文。
148
+
149
+ ---
150
+
151
+ ## 快速开始
152
+
153
+ **方式一:npm 安装(推荐,普通用户)**
154
+
155
+ 需要本机装有 [Node.js](https://nodejs.org) 与 [Python 3.8+](https://www.python.org/downloads/)
156
+ (Windows 装 Python 时勾选 “Add python.exe to PATH”)。然后:
157
+
158
+ ```bat
159
+ npm install -g codebee
160
+ codebee
161
+ ```
162
+
163
+ `codebee` 命令会启动服务并自动打开浏览器(默认 `http://127.0.0.1:8765`)。
164
+ **启动后那个命令行窗口就是服务本身**——保持开着别关,Ctrl+C 即退出。
165
+ 每一步启动进度都会实时打印,卡在哪一步一眼可见。
166
+
167
+ 升级:`npm update -g codebee`,或在界面「设置 → 关于与更新」里一键升级;
168
+ 发现新版本时页面会直接展示本次更新内容。
169
+
170
+ 数据存放在用户目录(Windows `%APPDATA%\CodeBee`,macOS/Linux `~/.codebee`),
171
+ 升级/重装不影响;老版本 Tutti 目录(`%APPDATA%\Tutti`)会被自动沿用,无需迁移。
172
+
173
+ ### macOS:npm 全局安装报 EACCES(permission denied)
174
+
175
+ 官方 pkg 安装的 Node,全局目录 `/usr/local/lib/node_modules` 归 root,直接
176
+ `npm install -g codebee` 会报
177
+ `EACCES: permission denied, mkdir '/usr/local/lib/node_modules/codebee'`。
178
+ **不要用 sudo 装**:装完目录归 root,应用内「一键升级」(以普通用户跑
179
+ `npm install -g codebee@latest`)之后每次都会撞同样的权限错误。
180
+ 正确做法是把 npm 全局目录改到用户目录下,一次配好、安装与自动升级都畅通:
181
+
182
+ ```bash
183
+ mkdir -p ~/.npm-global
184
+ npm config set prefix "~/.npm-global"
185
+ echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc
186
+ source ~/.zshrc
187
+ npm install -g codebee
188
+ ```
189
+
190
+ 默认 shell 是 bash 的话,把第 3 行的 `~/.zshrc` 换成 `~/.bash_profile`。
191
+ 用 Homebrew 装的 Node(prefix 在 `/opt/homebrew`)没有这个问题,可直接安装。
192
+ 验证 `which codebee` 指向 `~/.npm-global/bin/codebee` 即配置成功。
193
+
194
+ ### macOS:HTTPS 请求报 SSL 证书错误(CERTIFICATE_VERIFY_FAILED)
195
+
196
+ python.org 安装的 Python 不读 macOS 系统钥匙串,本机又没有可用的 CA 束时,
197
+ 「获取模型列表 / 适配测试 / 插件市场」等所有 HTTPS 检测会报
198
+ `certificate verify failed: unable to get local issuer certificate`。
199
+ CodeBee 已内置兜底:出站请求自动加载 certifi 与 macOS 系统证书束
200
+ (`/etc/ssl/cert.pem`),多数机器无需任何操作。若仍报错,补齐证书后重试:
201
+
202
+ ```bash
203
+ python3 -m pip install --upgrade certifi # CodeBee 自动采用,装完即生效
204
+ # 或:Finder → 应用程序 → Python 3.x → 双击 Install Certificates.command
205
+ ```
206
+
207
+ **方式二:源码运行(开发者)**
208
+
209
+ ```bat
210
+ git clone https://github.com/Vercel-By-WXP/CodeBee.git
211
+ cd CodeBee
212
+ start.bat
213
+ :: 或
214
+ python app\main.py --port 8765
215
+ ```
216
+
217
+ 自动打开 `http://127.0.0.1:8765`。源码模式数据落仓库 `data/` 目录。
218
+
219
+ ## 作者侧命令行(可选)
220
+
221
+ 不开浏览器也能过裁决队列(本机免令牌):
222
+
223
+ ```bat
224
+ python tools\bee.py status :: 任务总览(含待裁决标记)
225
+ python tools\bee.py pending :: 待裁决队列(分支 / 变更文件)
226
+ python tools\bee.py diff <task> :: 看本次变更
227
+ python tools\bee.py approve <task> :: 采纳——任务分支合并回原分支
228
+ python tools\bee.py discard <task> :: 否决——删除任务分支(需输 yes)
229
+ ```
230
+
231
+ ## 任务类型与自定义流程
232
+
233
+ 主表单的「类型」下拉即流程列表,点「管理」可新增/编辑自定义流程(引擎、评审维度、
234
+ 阈值、轮数、产出文件名、起草/评审提示词覆盖)。内置 18 种;禅道工单是自动转成
235
+ `code` 修复任务的集成入口,不另占菜单类型:
236
+
237
+ | 类型 | 引擎 | 流程 |
238
+ |---|---|---|
239
+ | 💬 直接执行 | direct | 不拆步骤直接跑,时间线对话页可追话续上下文 |
240
+ | 💻 代码 | code | 实现 → 验证 → 跨厂商评审 → 自动修复/换将 |
241
+ | 📖 小说 | review | 起草 → 多维评审(情节/人物/文笔/节奏/吸引力)→ 修订 → 发布门禁 |
242
+ | 📚 连载小说 | review | 大纲 → 逐章起草/评审/修订 → 全局一致性评审 → 合并成书(断点续跑/继续连载) |
243
+ | 📰 自媒体文章 | review | 平台化标题/开头/结构 → 多维评审 → 修订 → 发布门禁 |
244
+ | 🎬 短视频脚本 | review | 画面 + 口播 + 字幕/音效 → 多维评审 → 修订 → 发布门禁 |
245
+ | 📝 文档 | review | 起草 → 多维评审(准确性/结构/表达/实用)→ 修订 → 门禁 |
246
+ | 🌐 翻译 | review | 起草 → 多维评审(忠实度/流畅度/术语/风格)→ 修订 → 门禁 |
247
+ | 📈 扫榜选材 | direct | 抓七猫/番茄/起点/纵横四平台榜单 → 跨平台题材/人设/切入点洞察,逐条附 A-E 证据分级 |
248
+ | 🕓 缺陷复盘 | direct | 读禅道/Jira 导出 → 产品/开发/测试三视角复盘报告 |
249
+ | 🔍 调研报告 | review | 起草 → 多维评审(全面性/深度/论据/结论)→ 修订 → 门禁 |
250
+ | 🎤 演讲稿 | review | 起草 → 多维评审(主题/结构/感染力/语言)→ 修订 → 门禁 |
251
+ | 🖥️ 演示文稿 | review | 逐页大纲 + 讲稿(Markdown,不生成 PPT 二进制)→ 多维评审(结构/密度/呈现/演讲适配)→ 修订 → 门禁 |
252
+ | 📅 工作汇报 / ✉️ 商务邮件 / 📋 技术方案 / 📄 简历 | review | 各自专属角色、交付约束与评审维度 |
253
+ | 📑 标书编制 | review | 招标文件对齐评分点 → 多维评审(应答/合规/针对性)→ 修订 → 门禁 |
254
+
255
+ 三种引擎:
256
+ - **direct 引擎**:单智能体直接执行目标,保留会话上下文,适合问答、探索和无需评审链的快捷任务;
257
+ - **code 引擎**:实现者在工作目录直接改代码 → 执行验证命令(确定性结果)→ 跨厂商评审
258
+ (结构化 JSON)→ 不通过则自动修复循环(至多 2 轮)→ 仍失败自动换将全量重实现;
259
+ - **review 引擎**:作者起草产出文件 → 多个评审智能体按维度独立打分 + 提问题 →
260
+ 任一维度低于阈值则汇总 major 意见回炉修订 → 所有维度达标才标记"达到发布标准"。
261
+
262
+ 自定义流程的参数在创建任务时固化到任务上,之后修改流程定义不影响已建任务。
263
+
264
+ ### 连载小说与继续连载
265
+
266
+ 「连载小说」按批次写作:大纲 → 逐章起草/每章评审修订 → 全局一致性评审 → 合并成书。
267
+ 写完一批想接着写下一批(比如先写了前 10 章,现在续写 11–20 章):
268
+
269
+ - **侧栏任务右键 → 「继续连载(新任务)」**,或打开任务/运行详情点「继续连载」按钮;
270
+ - 弹框填续写章数(默认与上一批相同)→ 自动**新建一个任务**开跑。
271
+
272
+ 续写任务沿用原任务的目标/上下文/工作目录/评审设置,从已写到的新一章接着写:
273
+ 旧章一字不动,章节文件(`chapter-NN.md`)与成书合并(`manuscript.md`)都按
274
+ 全书章号衔接;续写大纲会自动注入前情大纲与最新一章结尾作衔接锚点,保证跨批
275
+ 剧情连贯;新任务标题自动带「·续 / ·续2」代数。若上一批没写完(超时/中断),
276
+ 先用「↻ 重试任务」断点续跑补完本批(继承大纲与已完成章),再「继续连载」写
277
+ 下一批。「继续连载」只出现在连载任务上(带章节衔接语义)。
278
+
279
+ 任何任务右键 → 「基于此任务新建」可把同款配置预填进新建表单(连载的章节衔接
280
+ 请用「继续连载」;沿用同一工作目录会覆盖原产出,表单会提醒)。
281
+
282
+ ## 极简输入 + 会话延续
283
+
284
+ 主表单只有 3 项:**类型、目标(一句话)、工作目录**(自动记住上次填写)。
285
+ 标题自动取目标首行;其余(上下文/验证命令/编排模式/实现者/评审组/轮数/阈值)全部
286
+ 收进"高级选项"折叠,默认全智能无需改动。
287
+
288
+ **在已有会话上继续**:「继续会话」下拉列出本机**已安装且支持会话恢复**的 CLI
289
+ (Codex CLI、Claude Code、OpenCode、QwenCode、MiMo Code 等),选中后 CodeBee 扫描
290
+ 其本地会话(时间 / 项目 / 内容预览),挑一条即可延续那个会话的完整上下文——
291
+ 实现者自动指定为对应智能体,规划、实现、修复都在原会话上进行(评审仍用新鲜
292
+ 上下文避免偏见)。
293
+
294
+ 各家会话存放位置与恢复方式(2026-09 本机实测):
295
+
296
+ | CLI | 会话位置 | 恢复方式 |
297
+ | --- | --- | --- |
298
+ | Codex CLI | `~/.codex/sessions/**.jsonl` | `codex exec resume <sid>` |
299
+ | Claude Code | `~/.claude/projects/*/<sid>.jsonl` | `claude -p --resume <sid>` |
300
+ | OpenCode | `~/.local/share/opencode/opencode.db`(SQLite) | `opencode run -s <sid>` |
301
+ | QwenCode | `~/.qwen/projects/*/chats/<sid>.jsonl` | `qwen -r <sid>` |
302
+ | MiMo Code | `~/.local/share/mimocode/mimocode.db`(SQLite) | `mimo run -s <sid>` |
303
+
304
+ 两点注意:续会话是**显式指定**,不要求该 CLI 在设置页开启「参与编排」;
305
+ headless 一次性调用的 CLI(如 DeepSeek Harness)不支持会话恢复,不出现在下拉里。
306
+
307
+ ## 手机 / 远程访问
308
+
309
+ 服务默认监听 `0.0.0.0`,启动时控制台会打印所有可用地址:
310
+
311
+ ```
312
+ [CodeBee] 本机 http://127.0.0.1:8765
313
+ [CodeBee] 局域网 http://192.168.x.x:8765/?token=xxxxxxxx ← 手机同一 WiFi 直接打开
314
+ [CodeBee] Tailscale http://100.x.x.x:8765/?token=xxxxxxxx ← 外网随时随地访问
315
+ ```
316
+
317
+ - **令牌**:远程访问受访问令牌保护(首次启动生成,存于 `data/remote.json`;本机
318
+ 127.0.0.1 免令牌)。手机打开带 `?token=` 的地址后自动记住;令牌错误会弹输入门。
319
+ - **多端同步**:所有设备看到同一份实时状态(SSE 推送,秒级),断线自动降级为轮询。
320
+ - **控制权**:同一时刻只有一台设备能操作,空闲时任意操作自动接管,其他设备只读,
321
+ 顶栏胶囊一键抢回;45 秒无操作自动释放。
322
+ - **外网**:手机与电脑都装 [Tailscale](https://tailscale.com) 登录同一账号即随时随地访问。
323
+
324
+ ### 公网访问(自己的域名 + Cloudflare Tunnel)
325
+
326
+ ```bat
327
+ :: 一次性配置:cloudflared 登录后创建隧道并绑定子域名
328
+ cloudflared tunnel login
329
+ cloudflared tunnel create codebee
330
+ cloudflared tunnel route dns --overwrite-dns <隧道UUID> codebee.你的域名.com
331
+
332
+ :: 之后日常启动(服务 + 隧道一键起):
333
+ start-public.bat
334
+ ```
335
+
336
+ - 真本机(不带转发头的 loopback)不受影响。
337
+ - `--public-url` 让「手机连接」弹框的二维码直接给公网地址。
338
+ - 公网暴露面 = 8 位访问令牌;想更强可叠加 Cloudflare Access(零信任,免费档 50 用户)。
339
+ - Cloudflare 免费版即可:无需公网 IP、无需备案、不开任何入站端口。
340
+
341
+ ### 公网访问(零配置临时隧道)
342
+
343
+ 装了 [cloudflared](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/)
344
+ (`winget install Cloudflare.cloudflared`)后,**默认启动即自动建立 Cloudflare 临时隧道**:
345
+ 控制台打印一个随机的 `https://xxx.trycloudflare.com` 公网地址,出门扫码即用。
346
+ 每次重启地址会变(手机重新扫码即可)。
347
+
348
+ - 已有 Cloudflare 隧道凭据的机器(`~/.cloudflared` 下有 `*.json`)不会自动起临时隧道,
349
+ 请走固定域名路径;`--no-public-tunnel` 可彻底关闭该行为。
350
+ - 打开即自动强制 `--trusted-proxy`:公网暴露 ⇆ 反代回源令牌校验,二者永不分离。
351
+
352
+ ## 多任务并发
353
+
354
+ 任务执行器采用直接启动模式(并发保护上限默认 12,设置页「编排设置」可调 1-12):多个任务同时跑、
355
+ 互不打扰——每个任务独立线程,运行数据按 run 隔离,不进入等待队列。达到保护上限时本次请求明确失败并提示稍后重试;并发数调小只影响后续任务,已有任务继续完成。
356
+ 连载任务超时/中断会自动断点续跑;重试前按明确时间退避,防止在网关限流墙上连续撞死,
357
+ 这段等待不占执行位,也不属于任务容量排队。
358
+
359
+ ## 编排设置(编排者模型)
360
+
361
+ 「编排设置」页可给 **CodeBee 自己的智能体**指定一个厂商的模型(直连 API,不占
362
+ CLI 会话):统一负责任务的**规划拆解、难度判定与写作大纲**。未启用或调用失败时
363
+ 自动回落为「最强可用 CLI 智能体」规划,流程永不阻塞。三种协议(anthropic /
364
+ openai / google)都可作编排者;一键测试连通。
365
+
366
+ ## 两种智能体
367
+
368
+ - **真实智能体**:来自 `data/catalog.json`,已安装且在管理页勾选"参与编排"的 CLI;
369
+ - **mock 智能体**(演示智能体 A/B):内置、零消耗,用于验证流程 / 演示 / 回归测试。
370
+
371
+ mock 的评分逻辑是确定性的:第 1 轮故意略低于阈值、第 2 轮达标——用来验证发布门禁。
372
+ 仅当本机一个真实智能体都没有时才回退显示在表单里。
373
+
374
+ ## 模型接入(API 供应商)
375
+
376
+ "模型接入"页是**主从视图**:左侧选供应商,右侧看该供应商的模型。
377
+
378
+ - **导入(多来源)**:点「导入」弹出扫描结果,列出本机所有受支持的 AI 工具及各自可导入
379
+ 的供应商数量,勾选后可一次导入。支持 **CCSwitch(含 Claude Desktop / Codex / Gemini /
380
+ OpenClaw)、Claude Code、Codex CLI、ZCode、Qwen Code、Gemini CLI、OpenCode、Continue、
381
+ Cursor、Trae**——只读这些工具的配置,不改写它们本身;导入后**自动拉取各供应商的可用
382
+ 模型列表**(后台并发,CCSwitch 的每百万 token 价格表一并带入);按「来源 + 原始条目」
383
+ 幂等,重复导入原地更新并保留你设置的模型、启停状态与已删除墓碑;
384
+ - **手动添加**:点「+」弹出表单(名称 / 协议 / API 地址 / 密钥 / 默认与难度模型),
385
+ 保存后自动拉取模型列表;地址若误填成 `.../v1/chat/completions` 会自动收敛为基址;
386
+ - **协议**:`anthropic` 与 `openai` 可注入 CLI;`google`(Gemini)**仅登记**——
387
+ 可查看、可拉取模型列表,但不会出现在 CLI 绑定的下拉里;
388
+ - **左侧供应商列表**:名称、协议、来源标签、已拉取的模型数;支持批量启用/停用/删除;
389
+ 停用即「暂不参与编排」,配置与墓碑保留,随时可再启用;
390
+ - **右侧供应商详情**:测试连接(连通性 + 延迟);模型按协议分组、每行可测试
391
+ (1-token 真实对话,显示 `✓ 850ms` 或 `✗ HTTP 402 欠费`)与启停;批量操作原子生效;
392
+ 拖动 ☰ 调整调用优先级;删除模型是标记隐藏而非物理移除(刷新/重导入不会带回来),
393
+ 「已删除 N 个」可恢复;
394
+ - **自动优先级**:新拉取的模型按名称启发式自动排序(pro/opus 强者靠前,
395
+ mini/flash 便宜者靠后),手动调序后刷新会保留你的顺序;
396
+ - **协议适配**:网关实际支持的 wire(responses / chat completions)可一键「适配测试」
397
+ 实测登记;`protocol=auto` 的供应商按实测能力集自动归类;
398
+ - **运行时语义**:「CLI 绑定」页的**模型链可跨厂商混搭**——每条自带该供应商的
399
+ 凭据注入(API key + 地址),第 1 条是主模型,其余按序降级:主模型瞬态失败
400
+ (503/限流/无可用通道)自动切到下一条,**可能是另一家厂商的模型**(最多 3 条);
401
+ 链空则按供应商默认 / 难度路由自动选;同厂商多密钥可配多把 KEY,欠费/冷却自动切备用;
402
+ - **安全**:拉取与测试仅访问用户自己配置的 http/https 地址,解析 IP 做边界校验、
403
+ 禁用重定向;内网自建网关(私网 IP)导入时自动放行 `allow_private`;
404
+ 密钥只存本机 `data/models.json`。
405
+
406
+ CLI 默认冒烟、供应商可达性、wire 适配、单模型生成、绑定路由与完整任务验收各有不同的
407
+ 通过条件;统一错误分类、换路规则和近期失败复盘见 [执行与评测标准](docs/execution-standard.md)。
408
+
409
+ ## 智能编排(默认模式)
410
+
411
+ 任务表单默认"智能"模式:只填 **目标 + 工作目录**,其余由系统决定:
412
+
413
+ 1. **规划**:最强可用智能体把目标拆成 ≤4 个有序子任务(JSON 计划,失败退化为单步模板),计划在运行详情可见;
414
+ 2. **智能路由**:能力基线 × 历史胜率(过往 run 的 verdict 统计)打分选实现者;评审者强制跨厂商;每一步记录"为什么选它";
415
+ 3. **自动修复**:验证或评审不通过 → 问题清单自动发回实现者修复 → 重验证 → 重评审(至多 2 轮);
416
+ 4. **自动换将**:修复穷尽仍失败 → 自动切换到次优智能体全量重实现一次;
417
+ 5. **报告**:结论、评分、路由依据、修复轮数、问题清单。
418
+
419
+ "手动"模式保留完整人工控制(指定实现者、评审组等),行为同 v1。
420
+
421
+ ## 智能体管理
422
+
423
+ "智能体管理"页提供:
424
+
425
+ - **检测**:已装 / 未装、版本号(CLI `--version` / UWP AppxManifest / PowerShell);
426
+ - **安装 / 升级 / 卸载**:执行 catalog 里配置的命令,日志**实时流式落盘**(边跑边看);
427
+ **安装失败时 AI 自动诊断**——真实智能体读取失败日志 + 本机环境给出修正命令,
428
+ 只有命中白名单(`npm install` / `winget install` / `pip install` 前缀)才自动执行,
429
+ 否则留待人工确认;卸载命令由安装命令自动推导,特殊渠道可显式覆盖;
430
+ - **模型配置**:工具默认模型(写回各家配置文件,自动备份 `.bak`);
431
+ CodeBee 编排运行时用哪个供应商 / 模型统一在「CLI 绑定」页配置;
432
+ - **编排开关**:决定哪些 CLI 参与任务路由。
433
+
434
+ Kimi Code / MiMo Code / Grok Build / Pi / DeepSeek Harness / Gemini CLI / CodeBuddy CLI /
435
+ Trae Agent 的安装命令已内置(均取自
436
+ 各工具官方渠道)。若某个条目的安装命令缺失,直接编辑 `data/catalog.json` 补上
437
+ `install` 字段保存后点"重新加载 catalog"即可;点"恢复默认 catalog"可回滚。
438
+
439
+ ## 接入原理(已在本机实测)
440
+
441
+ | CLI | 无头调用 | 输出解析 |
442
+ |---|---|---|
443
+ | Codex CLI | `codex exec --skip-git-repo-check --json -s <sandbox>`(stdin 传提示词) | JSONL 事件流:`item.completed`=回答,`turn.completed`=token 用量 |
444
+ | Claude Code | `claude -p --output-format json`(stdin 传提示词;自动注入 Git Bash 路径与输出上限) | 单个 JSON:`result` / `total_cost_usd` / `usage` |
445
+ | DeepSeek Harness | `dsh --profile headless "<任务>"`(任务只能走位置参数) | stdout 即最终回答;退出码 0=完成 / 1=错误 |
446
+
447
+ - **模型指定因 CLI 而异**:codex/claude 支持运行时注入(env / `-c` 覆盖);dsh 只认
448
+ `~/.dsh/settings.yaml` 的配置项,凭据走 `DEEPSEEK_API_KEY` 环境变量(不落盘);
449
+ kimi/grok-build/mimo/pi/openclaw 的默认模型落点均已逐一实测内置,配置由 CodeBee
450
+ 托管写入(自动备份)。
451
+ - **协议闸门**:claude 只吃 anthropic wire、codex 只吃 openai responses、dsh 只吃
452
+ OpenAI 兼容 chat——不匹配的供应商在绑定与起跑前就会被剔除并提示,不会产生
453
+ 「必然失败的注入组合」。
454
+ - 所有子进程:并发读管道防死锁、超时/取消杀整棵进程树(`taskkill /T`)、stdout 全量
455
+ 落盘;输出静默看门狗(默认 600s)防个别 CLI 卡死,超时自动换将接力。
456
+
457
+ ## 目录约定
458
+
459
+ ```
460
+ data/(npm 安装:%APPDATA%\CodeBee 或 ~/.codebee;源码模式:仓库 data/)
461
+ catalog.json 智能体目录(可手动编辑)
462
+ orchestration.json 编排偏好(参与编排开关)
463
+ models.json 供应商 / CLI 绑定(跨厂商模型链)/ 多 KEY
464
+ flows.json 自定义任务流程
465
+ settings.json 运行设置(最大并发数)
466
+ tasks/*.json 任务
467
+ runs/<run_id>/ 每次运行:run.json、steps/*.log、report.md、error.log
468
+ usage/ 用量台账(usage-YYYYMM.jsonl,按月分文件,append-only)
469
+ skills.json 经验库(教训 + 规范包)
470
+ ```
471
+
472
+ 安全约束(内置,勿绕过):配置路径必须位于用户主目录内;任务工作目录必须是已存在的
473
+ 绝对路径;稿件文件名消毒后限制在工作目录内;步骤日志读取禁止目录穿越;
474
+ 远程写操作需设备控制权 + 访问令牌。
475
+
476
+ ## 测试
477
+
478
+ ```bat
479
+ cd tests && python -m unittest discover -p "test_*.py" -v
480
+ python tests\e2e_service.py :: 起真实服务的端到端(临时数据目录 + 独立端口,零配额)
481
+ node tests\ui_check.mjs :: Edge headless + CDP 的 UI 交互验证
482
+ node tests\ui_audit.mjs :: 全页面体检(逐页可见性 + 控制台异常)
483
+ node tests\ui_skin.mjs :: 皮肤核验(调色板变量对齐 + 换肤/持久化)
484
+ ```
485
+
486
+ 单元测试(解析器/消毒/穿越防护/mock 确定性/流程注册表/跨厂商链/编排者/并发池/
487
+ 自更新一致性)+ 端到端(mock 全流程、门禁逻辑、验证失败拦截、服务级 API 全链路),
488
+ 全部不消耗真实配额。
489
+
490
+ 发版必须使用根目录的 `npm run release:gate`:它会阻断脏工作区和全量红灯,
491
+ 并从实际 npm 归档解包做 Python import 冒烟;只有闸门通过后,`npm run release`
492
+ 才会执行 `npm publish`。
493
+
494
+ ## 更新日志
495
+
496
+ 见 [CHANGELOG.md](CHANGELOG.md)。应用内「设置 → 关于与更新」可检查更新、查看
497
+ 每次更新的内容并一键升级(npm 安装模式)。
498
+
499
+ ## 交流与支持
500
+
501
+ - **GitHub**:<https://github.com/Vercel-By-WXP/CodeBee> —— 觉得有用就点个 Star,
502
+ Issue 和 PR 都欢迎。
503
+ - **QQ 交流群**:扫码加入「Codebee 沟通交流1群」(群号 923647047),使用问题、
504
+ 经验分享都在群里。
505
+ - **请作者喝杯咖啡**:CodeBee 的开发与模型调用成本都靠自掏腰包,如果它帮你赚到
506
+ 了稿费、省下了时间,欢迎打赏支持(微信 / 支付宝都行)~
507
+
508
+ <div>
509
+ <img src="app/ui/assets/community-qr.png" width="280" align="top" alt="Codebee 沟通交流1群 QQ 群二维码(群号 923647047)">
510
+ <img src="app/ui/assets/donate-qr.jpg" width="280" align="top" alt="微信支付收款码">
511
+ <img src="app/ui/assets/donate-alipay.jpg" width="280" align="top" alt="支付宝收款码(支持信用卡 / 花呗)">
512
+ </div>
513
+
514
+ ## License
515
+
516
+ [MIT](LICENSE)