@andyqiu/codeforge 0.8.4 → 0.8.6

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/README.md CHANGED
@@ -1,163 +1,97 @@
1
1
  # @andyqiu/codeforge
2
2
 
3
- CodeForge — [opencode](https://github.com/sst/opencode) 的零侵入扩展包。一行命令装好,重启 opencode 即可使用。
3
+ [opencode](https://github.com/sst/opencode) 的零侵入 AI 编码扩展:让 AI 以「规划 → 编码 → 审阅」闭环完成任务,所有改动隔离在 session worktree,`/merge` 拍板才落地主仓。
4
4
 
5
5
  ## 安装
6
6
 
7
- 需要 **opencode ≥ 1.14** **Node ≥ 20**。
7
+ 需要 **opencode ≥ 1.14** **Node ≥ 20**。
8
8
 
9
9
  ```bash
10
10
  npm install -g @andyqiu/codeforge
11
11
  ```
12
12
 
13
- 装完**重启 opencode**。(postinstall 脚本会自动完成全局配置,无需额外操作。)
13
+ postinstall 自动完成全局配置,装完**重启 opencode** 即生效。日后升级重跑同一条命令加 `@latest` 即可。
14
14
 
15
15
  ## 怎么用
16
16
 
17
- 进 opencode TUI 后,默认对话窗口就是 `codeforge`——它会判断你的需求该自己答还是派给专门的 agent,你不用关心。
18
-
19
- ### 直接对话
17
+ 进 opencode 后,默认对话窗口就是 `codeforge`——编排者,判断你的需求该自己答还是派给专门的 agent,你无需关心调度,直接说人话:
20
18
 
21
19
  ```
22
- > 帮我把 user.ts 里的 getName 改成 getUserName
23
- > 这个项目是怎么组织的?给我画个依赖图
24
- > 修一下 login 接口 401 那个 bug
20
+ > 帮我修一下 login 接口 401 那个 bug
21
+ > 这个项目怎么组织的?给我画个依赖图
25
22
  ```
26
23
 
27
- ### 显式调用 agent(可选)
24
+ 需要时也可 `@` 显式调用某个角色。CodeForge 内置 9 个 agent:`codeforge`(编排)、`planner`(出方案不写码)、三档执行者 `coder-quick` / `coder` / `coder-deep`(按复杂度自动选档)、`reviewer` / `reviewer-lite`(审阅给 通过 / 改 / 拒)、`discover`(虚拟产品经理)及其对抗子 agent `discover-challenger`。
28
25
 
29
- ```
30
- @planner 出实现方案,不写代码
31
- @coder 按方案改代码(改动先暂存等你审)
32
- @reviewer 审已暂存的改动,给 通过 / 改 / 拒
33
- ```
26
+ ## 命令
34
27
 
35
- ### 常用 slash 命令
28
+ 最常用一条龙:`/ship <需求>` 跑完整 planner → coder → reviewer → merge 链路。
36
29
 
37
30
  | 命令 | 用途 |
38
31
  |---|---|
39
- | `/plan <需求>` | planner 出方案 |
40
- | `/ship <需求>` | 完整链路:规划 → 编码 → 审阅 |
41
- | `/review` | 审当前暂存的改动 |
42
- | `/refactor <目标>` | 安全重构(先补测试锁行为,再改) |
32
+ | `/ship <需求>` | 完整链路:规划 编码 → 审阅 → 合并 |
33
+ | `/plan <需求>` | 只出方案,不写代码 |
34
+ | `/debug <问题>` | bugfix 流:取证 → 假设 → 复现 → 修复 → 回归 |
35
+ | `/refactor <目标>` | 安全重构:先补测试锁行为,再改 |
43
36
  | `/tdd <需求>` | 严格 RED → GREEN → REFACTOR |
44
- | `/merge` | 触发 review + squash merge 入主仓 |
37
+ | `/review` | 审当前 session 暂存的改动 |
38
+ | `/merge` | 触发 review-fix-review 闭环 + squash 合并入主仓 |
45
39
  | `/discard-session` | 放弃当前 session 的所有改动 |
46
- | `/adr-init` | 为当前项目初始化 ADR 决策记录体系 |
47
- | `/debug <问题>` | 调试模式,深入分析问题根因 |
48
- | `/deep <需求>` | 强制升档用高端推理模型处理 |
49
- | `/quick <需求>` | 强制降档用快速模型处理 |
50
- | `/changes` | 查看当前 session 的改动摘要 |
40
+ | `/changes` | 查看当前 session 改动摘要 |
41
+ | `/deep <需求>` | 强制升档高端推理模型 |
42
+ | `/quick <需求>` | 强制降档快速模型 |
43
+ | `/parallel` | 显式并发多任务(默认已自动并行,保留兜底) |
51
44
  | `/pause` | 暂停当前任务 |
45
+ | `/model-switch` | 查看 / 切换 agent 绑定的模型 |
46
+ | `/adr-init` | 为任意 git 项目初始化 ADR 决策记录体系 |
47
+ | `/gc-worktrees` | 清理僵尸 worktree |
52
48
 
53
- > 并行已成为 codeforge 默认能力(auto-parallel):直接描述多个独立需求即可,codeforge 自动判断并并发到隔离 lane,汇聚后统一走合入闭环——**无需手动 `/parallel`**(旧命令已弃用,过渡期保留一个版本周期,下一 minor 移除)。
49
+ ## 核心机制
54
50
 
55
- ### Discover Agent 虚拟产品经理
51
+ - **Session worktree 隔离**:每个 session 绑定独立 git worktree,AI 改动写在里面不碰主仓,`/merge` 通过审批后才 squash 落地。
52
+ - **Auto-parallel**:描述多个独立需求时自动并发到隔离 lane,汇聚后统一走合入闭环,无需手动 `/parallel`。
53
+ - **三档模型**:`coder-quick`(省钱)/ `coder`(默认)/ `coder-deep`(重型),codeforge 自动选档,也可 `/deep` `/quick` 手动 override。
54
+ - **ADR 体系**:`/adr-init` 一键把 ADR 校验 hooks 下发到任意 git 项目。
55
+ - **Knowledge Hub**(可选):启用后 AI 自动查团队历史经验、自动沉淀踩坑,未配置不影响基础功能。
56
56
 
57
- 需求不清晰时,用 discover 把模糊想法收敛成可执行 PRD
58
-
59
- ```
60
- @discover 我想做一个新人推荐 feed
61
- ```
57
+ ## Discover —— 把模糊需求收敛成 PRD
62
58
 
63
- discover 会跑 5 个阶段:
64
- 1. **散度** — 列各种可能解 + 边界
65
- 2. **收敛** — 5 维加权打分筛选方向
66
- 3. **红旗** — 召唤 `discover-challenger` 强对抗 sycophancy
67
- 4. **PRD 起草** — 生成 EARS 句式 PRD.md + 机读 handoff.yaml
68
- 5. **复核** — challenger 二次复核
59
+ 需求不清晰时用 `@discover`,跑 5 阶段(散度 → 收敛 → 红旗对抗 → PRD 起草 → 复核),产出 `docs/specs/<slug>/{PRD.md, handoff.yaml}`,被下游 codeforge / planner / coder 自动消费;`discover-challenger` 全程强对抗,防 sycophancy。详见 [docs/discover/README.md](./docs/discover/README.md)。
69
60
 
70
- 产物在 `docs/specs/<slug>/{PRD.md, handoff.yaml}`,会被下游 codeforge / planner / coder **自动消费**。
61
+ ## ADR 决策记录
71
62
 
72
- 详见 [docs/discover/README.md](./docs/discover/README.md)。
73
-
74
- ### ADR 决策记录(adr-init)
75
-
76
- 在任意 git 项目根目录执行一次,把完整的 ADR 校验体系下发到该项目:
63
+ 在任意 git 项目根执行一次,下发完整 ADR 校验体系(校验脚本 / 模板 / 索引 / PR 模板 / git hooks):
77
64
 
78
65
  ```bash
79
- # CLI 命令
80
- codeforge adr-init
81
-
82
- # opencode 里直接说
83
- /adr-init
84
-
85
- # 常用选项
86
- codeforge adr-init --dry-run # 只预览,不写文件
87
- codeforge adr-init --force # 已有文件时覆盖(自动备份)
88
- codeforge adr-init --write-prepare # 同时把 git config 写入 package.json prepare
66
+ codeforge adr-init # 或在 opencode 里说 /adr-init
67
+ codeforge adr-init --dry-run # 仅预览,不写文件
68
+ codeforge adr-init --force # 覆盖已有文件(自动备份)
89
69
  ```
90
70
 
91
- 下发后会在项目里生成:
71
+ 把生成的文件提交进 git,协作者 clone 后执行 `git config core.hooksPath .githooks` 即可(npm 项目加 `--write-prepare` 可让 `npm install` 自动完成)。
92
72
 
93
- | 文件 | 用途 |
94
- |---|---|
95
- | `scripts/adr-check.mjs` | ADR 体系合规校验(commit 时自动跑) |
96
- | `scripts/adr-index-sync.mjs` | 自动同步 docs/adr/README.md 索引 |
97
- | `docs/adr/template.md` | ADR 模板(含三向引用字段) |
98
- | `docs/adr/README.md` | ADR 索引骨架 |
99
- | `.github/pull_request_template.md` | PR 模板(含 ADR checklist) |
100
- | `.githooks/pre-commit` | commit 时自动校验 ADR 规范 |
101
- | `.githooks/pre-push` | push 时全量校验 |
102
-
103
- **把生成的文件提交进 git**,其他人 clone 后跑一次即可:
104
-
105
- ```bash
106
- git config core.hooksPath .githooks
107
- ```
108
-
109
- npm 项目可加 `--write-prepare` 让 `npm install` 自动完成上面这步。
110
-
111
- ### 代码改动如何落地
112
-
113
- 每个 session 绑定独立 git worktree,AI 改动直接写到 worktree(不影响主仓);审批通过 `/merge` 命令触发 review-fix-review 闭环,通过后 squash merge 入主仓。
73
+ ## Knowledge Hub(可选)
114
74
 
115
75
  ```bash
116
- /merge # 触发 review + 合并闭环
117
- /discard-session # 放弃当前 session 的所有改动
76
+ export KNOWLEDGE_API_KEY=你的-token # Windows [Environment]::SetEnvironmentVariable(...)
118
77
  ```
119
78
 
120
- ## Knowledge Hub(可选,团队共享经验)
121
-
122
- 启用后 AI 会主动查团队历史经验、自动沉淀踩坑记录。**未配置不影响基础功能**。
123
-
124
- ```bash
125
- # macOS / Linux
126
- export KNOWLEDGE_API_KEY=你的-token
127
-
128
- # Windows PowerShell
129
- [Environment]::SetEnvironmentVariable("KNOWLEDGE_API_KEY", "你的-token", "User")
130
- ```
131
-
132
- 详细配置 token 找你的团队管理员。
133
-
134
- ## 升级
135
-
136
- opencode 启动时会自动检查并升级,无需手动操作。
137
-
138
- 如需手动升级:
139
-
140
- ```bash
141
- npm install -g @andyqiu/codeforge@latest
142
- ```
143
-
144
- ## 卸载
145
-
146
- ```bash
147
- npm uninstall -g @andyqiu/codeforge
148
- ```
79
+ token 找团队管理员获取。未配置不影响基础功能。
149
80
 
150
81
  ## 出问题怎么办
151
82
 
152
83
  | 现象 | 处理 |
153
84
  |---|---|
154
85
  | 装完 opencode 没识别新命令 | 重启 opencode |
155
- | AI 改动没写入主仓 | 改动在 session worktree 内;用 `/merge` 触发审批 + 合并闭环 |
156
- | 启动报"opencode 版本不兼容" | 升级 opencode:`npm install -g opencode@latest` |
86
+ | AI 改动没进主仓 | 改动在 session worktree 内,用 `/merge` 触发审批 + 合并 |
87
+ | 启动报版本不兼容 | 升级 opencode:`npm install -g opencode@latest` |
157
88
  | 命令找不到 | 确认 npm global bin 在 PATH:`npm config get prefix` |
158
- | 需要查当前版本 | `codeforge --version` |
159
89
 
160
- 其它问题联系 [@andyqiu](https://www.npmjs.com/~andyqiu)。
90
+ ## 卸载
91
+
92
+ ```bash
93
+ npm uninstall -g @andyqiu/codeforge
94
+ ```
161
95
 
162
96
  ## License
163
97
 
@@ -15,15 +15,16 @@ permissions:
15
15
  bash: deny
16
16
  webfetch: deny
17
17
  allowed_tools: [read, repo_map, task, plan_read, review_approval, session_merge]
18
- model: google/gemini-3.1-pro-preview
18
+ model: anthropic/claude-sonnet-4-6
19
19
  model_category: balanced
20
20
  tier: balanced
21
21
  model_thinking:
22
22
  type: enabled
23
- thinking_level: low
23
+ budget_tokens: 4000
24
24
  fallback_models:
25
- - anthropic/claude-sonnet-4-6
26
25
  - anthropic/claude-opus-4-8
26
+ - openai/gpt-5.5
27
+ - google/gemini-3.1-pro-preview
27
28
  ---
28
29
 
29
30
  # CodeForge Agent
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: coder-quick
3
- description: 执行者(快速档)— 同 coder,使用 sonnet 档模型,适合小改动 / typo fix / 文档更新。在 session worktree 内直接写,由 /merge 闭环合入主仓。
3
+ description: 执行者(快速档)— 同 coder,使用 Opus 4.8 Fast 模型,适合小改动 / typo fix / 文档更新。在 session worktree 内直接写,由 /merge 闭环合入主仓。
4
4
  version: 2.0.0
5
5
  mode: subagent
6
6
  # opencode 标准字段(单数)— 实际生效的权限
@@ -15,7 +15,7 @@ permissions:
15
15
  bash: allow
16
16
  webfetch: deny
17
17
  allowed_tools: [ast_edit, plan_read, bash, task]
18
- model: anthropic/claude-sonnet-4-6
18
+ model: anthropic/claude-opus-4-8-fast
19
19
  model_category: balanced
20
20
  tier: quick
21
21
  model_thinking:
@@ -23,7 +23,7 @@ model_thinking:
23
23
  budget_tokens: 2000
24
24
  fallback_models:
25
25
  - anthropic/claude-opus-4-8
26
- - google/gemini-3.1-pro-preview
26
+ - anthropic/claude-sonnet-4-6
27
27
  ---
28
28
 
29
29
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: reviewer-lite
3
- description: 审阅者(轻量档)— 使用 sonnet 模型,适用于方案/文档/ADR/决策 review;代码安全审查请用 @reviewer(ultrabrain)
3
+ description: 审阅者(轻量档)— 使用 GPT-5.4 模型,适用于方案/文档/ADR/决策 review;代码安全审查请用 @reviewer(ultrabrain)
4
4
  version: 1.0.0
5
5
  mode: subagent
6
6
  # opencode 标准字段(单数)— 实际生效的权限
@@ -15,12 +15,12 @@ permissions:
15
15
  bash: allow
16
16
  webfetch: deny
17
17
  allowed_tools: [plan_read, bash, read, task, review_approval]
18
- model: google/gemini-3.1-pro-preview
18
+ model: openai/gpt-5.4
19
19
  model_category: balanced
20
20
  tier: balanced
21
21
  model_thinking:
22
22
  type: enabled
23
- thinking_level: medium
23
+ reasoning_effort: medium
24
24
  fallback_models:
25
25
  - anthropic/claude-sonnet-4-6
26
26
  - openai/gpt-5.5
package/codeforge.json CHANGED
@@ -31,14 +31,14 @@
31
31
  ]
32
32
  },
33
33
  "coder-quick": {
34
- "_doc": "编码者(快速档):Sonnet + 最小 thinking,适合 typo fix / 单行改动 / 文档更新。",
35
- "model": "anthropic/claude-sonnet-4-6",
34
+ "_doc": "编码者(快速档):Opus 4.8 Fast,同等质量 2.5x 更快,适合 typo fix / 单行改动 / 文档更新。thinking 2000 保持轻量。",
35
+ "model": "anthropic/claude-opus-4-8-fast",
36
36
  "category": "balanced",
37
37
  "tier": "quick",
38
38
  "thinking": { "type": "enabled", "budget_tokens": 2000 },
39
39
  "fallback_models": [
40
40
  "anthropic/claude-opus-4-8",
41
- "google/gemini-3.1-pro-preview"
41
+ "anthropic/claude-sonnet-4-6"
42
42
  ]
43
43
  },
44
44
  "coder-deep": {
@@ -87,13 +87,14 @@
87
87
  },
88
88
  "codeforge": {
89
89
  "_doc": "编排者(调度专用):Gemini 3.1 Pro 主(轻量快速路由),Sonnet 4.6 / Opus 4.8 备用。codeforge 无写权限,只路由不生产,用 Gemini 降成本。category=balanced 对应模型档次,tier=balanced 对应任务难度(路由判断本身是轻量任务)。",
90
- "model": "google/gemini-3.1-pro-preview",
90
+ "model": "anthropic/claude-sonnet-4-6",
91
91
  "category": "balanced",
92
92
  "tier": "balanced",
93
- "thinking": { "type": "enabled", "thinking_level": "low" },
93
+ "thinking": { "type": "enabled", "budget_tokens": 4000 },
94
94
  "fallback_models": [
95
- "anthropic/claude-sonnet-4-6",
96
- "anthropic/claude-opus-4-8"
95
+ "anthropic/claude-opus-4-8",
96
+ "openai/gpt-5.5",
97
+ "google/gemini-3.1-pro-preview"
97
98
  ]
98
99
  }
99
100
  },
package/dist/index.js CHANGED
@@ -19892,7 +19892,7 @@ import * as https from "node:https";
19892
19892
  // lib/version-injected.ts
19893
19893
  function getInjectedVersion() {
19894
19894
  try {
19895
- const v = "0.8.4";
19895
+ const v = "0.8.6";
19896
19896
  if (typeof v === "string" && /^\d+\.\d+\.\d+/.test(v)) {
19897
19897
  return v;
19898
19898
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andyqiu/codeforge",
3
- "version": "0.8.4",
3
+ "version": "0.8.6",
4
4
  "description": "CodeForge — opencode 的零侵入扩展包",
5
5
  "type": "module",
6
6
  "private": false,