claudeos-core 1.7.0 → 2.0.0
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/CHANGELOG.md +138 -0
- package/CONTRIBUTING.md +92 -59
- package/README.de.md +465 -240
- package/README.es.md +446 -223
- package/README.fr.md +461 -238
- package/README.hi.md +485 -261
- package/README.ja.md +440 -235
- package/README.ko.md +244 -56
- package/README.md +215 -47
- package/README.ru.md +462 -238
- package/README.vi.md +454 -230
- package/README.zh-CN.md +476 -252
- package/bin/cli.js +144 -140
- package/bin/commands/init.js +550 -46
- package/bin/commands/memory.js +426 -0
- package/bin/lib/cli-utils.js +206 -143
- package/bootstrap.sh +81 -390
- package/content-validator/index.js +436 -340
- package/lib/expected-guides.js +23 -0
- package/lib/expected-outputs.js +91 -0
- package/lib/language-config.js +35 -0
- package/lib/memory-scaffold.js +1014 -0
- package/lib/plan-parser.js +153 -149
- package/lib/staged-rules.js +118 -0
- package/manifest-generator/index.js +176 -171
- package/package.json +1 -1
- package/pass-json-validator/index.js +337 -299
- package/pass-prompts/templates/common/pass3-footer.md +16 -0
- package/pass-prompts/templates/common/pass4.md +317 -0
- package/pass-prompts/templates/common/staging-override.md +26 -0
- package/pass-prompts/templates/python-flask/pass1.md +119 -0
- package/pass-prompts/templates/python-flask/pass2.md +85 -0
- package/pass-prompts/templates/python-flask/pass3.md +103 -0
- package/plan-installer/domain-grouper.js +2 -1
- package/plan-installer/prompt-generator.js +120 -96
- package/plan-installer/scanners/scan-frontend.js +219 -10
- package/plan-installer/scanners/scan-java.js +226 -223
- package/plan-installer/scanners/scan-python.js +21 -0
- package/sync-checker/index.js +133 -132
package/README.zh-CN.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
npx claudeos-core init
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
ClaudeOS-Core
|
|
9
|
+
ClaudeOS-Core 读取你的代码库,提取所发现的每一个模式,生成一套完全适配 _你的_ 项目的 Standards、Rules、Skills 和 Guides。之后当你告诉 Claude Code"创建一个订单 CRUD"时,它会生成完全符合你现有模式的代码。
|
|
10
10
|
|
|
11
11
|
[🇺🇸 English](./README.md) · [🇰🇷 한국어](./README.ko.md) · [🇯🇵 日本語](./README.ja.md) · [🇪🇸 Español](./README.es.md) · [🇻🇳 Tiếng Việt](./README.vi.md) · [🇮🇳 हिन्दी](./README.hi.md) · [🇷🇺 Русский](./README.ru.md) · [🇫🇷 Français](./README.fr.md) · [🇩🇪 Deutsch](./README.de.md)
|
|
12
12
|
|
|
@@ -14,48 +14,58 @@ ClaudeOS-Core 读取你的代码库,提取所有模式,生成一套完全适
|
|
|
14
14
|
|
|
15
15
|
## 为什么选择 ClaudeOS-Core?
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
其他所有 Claude Code 工具都是这样工作的:
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
> **人类描述项目 → LLM 生成文档**
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
ClaudeOS-Core 是这样工作的:
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
> **代码分析你的源码 → 代码构建定制提示 → LLM 生成文档 → 代码验证输出**
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
这不是一个小差异。为什么这很重要:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
### 核心问题:LLM 会猜测。代码不会。
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
29
|
+
当你要求 Claude"分析这个项目"时,它会**猜测**你的技术栈、ORM、领域结构。
|
|
30
|
+
它可能在 `build.gradle` 中看到 `spring-boot`,但错过你使用的是 MyBatis(不是 JPA)。
|
|
31
|
+
它可能检测到 `user/` 目录,但没意识到你的项目使用层优先打包(Pattern A),而不是领域优先(Pattern B)。
|
|
32
|
+
|
|
33
|
+
**ClaudeOS-Core 不猜测。** 在 Claude 看到你的项目之前,Node.js 代码已经:
|
|
34
|
+
|
|
35
|
+
- 解析了 `build.gradle` / `package.json` / `pyproject.toml` 并**确认**了你的技术栈、ORM、数据库和包管理器
|
|
36
|
+
- 扫描了你的目录结构并**确认**了带文件数的领域列表
|
|
37
|
+
- 将你的项目结构**分类**为 Java 5 种模式、Kotlin CQRS/BFF 或 Next.js App Router/FSD 之一
|
|
38
|
+
- 将领域**分割**为适合 Claude 上下文窗口的最优大小分组
|
|
39
|
+
- **组装**了一个注入了所有确认事实的技术栈专用提示
|
|
40
|
+
|
|
41
|
+
当 Claude 收到提示时,没有任何需要猜测的。技术栈已确认。领域已确认。结构模式已确认。Claude 的唯一工作是生成与这些**已确认的事实**相匹配的文档。
|
|
34
42
|
|
|
35
43
|
### 结果
|
|
36
44
|
|
|
37
|
-
其他工具生成"
|
|
38
|
-
ClaudeOS-Core 生成的文档知道你的项目使用 `ApiResponse.ok()`(而不是 `ResponseEntity.success()
|
|
45
|
+
其他工具生成"一般来说不错"的文档。
|
|
46
|
+
ClaudeOS-Core 生成的文档知道你的项目使用 `ApiResponse.ok()`(而不是 `ResponseEntity.success()`),知道你的 MyBatis XML 映射器位于 `src/main/resources/mybatis/mappers/`,知道你的包结构是 `com.company.module.{domain}.controller` — 因为它读取了你的实际代码。
|
|
39
47
|
|
|
40
48
|
### Before & After
|
|
41
49
|
|
|
42
|
-
**没有 ClaudeOS-Core
|
|
50
|
+
**没有 ClaudeOS-Core** — 你请求 Claude Code 创建一个订单 CRUD:
|
|
43
51
|
```
|
|
44
|
-
❌ JPA repository
|
|
45
|
-
❌ ResponseEntity.success()
|
|
46
|
-
❌ order/controller
|
|
47
|
-
|
|
52
|
+
❌ 使用 JPA 风格的 repository(你的项目使用 MyBatis)
|
|
53
|
+
❌ 创建 ResponseEntity.success()(你的包装器是 ApiResponse.ok())
|
|
54
|
+
❌ 将文件放在 order/controller/(你的项目使用 controller/order/)
|
|
55
|
+
❌ 生成英文注释(你的团队写中文注释)
|
|
56
|
+
→ 你花 20 分钟修复每个生成的文件
|
|
48
57
|
```
|
|
49
58
|
|
|
50
|
-
**使用 ClaudeOS-Core
|
|
59
|
+
**使用 ClaudeOS-Core** — `.claude/rules/` 已经包含了你确认的模式:
|
|
51
60
|
```
|
|
52
|
-
✅ MyBatis mapper + XML
|
|
53
|
-
✅ ApiResponse.ok()
|
|
54
|
-
✅ controller/order
|
|
55
|
-
|
|
61
|
+
✅ 生成 MyBatis mapper + XML(从 build.gradle 检测)
|
|
62
|
+
✅ 使用 ApiResponse.ok()(从你的实际源码提取)
|
|
63
|
+
✅ 将文件放在 controller/order/(通过结构扫描确认 Pattern A)
|
|
64
|
+
✅ 中文注释(应用了 --lang zh-CN)
|
|
65
|
+
→ 生成的代码立即匹配你的项目约定
|
|
56
66
|
```
|
|
57
67
|
|
|
58
|
-
这种差异会累积。每天10个任务 × 节省20分钟 = **每天3小时以上**。
|
|
68
|
+
这种差异会累积。每天 10 个任务 × 节省 20 分钟 = **每天 3 小时以上**。
|
|
59
69
|
|
|
60
70
|
---
|
|
61
71
|
|
|
@@ -63,59 +73,83 @@ ClaudeOS-Core 生成的文档知道你的项目使用 `ApiResponse.ok()`(而
|
|
|
63
73
|
|
|
64
74
|
| 技术栈 | 检测方式 | 分析深度 |
|
|
65
75
|
|---|---|---|
|
|
66
|
-
| **Java / Spring Boot** | `build.gradle`、`pom.xml`、5
|
|
67
|
-
| **Kotlin / Spring Boot** | `build.gradle.kts`、kotlin 插件、`settings.gradle.kts`、CQRS/BFF 自动检测 | 12
|
|
68
|
-
| **Node.js / Express** | `package.json` | 9
|
|
69
|
-
| **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10
|
|
70
|
-
| **Next.js / React** | `package.json
|
|
71
|
-
| **Vue / Nuxt** | `package.json
|
|
72
|
-
| **Python / Django** | `requirements.txt`、`pyproject.toml` | 10
|
|
73
|
-
| **Python / FastAPI** | `requirements.txt`、`pyproject.toml` | 10
|
|
74
|
-
| **Node.js / Fastify** | `package.json` | 10
|
|
75
|
-
| **Vite / React SPA** | `package.json`、`vite.config.*` | 9
|
|
76
|
-
| **Angular** | `package.json`、`angular.json` | 12
|
|
77
|
-
|
|
78
|
-
自动检测:语言及版本、框架及版本(包括 Vite 作为 SPA 框架)、ORM(MyBatis、JPA、Exposed、Prisma、TypeORM、SQLAlchemy 等)、数据库(PostgreSQL、MySQL、Oracle、MongoDB、SQLite)、包管理器(Gradle、Maven、npm、yarn、pnpm、pip、poetry)、架构(CQRS、BFF — 从模块名检测)、多模块结构(从 settings.gradle 检测)、单体仓库(Turborepo、pnpm-workspace、Lerna、npm/yarn workspaces)。
|
|
76
|
+
| **Java / Spring Boot** | `build.gradle`、`pom.xml`、5 种包模式 | 10 大类、59 小项 |
|
|
77
|
+
| **Kotlin / Spring Boot** | `build.gradle.kts`、kotlin 插件、`settings.gradle.kts`、CQRS/BFF 自动检测 | 12 大类、95 小项 |
|
|
78
|
+
| **Node.js / Express** | `package.json` | 9 大类、57 小项 |
|
|
79
|
+
| **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 大类、68 小项 |
|
|
80
|
+
| **Next.js / React** | `package.json`、`next.config.*`、FSD 支持 | 9 大类、55 小项 |
|
|
81
|
+
| **Vue / Nuxt** | `package.json`、`nuxt.config.*`、Composition API | 9 大类、58 小项 |
|
|
82
|
+
| **Python / Django** | `requirements.txt`、`pyproject.toml` | 10 大类、55 小项 |
|
|
83
|
+
| **Python / FastAPI** | `requirements.txt`、`pyproject.toml` | 10 大类、58 小项 |
|
|
84
|
+
| **Node.js / Fastify** | `package.json` | 10 大类、62 小项 |
|
|
85
|
+
| **Vite / React SPA** | `package.json`、`vite.config.*` | 9 大类、55 小项 |
|
|
86
|
+
| **Angular** | `package.json`、`angular.json` | 12 大类、78 小项 |
|
|
79
87
|
|
|
80
|
-
|
|
88
|
+
自动检测:语言和版本、框架和版本(包括作为 SPA 框架的 Vite)、ORM(MyBatis、JPA、Exposed、Prisma、TypeORM、SQLAlchemy 等)、数据库(PostgreSQL、MySQL、Oracle、MongoDB、SQLite)、包管理器(Gradle、Maven、npm、yarn、pnpm、pip、poetry)、架构(CQRS、BFF — 从模块名检测)、多模块结构(从 settings.gradle 检测)、单体仓库(Turborepo、pnpm-workspace、Lerna、npm/yarn workspaces)。
|
|
81
89
|
|
|
90
|
+
**你不需要指定任何内容。一切都会自动检测。**
|
|
82
91
|
|
|
83
|
-
### Java
|
|
92
|
+
### Java 领域检测(5 种模式,带回退)
|
|
84
93
|
|
|
85
94
|
| 优先级 | 模式 | 结构 | 示例 |
|
|
86
95
|
|---|---|---|---|
|
|
87
96
|
| A | 层优先 | `controller/{domain}/` | `controller/user/UserController.java` |
|
|
88
|
-
| B |
|
|
97
|
+
| B | 领域优先 | `{domain}/controller/` | `user/controller/UserController.java` |
|
|
89
98
|
| D | 模块前缀 | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
|
|
90
99
|
| E | DDD/六角形 | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
|
|
91
100
|
| C | 扁平 | `controller/*.java` | `controller/UserController.java` → 从类名提取 `user` |
|
|
92
101
|
|
|
93
|
-
无 Controller 的纯 Service
|
|
102
|
+
无 Controller 的纯 Service 领域也通过 `service/`、`dao/`、`aggregator/`、`facade/`、`usecase/`、`orchestrator/`、`mapper/`、`repository/` 目录进行检测。跳过:`common`、`config`、`util`、`core`、`front`、`admin`、`v1`、`v2` 等。
|
|
94
103
|
|
|
95
|
-
|
|
96
|
-
### Kotlin 多模块域检测
|
|
104
|
+
### Kotlin 多模块领域检测
|
|
97
105
|
|
|
98
106
|
适用于 Gradle 多模块结构的 Kotlin 项目(如 CQRS 单体仓库):
|
|
99
107
|
|
|
100
108
|
| 步骤 | 操作 | 示例 |
|
|
101
109
|
|---|---|---|
|
|
102
|
-
| 1 | 扫描 `settings.gradle.kts`
|
|
103
|
-
| 2 |
|
|
104
|
-
| 3 |
|
|
105
|
-
| 4 |
|
|
110
|
+
| 1 | 扫描 `settings.gradle.kts` 的 `include()` | 发现 14 个模块 |
|
|
111
|
+
| 2 | 从模块名检测模块类型 | `reservation-command-server` → type: `command` |
|
|
112
|
+
| 3 | 从模块名提取领域 | `reservation-command-server` → domain: `reservation` |
|
|
113
|
+
| 4 | 跨模块对同一领域分组 | `reservation-command-server` + `common-query-server` → 1 个领域 |
|
|
106
114
|
| 5 | 检测架构 | 有 `command` + `query` 模块 → CQRS |
|
|
107
115
|
|
|
108
|
-
支持的模块类型:`command`、`query`、`bff`、`integration`、`standalone`、`library`。共享库(`shared-lib`、`integration-lib
|
|
116
|
+
支持的模块类型:`command`、`query`、`bff`、`integration`、`standalone`、`library`。共享库(`shared-lib`、`integration-lib`)被识别为特殊领域。
|
|
109
117
|
|
|
110
|
-
###
|
|
118
|
+
### 前端领域检测
|
|
111
119
|
|
|
112
120
|
- **App Router**:`app/{domain}/page.tsx`(Next.js)
|
|
113
121
|
- **Pages Router**:`pages/{domain}/index.tsx`
|
|
114
|
-
- **FSD
|
|
115
|
-
- **RSC/Client 分离**:检测 `client.tsx`
|
|
116
|
-
- **非标准嵌套路径**:检测 `src
|
|
117
|
-
-
|
|
118
|
-
-
|
|
122
|
+
- **FSD (Feature-Sliced Design)**:`features/*/`、`widgets/*/`、`entities/*/`
|
|
123
|
+
- **RSC/Client 分离**:检测 `client.tsx` 模式,跟踪 Server/Client 组件分离
|
|
124
|
+
- **非标准嵌套路径**:检测 `src/*/` 路径下的页面、组件和 FSD 层(例如 `src/admin/pages/dashboard/`、`src/admin/components/form/`、`src/admin/features/billing/`)
|
|
125
|
+
- **平台/层级分割检测 (v2.0.0)**:识别 `src/{platform}/{subapp}/` 布局 — `{platform}` 可以是设备/目标关键字(`desktop`、`pc`、`web`、`mobile`、`mc`、`mo`、`sp`、`tablet`、`tab`、`pwa`、`tv`、`ctv`、`ott`、`watch`、`wear`)或访问层关键字(`admin`、`cms`、`backoffice`、`back-office`、`portal`)。为每个 `(platform, subapp)` 对发出一个名为 `{platform}-{subapp}` 的领域,提供每个领域的 routes/components/layouts/hooks 计数。可在 Angular、Next.js、React 和 Vue 上同时运行(多扩展 glob `{tsx,jsx,ts,js,vue}`)。每个 subapp 需要 ≥2 个源文件以避免噪声 1-file 领域。
|
|
126
|
+
- **单体仓库平台分割 (v2.0.0)**:平台扫描也匹配 `{apps,packages}/*/src/{platform}/{subapp}/`(带 `src/` 的 Turborepo/pnpm workspace)和 `{apps,packages}/{platform}/{subapp}/`(无 `src/` 包装的 workspaces)。
|
|
127
|
+
- **Fallback E — routes 文件 (v2.0.0)**:当主扫描器 + Fallback A–D 都返回 0 时,glob `**/routes/*.{tsx,jsx,ts,js,vue}` 并按 `routes` 的父目录名分组。捕获不匹配 Next.js `page.tsx` 或 FSD 布局的 React Router 文件路由项目(CRA/Vite + `react-router`)。通用父名(`src`、`app`、`pages`)被过滤掉。
|
|
128
|
+
- **Config 回退**:当不在 `package.json` 时,从配置文件检测 Next.js/Vite/Nuxt(单体仓库支持)
|
|
129
|
+
- **深层目录回退**:对于 React/CRA/Vite/Vue/RN 项目,在任何深度扫描 `**/components/*/`、`**/views/*/`、`**/screens/*/`、`**/containers/*/`、`**/pages/*/`、`**/routes/*/`、`**/modules/*/`、`**/domains/*/`
|
|
130
|
+
- **共享忽略列表 (v2.0.0)**:所有扫描器共享 `BUILD_IGNORE_DIRS`(`node_modules`、`build`、`dist`、`out`、`.next`、`.nuxt`、`.svelte-kit`、`.angular`、`.turbo`、`.cache`、`.parcel-cache`、`coverage`、`storybook-static`、`.vercel`、`.netlify`)和 `TEST_FILE_IGNORE`(spec/test/stories/e2e/cy + `__snapshots__`/`__tests__`),这样构建输出和测试夹具不会夸大按领域的文件计数。
|
|
131
|
+
|
|
132
|
+
### 扫描器覆盖 (v2.0.0)
|
|
133
|
+
|
|
134
|
+
在项目根目录放置可选的 `.claudeos-scan.json` 以扩展扫描器默认值,而无需编辑工具包。所有字段都是**加法的** — 用户条目扩展默认值,从不替换:
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"frontendScan": {
|
|
139
|
+
"platformKeywords": ["kiosk"],
|
|
140
|
+
"skipSubappNames": ["legacy"],
|
|
141
|
+
"minSubappFiles": 3
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
| 字段 | 默认值 | 用途 |
|
|
147
|
+
|---|---|---|
|
|
148
|
+
| `platformKeywords` | 上述内置列表 | 平台扫描用的额外 `{platform}` 关键字(例如 `kiosk`、`vr`、`embedded`) |
|
|
149
|
+
| `skipSubappNames` | 仅结构目录 | 从平台扫描领域生成中排除的额外 subapp 名称 |
|
|
150
|
+
| `minSubappFiles` | `2` | 覆盖 subapp 成为领域所需的最小文件数 |
|
|
151
|
+
|
|
152
|
+
文件缺失或 JSON 格式错误 → 静默回退到默认值(不崩溃)。典型用途:opt-in 内置列表因过于模糊而排除的简写(`adm`、`bo`),或为嘈杂的单体仓库提高 `minSubappFiles`。
|
|
119
153
|
|
|
120
154
|
---
|
|
121
155
|
|
|
@@ -131,30 +165,30 @@ ClaudeOS-Core 生成的文档知道你的项目使用 `ApiResponse.ok()`(而
|
|
|
131
165
|
```bash
|
|
132
166
|
cd /your/project/root
|
|
133
167
|
|
|
134
|
-
#
|
|
168
|
+
# 选项 A:npx(推荐 — 无需安装)
|
|
135
169
|
npx claudeos-core init
|
|
136
170
|
|
|
137
|
-
#
|
|
171
|
+
# 选项 B:全局安装
|
|
138
172
|
npm install -g claudeos-core
|
|
139
173
|
claudeos-core init
|
|
140
174
|
|
|
141
|
-
#
|
|
175
|
+
# 选项 C:项目 devDependency
|
|
142
176
|
npm install --save-dev claudeos-core
|
|
143
177
|
npx claudeos-core init
|
|
144
178
|
|
|
145
|
-
#
|
|
179
|
+
# 选项 D:git clone(用于开发/贡献)
|
|
146
180
|
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
147
181
|
|
|
148
182
|
# 跨平台(PowerShell、CMD、Bash、Zsh — 任何终端)
|
|
149
183
|
node claudeos-core-tools/bin/cli.js init
|
|
150
184
|
|
|
151
|
-
#
|
|
185
|
+
# Linux/macOS(仅 Bash)
|
|
152
186
|
bash claudeos-core-tools/bootstrap.sh
|
|
153
187
|
```
|
|
154
188
|
|
|
155
|
-
###
|
|
189
|
+
### 输出语言(10 种语言)
|
|
156
190
|
|
|
157
|
-
|
|
191
|
+
当你在运行 `init` 时不使用 `--lang`,会出现交互式选择器 — 使用箭头键或数字键进行选择:
|
|
158
192
|
|
|
159
193
|
```
|
|
160
194
|
╔══════════════════════════════════════════════════╗
|
|
@@ -167,26 +201,32 @@ bash claudeos-core-tools/bootstrap.sh
|
|
|
167
201
|
1. en — English
|
|
168
202
|
2. ko — 한국어 (Korean)
|
|
169
203
|
❯ 3. zh-CN — 简体中文 (Chinese Simplified)
|
|
170
|
-
|
|
204
|
+
4. ja — 日本語 (Japanese)
|
|
205
|
+
5. es — Español (Spanish)
|
|
206
|
+
6. vi — Tiếng Việt (Vietnamese)
|
|
207
|
+
7. hi — हिन्दी (Hindi)
|
|
208
|
+
8. ru — Русский (Russian)
|
|
209
|
+
9. fr — Français (French)
|
|
210
|
+
10. de — Deutsch (German)
|
|
171
211
|
|
|
172
212
|
↑↓ Move 1-0 Jump Enter Select ESC Cancel
|
|
173
213
|
```
|
|
174
214
|
|
|
175
|
-
|
|
215
|
+
描述会随着你导航而切换到所选语言。要跳过选择器,直接传递 `--lang`:
|
|
176
216
|
|
|
177
217
|
```bash
|
|
178
|
-
npx claudeos-core init --lang
|
|
179
|
-
npx claudeos-core init --lang
|
|
180
|
-
npx claudeos-core init --lang
|
|
218
|
+
npx claudeos-core init --lang ko # Korean
|
|
219
|
+
npx claudeos-core init --lang ja # Japanese
|
|
220
|
+
npx claudeos-core init --lang en # English(默认)
|
|
181
221
|
```
|
|
182
222
|
|
|
183
|
-
> **注意:**
|
|
223
|
+
> **注意:** 此设置仅更改生成文档文件的语言。代码分析(Pass 1–2)始终以英语运行;生成输出(Pass 3)以你选择的语言编写。生成文件中的代码示例保持其原始编程语言语法不变。
|
|
184
224
|
|
|
185
|
-
就这样。5–
|
|
225
|
+
就这样。5–20 分钟后(Pass 1×N + Pass 2 + Pass 3 + Pass 4 内存脚手架),所有文档都已生成并可以使用。CLI 显示带有百分比、经过时间和 ETA 的进度条,用于每个 Pass。
|
|
186
226
|
|
|
187
|
-
###
|
|
227
|
+
### 手动分步安装
|
|
188
228
|
|
|
189
|
-
|
|
229
|
+
如果你希望完全控制每个阶段 — 或者自动化管道在任何步骤失败 — 你可以手动运行每个阶段。这也有助于理解 ClaudeOS-Core 的内部工作原理。
|
|
190
230
|
|
|
191
231
|
#### Step 1:克隆并安装依赖
|
|
192
232
|
|
|
@@ -200,8 +240,8 @@ cd claudeos-core-tools && npm install && cd ..
|
|
|
200
240
|
#### Step 2:创建目录结构
|
|
201
241
|
|
|
202
242
|
```bash
|
|
203
|
-
# Rules
|
|
204
|
-
mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync}
|
|
243
|
+
# Rules(v2.0.0:添加了 60.memory)
|
|
244
|
+
mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
|
|
205
245
|
|
|
206
246
|
# Standards
|
|
207
247
|
mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
|
|
@@ -209,49 +249,69 @@ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.securi
|
|
|
209
249
|
# Skills
|
|
210
250
|
mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
|
|
211
251
|
|
|
212
|
-
# Guide
|
|
252
|
+
# Guide、Plan、Database、MCP、Generated、Memory(v2.0.0:添加了 memory)
|
|
213
253
|
mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
|
|
214
|
-
mkdir -p claudeos-core/{plan,database,mcp-guide,generated}
|
|
254
|
+
mkdir -p claudeos-core/{plan,database,mcp-guide,generated,memory}
|
|
215
255
|
```
|
|
216
256
|
|
|
217
257
|
#### Step 3:运行 plan-installer(项目分析)
|
|
218
258
|
|
|
219
|
-
|
|
259
|
+
这会扫描你的项目、检测技术栈、查找领域、将其分成组,并生成提示。
|
|
220
260
|
|
|
221
261
|
```bash
|
|
222
262
|
node claudeos-core-tools/plan-installer/index.js
|
|
223
263
|
```
|
|
224
264
|
|
|
225
|
-
|
|
226
|
-
- `project-analysis.json` —
|
|
227
|
-
- `domain-groups.json` — Pass 1
|
|
228
|
-
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` —
|
|
229
|
-
- `pass2-prompt.md` —
|
|
230
|
-
- `pass3-prompt.md` —
|
|
265
|
+
**输出(在 `claudeos-core/generated/` 中):**
|
|
266
|
+
- `project-analysis.json` — 检测到的技术栈、领域、前端信息
|
|
267
|
+
- `domain-groups.json` — Pass 1 的领域分组
|
|
268
|
+
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — 分析提示
|
|
269
|
+
- `pass2-prompt.md` — 合并提示
|
|
270
|
+
- `pass3-prompt.md` — 生成提示(用 `staging-override.md` 指令包装 — 参见 Step 6 注释)
|
|
271
|
+
- `pass4-prompt.md` — L4 内存脚手架提示(v2.0.0;对 `60.memory/` 规则写入也使用相同的 `staging-override.md`)
|
|
231
272
|
|
|
232
|
-
|
|
273
|
+
你可以在继续之前检查这些文件以验证检测准确性。
|
|
233
274
|
|
|
234
|
-
#### Step 4:Pass 1 —
|
|
275
|
+
#### Step 4:Pass 1 — 深度代码分析(按领域分组)
|
|
235
276
|
|
|
236
|
-
|
|
277
|
+
为每个领域分组运行 Pass 1。查看 `domain-groups.json` 了解分组数量。
|
|
237
278
|
|
|
238
279
|
```bash
|
|
239
|
-
#
|
|
280
|
+
# 查看有多少组
|
|
240
281
|
cat claudeos-core/generated/domain-groups.json | node -e "
|
|
241
282
|
const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
|
|
242
283
|
g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
|
|
243
284
|
"
|
|
244
285
|
|
|
245
|
-
#
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
286
|
+
# 为每组运行 Pass 1(替换领域和组号)
|
|
287
|
+
# 注意:v1.6.1+ 使用 Node.js String.replace() 而不是 perl — perl 不再
|
|
288
|
+
# 必需,replacement-function 语义可防止领域名中可能出现的
|
|
289
|
+
# $/&/$1 字符引起的 regex 注入。
|
|
290
|
+
#
|
|
291
|
+
# 对于 Group 1:
|
|
292
|
+
DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
|
|
293
|
+
const fs = require('fs');
|
|
294
|
+
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
295
|
+
const out = tpl
|
|
296
|
+
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
297
|
+
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
298
|
+
process.stdout.write(out);
|
|
299
|
+
" | claude -p --dangerously-skip-permissions
|
|
300
|
+
|
|
301
|
+
# 对于 Group 2(如果存在):
|
|
302
|
+
DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
|
|
303
|
+
const fs = require('fs');
|
|
304
|
+
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
305
|
+
const out = tpl
|
|
306
|
+
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
307
|
+
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
308
|
+
process.stdout.write(out);
|
|
309
|
+
" | claude -p --dangerously-skip-permissions
|
|
310
|
+
|
|
311
|
+
# 对于前端组,将 pass1-backend-prompt.md → pass1-frontend-prompt.md 替换
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**验证:** `ls claudeos-core/generated/pass1-*.json` 应该每组显示一个 JSON。
|
|
255
315
|
|
|
256
316
|
#### Step 5:Pass 2 — 合并分析结果
|
|
257
317
|
|
|
@@ -260,7 +320,7 @@ cat claudeos-core/generated/pass2-prompt.md \
|
|
|
260
320
|
| claude -p --dangerously-skip-permissions
|
|
261
321
|
```
|
|
262
322
|
|
|
263
|
-
**验证:** `claudeos-core/generated/pass2-merged.json`
|
|
323
|
+
**验证:** `claudeos-core/generated/pass2-merged.json` 应该存在,且有 9 个以上顶级键。
|
|
264
324
|
|
|
265
325
|
#### Step 6:Pass 3 — 生成所有文档
|
|
266
326
|
|
|
@@ -269,80 +329,109 @@ cat claudeos-core/generated/pass3-prompt.md \
|
|
|
269
329
|
| claude -p --dangerously-skip-permissions
|
|
270
330
|
```
|
|
271
331
|
|
|
272
|
-
**验证:**
|
|
332
|
+
**验证:** 你的项目根目录中应该存在 `CLAUDE.md`,并且应该写入 `claudeos-core/generated/pass3-complete.json` 标记。
|
|
273
333
|
|
|
274
|
-
|
|
334
|
+
> **注意(v2.0.0):** Pass 3 首先将规则文件写入 `claudeos-core/generated/.staged-rules/`,因为 Claude Code 的 sensitive-path 策略阻止直接写入 `.claude/`。自动化管道(`npx claudeos-core init`)会自动处理移动。如果你手动运行此步骤,你需要自己移动暂存的树:`mv claudeos-core/generated/.staged-rules/* .claude/rules/`(保留子路径)。
|
|
335
|
+
|
|
336
|
+
#### Step 7:Pass 4 — 内存脚手架
|
|
275
337
|
|
|
276
338
|
```bash
|
|
277
|
-
|
|
339
|
+
cat claudeos-core/generated/pass4-prompt.md \
|
|
340
|
+
| claude -p --dangerously-skip-permissions
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**验证:** `claudeos-core/memory/` 应该包含 4 个文件(`decision-log.md`、`failure-patterns.md`、`compaction.md`、`auto-rule-update.md`),`.claude/rules/60.memory/` 应该包含 4 个规则文件,`claudeos-core/plan/50.memory-master.md` 应该存在,并且 `CLAUDE.md` 现在应该附加了一个 `## Memory (L4)` 部分。标记:`claudeos-core/generated/pass4-memory.json`。
|
|
344
|
+
|
|
345
|
+
> **注意:** 如果 `claude -p` 失败或 `pass4-prompt.md` 缺失,自动化管道会回退到通过 `lib/memory-scaffold.js` 的静态脚手架(当 `--lang` 为非英语时,带有 Claude 驱动的翻译)。静态回退仅在 `npx claudeos-core init` 内部运行 — 手动模式要求 Pass 4 成功。
|
|
346
|
+
|
|
347
|
+
#### Step 8:运行验证工具
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
# 生成元数据(在其他检查之前必需)
|
|
278
351
|
node claudeos-core-tools/manifest-generator/index.js
|
|
279
352
|
|
|
280
|
-
#
|
|
353
|
+
# 运行所有检查
|
|
281
354
|
node claudeos-core-tools/health-checker/index.js
|
|
282
355
|
|
|
283
|
-
#
|
|
284
|
-
node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk
|
|
285
|
-
node claudeos-core-tools/sync-checker/index.js #
|
|
286
|
-
node claudeos-core-tools/content-validator/index.js #
|
|
287
|
-
node claudeos-core-tools/pass-json-validator/index.js # JSON
|
|
356
|
+
# 或运行单独的检查:
|
|
357
|
+
node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk 一致性
|
|
358
|
+
node claudeos-core-tools/sync-checker/index.js # 未注册/孤立文件
|
|
359
|
+
node claudeos-core-tools/content-validator/index.js # 文件质量检查(包括 memory/ 部分 [9/9])
|
|
360
|
+
node claudeos-core-tools/pass-json-validator/index.js # Pass 1–4 JSON + 完成标记检查
|
|
288
361
|
```
|
|
289
362
|
|
|
290
|
-
#### Step
|
|
363
|
+
#### Step 9:验证结果
|
|
291
364
|
|
|
292
365
|
```bash
|
|
366
|
+
# 统计生成的文件
|
|
293
367
|
find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
|
|
368
|
+
|
|
369
|
+
# 查看 CLAUDE.md
|
|
294
370
|
head -30 CLAUDE.md
|
|
371
|
+
|
|
372
|
+
# 查看一个 standard 文件
|
|
373
|
+
cat claudeos-core/standard/00.core/01.project-overview.md | head -20
|
|
374
|
+
|
|
375
|
+
# 查看规则
|
|
295
376
|
ls .claude/rules/*/
|
|
296
377
|
```
|
|
297
378
|
|
|
298
|
-
> **提示:**
|
|
379
|
+
> **提示:** 如果任何步骤失败,你可以修复问题并仅重新运行该步骤。Pass 1/2 结果会被缓存 — 如果 `pass1-N.json` 或 `pass2-merged.json` 已存在,自动化管道会跳过它们。使用 `npx claudeos-core init --force` 删除之前的结果并从头开始。
|
|
299
380
|
|
|
300
381
|
### 开始使用
|
|
301
382
|
|
|
302
383
|
```
|
|
303
|
-
# 在 Claude Code
|
|
304
|
-
"
|
|
384
|
+
# 在 Claude Code 中 — 自然地提问:
|
|
385
|
+
"为 order 领域创建 CRUD"
|
|
305
386
|
"添加用户认证 API"
|
|
306
|
-
"
|
|
387
|
+
"重构这段代码以匹配项目模式"
|
|
307
388
|
|
|
308
|
-
# Claude Code
|
|
389
|
+
# Claude Code 会自动引用你生成的 Standards、Rules 和 Skills。
|
|
309
390
|
```
|
|
310
391
|
|
|
311
392
|
---
|
|
312
393
|
|
|
313
|
-
## 工作原理 —
|
|
394
|
+
## 工作原理 — 4-Pass 管道
|
|
314
395
|
|
|
315
396
|
```
|
|
316
397
|
npx claudeos-core init
|
|
317
398
|
│
|
|
318
|
-
├── [1] npm install ←
|
|
319
|
-
├── [2]
|
|
320
|
-
├── [3] plan-installer (Node.js) ← 项目扫描(~5秒)
|
|
321
|
-
│ ├──
|
|
399
|
+
├── [1] npm install ← 依赖(~10 秒)
|
|
400
|
+
├── [2] 目录结构 ← 创建文件夹(~1 秒)
|
|
401
|
+
├── [3] plan-installer (Node.js) ← 项目扫描(~5 秒)
|
|
402
|
+
│ ├── 自动检测技术栈(多技术栈感知)
|
|
322
403
|
│ ├── 提取领域列表(标记:backend/frontend)
|
|
323
|
-
│ ├──
|
|
324
|
-
│ └──
|
|
404
|
+
│ ├── 分成领域分组(按类型)
|
|
405
|
+
│ └── 选择技术栈专用提示(按类型)
|
|
406
|
+
│
|
|
407
|
+
├── [4] Pass 1 × N (claude -p) ← 深度代码分析(~2-8 分钟)
|
|
408
|
+
│ ├── ⚙️ 后端分组 → 后端专用提示
|
|
409
|
+
│ └── 🎨 前端分组 → 前端专用提示
|
|
325
410
|
│
|
|
326
|
-
├── [
|
|
327
|
-
│
|
|
328
|
-
│ └── 🎨 前端组 → 前端专用分析提示
|
|
411
|
+
├── [5] Pass 2 × 1 (claude -p) ← 合并分析(~1 分钟)
|
|
412
|
+
│ └── 合并所有 Pass 1 结果(backend + frontend)
|
|
329
413
|
│
|
|
330
|
-
├── [
|
|
331
|
-
│ └──
|
|
414
|
+
├── [6] Pass 3 × 1 (claude -p) ← 生成一切(~3-5 分钟)
|
|
415
|
+
│ └── 组合提示(backend + frontend 目标)
|
|
332
416
|
│
|
|
333
|
-
├── [
|
|
334
|
-
│
|
|
417
|
+
├── [7] Pass 4 × 1 (claude -p) ← 内存脚手架(~30 秒)
|
|
418
|
+
│ ├── 种子 memory/(decision-log、failure-patterns、…)
|
|
419
|
+
│ ├── 生成 60.memory/ 规则
|
|
420
|
+
│ ├── 将 "Memory (L4)" 部分附加到 CLAUDE.md
|
|
421
|
+
│ └── 构建 50.memory-master.md 计划
|
|
335
422
|
│
|
|
336
|
-
└── [
|
|
423
|
+
└── [8] 验证 ← 自动运行 health checker
|
|
337
424
|
```
|
|
338
425
|
|
|
339
|
-
### 为什么是
|
|
426
|
+
### 为什么是 4 个 Pass?
|
|
340
427
|
|
|
341
|
-
**Pass 1**
|
|
428
|
+
**Pass 1** 是唯一读取你的源代码的 pass。它为每个领域选择代表性文件,并跨 55–95 个分析类别(每个技术栈)提取模式。对于大型项目,Pass 1 会多次运行 — 每个领域分组一次。在多技术栈项目中(例如 Java backend + React frontend),backend 和 frontend 领域使用**针对每个技术栈定制的不同分析提示**。
|
|
342
429
|
|
|
343
|
-
**Pass 2** 将所有 Pass 1
|
|
430
|
+
**Pass 2** 将所有 Pass 1 结果合并成统一的分析:共同模式(100% 共享)、多数模式(50%+ 共享)、领域特定模式、按严重性的反模式和横切关注点(命名、安全、DB、测试、日志记录、性能)。Backend 和 frontend 结果一起合并。
|
|
344
431
|
|
|
345
|
-
**Pass 3**
|
|
432
|
+
**Pass 3** 接受合并后的分析,生成整个文件生态系统(CLAUDE.md、rules、standards、skills、guides)。它从不读取源代码 — 只有分析 JSON。在多技术栈模式下,生成提示结合了 backend 和 frontend 目标,以便在一次 pass 中生成两组标准。
|
|
433
|
+
|
|
434
|
+
**Pass 4** 搭建 L4 内存层:持久化的团队知识文件(decision-log、failure-patterns、compaction 策略、auto-rule-update)加上告诉未来会话何时以及如何读/写这些文件的 `60.memory/` 规则。内存层是 Claude Code 能够跨会话积累教训而不是每次重新发现的原因。当 `--lang` 是非英语时,回退的静态内容在被写入之前会通过 Claude 翻译。
|
|
346
435
|
|
|
347
436
|
---
|
|
348
437
|
|
|
@@ -351,104 +440,155 @@ npx claudeos-core init
|
|
|
351
440
|
```
|
|
352
441
|
your-project/
|
|
353
442
|
│
|
|
354
|
-
├── CLAUDE.md ← Claude Code
|
|
443
|
+
├── CLAUDE.md ← Claude Code 入口点
|
|
355
444
|
│
|
|
356
445
|
├── .claude/
|
|
357
|
-
│ └── rules/ ← Glob
|
|
446
|
+
│ └── rules/ ← Glob 触发规则
|
|
358
447
|
│ ├── 00.core/
|
|
359
448
|
│ ├── 10.backend/
|
|
360
449
|
│ ├── 20.frontend/
|
|
361
450
|
│ ├── 30.security-db/
|
|
362
451
|
│ ├── 40.infra/
|
|
363
|
-
│
|
|
452
|
+
│ ├── 50.sync/ ← 同步提醒规则
|
|
453
|
+
│ └── 60.memory/ ← L4 内存按需作用域规则(v2.0.0)
|
|
364
454
|
│
|
|
365
|
-
├── claudeos-core/ ←
|
|
366
|
-
│ ├── generated/ ← 分析 JSON + 动态提示
|
|
455
|
+
├── claudeos-core/ ← 主输出目录
|
|
456
|
+
│ ├── generated/ ← 分析 JSON + 动态提示 + Pass 标记(gitignore 这个)
|
|
457
|
+
│ │ ├── project-analysis.json ← 技术栈信息(多技术栈感知)
|
|
458
|
+
│ │ ├── domain-groups.json ← 带 type: backend/frontend 的分组
|
|
459
|
+
│ │ ├── pass1-backend-prompt.md ← 后端分析提示
|
|
460
|
+
│ │ ├── pass1-frontend-prompt.md ← 前端分析提示(如果检测到)
|
|
461
|
+
│ │ ├── pass2-prompt.md ← 合并提示
|
|
462
|
+
│ │ ├── pass3-prompt.md ← 生成提示(合并)
|
|
463
|
+
│ │ ├── pass4-prompt.md ← 内存脚手架提示(v2.0.0)
|
|
464
|
+
│ │ ├── pass3-complete.json ← Pass 3 完成标记(恢复时跳过)
|
|
465
|
+
│ │ ├── pass4-memory.json ← Pass 4 完成标记(恢复时跳过)
|
|
466
|
+
│ │ ├── .i18n-cache-<lang>.json ← 翻译缓存(非英语 `--lang`)
|
|
467
|
+
│ │ └── .staged-rules/ ← `.claude/rules/` 写入的临时暂存目录(自动移动 + 清理)
|
|
367
468
|
│ ├── standard/ ← 编码标准(15-19 个文件)
|
|
469
|
+
│ │ ├── 00.core/ ← 概述、架构、命名
|
|
470
|
+
│ │ ├── 10.backend-api/ ← API 模式(技术栈专用)
|
|
471
|
+
│ │ ├── 20.frontend-ui/ ← 前端模式(如果检测到)
|
|
472
|
+
│ │ ├── 30.security-db/ ← 安全、DB schema、工具
|
|
473
|
+
│ │ ├── 40.infra/ ← 配置、日志、CI/CD
|
|
474
|
+
│ │ ├── 50.verification/ ← 构建验证、测试
|
|
475
|
+
│ │ └── 90.optional/ ← 可选约定(技术栈专用附加) |
|
|
368
476
|
│ ├── skills/ ← CRUD 脚手架技能
|
|
369
477
|
│ ├── guide/ ← 入门、FAQ、故障排除(9 个文件)
|
|
370
|
-
│ ├── plan/ ←
|
|
371
|
-
│ ├── database/ ←
|
|
372
|
-
│
|
|
478
|
+
│ ├── plan/ ← 主计划(备份/恢复)
|
|
479
|
+
│ ├── database/ ← DB schema、迁移指南
|
|
480
|
+
│ ├── mcp-guide/ ← MCP 服务器集成指南
|
|
481
|
+
│ └── memory/ ← L4:团队知识(4 个文件)— 提交这些
|
|
482
|
+
│ ├── decision-log.md ← 设计决策背后的"为什么"
|
|
483
|
+
│ ├── failure-patterns.md ← 重现错误 & 修复(自动评分 — `npx claudeos-core memory score`)
|
|
484
|
+
│ ├── compaction.md ← 4 阶段压缩策略(运行 `npx claudeos-core memory compact`)
|
|
485
|
+
│ └── auto-rule-update.md ← 规则改进提议(`npx claudeos-core memory propose-rules`)
|
|
373
486
|
│
|
|
374
|
-
└── claudeos-core-tools/ ←
|
|
487
|
+
└── claudeos-core-tools/ ← 此工具包(不要修改)
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
每个 standard 文件都包含 ✅ 正确示例、❌ 错误示例和规则摘要表 — 全部来自你的实际代码模式,而不是通用模板。
|
|
491
|
+
|
|
492
|
+
### Gitignore 建议
|
|
493
|
+
|
|
494
|
+
**提交**(团队知识 — 旨在共享):
|
|
495
|
+
- `CLAUDE.md` — Claude Code 入口点
|
|
496
|
+
- `.claude/rules/**` — 自动加载的规则
|
|
497
|
+
- `claudeos-core/standard/**`、`skills/**`、`guide/**`、`database/**`、`mcp-guide/**`、`plan/**` — 生成的文档
|
|
498
|
+
- `claudeos-core/memory/**` — 决策历史、失败模式、规则提议
|
|
499
|
+
|
|
500
|
+
**不要提交**(可重新生成的构建产物):
|
|
501
|
+
|
|
502
|
+
```gitignore
|
|
503
|
+
# ClaudeOS-Core — 生成的分析 & 翻译缓存
|
|
504
|
+
claudeos-core/generated/
|
|
375
505
|
```
|
|
376
506
|
|
|
377
|
-
|
|
507
|
+
`generated/` 目录包含分析 JSON(`pass1-*.json`、`pass2-merged.json`)、提示(`pass1/2/3/4-prompt.md`)、Pass 完成标记(`pass3-complete.json`、`pass4-memory.json`)、翻译缓存(`.i18n-cache-<lang>.json`)和临时暂存目录(`.staged-rules/`)— 全部可以通过重新运行 `npx claudeos-core init` 重建。
|
|
378
508
|
|
|
379
509
|
---
|
|
380
510
|
|
|
381
511
|
## 按项目规模自动扩展
|
|
382
512
|
|
|
383
|
-
| 规模 |
|
|
513
|
+
| 规模 | 领域 | Pass 1 次数 | 总 `claude -p` | 预计时间 |
|
|
384
514
|
|---|---|---|---|---|
|
|
385
|
-
| 小型 | 1–4 | 1 | 3 | ~5分钟 |
|
|
386
|
-
| 中型 | 5–8 | 2 |
|
|
387
|
-
| 大型 | 9–16 | 3–4 |
|
|
388
|
-
| 超大型 | 17+ | 5+ |
|
|
515
|
+
| 小型 | 1–4 | 1 | 4 (Pass 1 + 2 + 3 + 4) | ~5–6 分钟 |
|
|
516
|
+
| 中型 | 5–8 | 2 | 5 | ~8–9 分钟 |
|
|
517
|
+
| 大型 | 9–16 | 3–4 | 6–7 | ~12–13 分钟 |
|
|
518
|
+
| 超大型 | 17+ | 5+ | 8+ | ~18 分钟+ |
|
|
389
519
|
|
|
390
|
-
|
|
520
|
+
Pass 4(内存脚手架)在分析 pass 之上增加 ~30 秒。对于多技术栈项目(例如 Java + React),backend 和 frontend 领域一起计数。6 个 backend + 4 个 frontend 领域 = 总共 10 个,按"大型"扩展。
|
|
391
521
|
|
|
392
522
|
---
|
|
393
523
|
|
|
394
524
|
## 验证工具
|
|
395
525
|
|
|
396
|
-
ClaudeOS-Core
|
|
526
|
+
ClaudeOS-Core 包含 5 个内置验证工具,它们在生成后自动运行:
|
|
397
527
|
|
|
398
528
|
```bash
|
|
399
529
|
# 一次运行所有检查(推荐)
|
|
400
530
|
npx claudeos-core health
|
|
401
531
|
|
|
402
532
|
# 单独命令
|
|
403
|
-
npx claudeos-core validate # Plan ↔
|
|
404
|
-
npx claudeos-core refresh #
|
|
405
|
-
npx claudeos-core restore # Plan →
|
|
533
|
+
npx claudeos-core validate # Plan ↔ disk 比较
|
|
534
|
+
npx claudeos-core refresh # Disk → Plan 同步
|
|
535
|
+
npx claudeos-core restore # Plan → Disk 恢复
|
|
536
|
+
|
|
537
|
+
# 或直接使用 node(git clone 用户)
|
|
538
|
+
node claudeos-core-tools/health-checker/index.js
|
|
539
|
+
node claudeos-core-tools/manifest-generator/index.js
|
|
540
|
+
node claudeos-core-tools/plan-validator/index.js --check
|
|
541
|
+
node claudeos-core-tools/sync-checker/index.js
|
|
406
542
|
```
|
|
407
543
|
|
|
408
|
-
| 工具 |
|
|
544
|
+
| 工具 | 作用 |
|
|
409
545
|
|---|---|
|
|
410
|
-
| **manifest-generator** | 构建元数据 JSON(rule-manifest、sync-map、plan-manifest
|
|
411
|
-
| **plan-validator** |
|
|
412
|
-
| **sync-checker** |
|
|
413
|
-
| **content-validator** |
|
|
414
|
-
| **pass-json-validator** | 验证 Pass 1–
|
|
546
|
+
| **manifest-generator** | 构建元数据 JSON(rule-manifest、sync-map、plan-manifest);索引包括 `memory/` 在内的 7 个目录(摘要中的 `totalMemory`) |
|
|
547
|
+
| **plan-validator** | 将 Master Plan `<file>` 块与 disk 进行比较 — 3 种模式:check、refresh、restore |
|
|
548
|
+
| **sync-checker** | 检测未注册的文件(在 disk 上但不在 plan 中)和孤立的条目 — 涵盖 7 个目录(v2.0.0 中添加了 `memory/`) |
|
|
549
|
+
| **content-validator** | 9 部分质量检查 — 空文件、缺失的 ✅/❌ 示例、必需部分,加上 L4 内存脚手架完整性(decision-log 标题日期、failure-pattern 必需字段、fence-aware 解析) |
|
|
550
|
+
| **pass-json-validator** | 验证 Pass 1–4 JSON 结构以及 `pass3-complete.json` 和 `pass4-memory.json` 完成标记 |
|
|
415
551
|
|
|
416
552
|
---
|
|
417
553
|
|
|
418
554
|
## Claude Code 如何使用你的文档
|
|
419
555
|
|
|
420
|
-
ClaudeOS-Core
|
|
556
|
+
ClaudeOS-Core 生成 Claude Code 实际读取的文档 — 以下是它的工作方式:
|
|
421
557
|
|
|
422
|
-
###
|
|
558
|
+
### Claude Code 自动读取的内容
|
|
423
559
|
|
|
424
560
|
| 文件 | 时机 | 保证 |
|
|
425
561
|
|---|---|---|
|
|
426
|
-
| `CLAUDE.md` |
|
|
427
|
-
| `.claude/rules/00.core/*` |
|
|
428
|
-
| `.claude/rules/10.backend/*` |
|
|
429
|
-
| `.claude/rules/
|
|
430
|
-
| `.claude/rules/
|
|
431
|
-
| `.claude/rules/
|
|
562
|
+
| `CLAUDE.md` | 每次会话开始时 | 始终 |
|
|
563
|
+
| `.claude/rules/00.core/*` | 编辑任何文件时(`paths: ["**/*"]`) | 始终 |
|
|
564
|
+
| `.claude/rules/10.backend/*` | 编辑任何文件时(`paths: ["**/*"]`) | 始终 |
|
|
565
|
+
| `.claude/rules/20.frontend/*` | 编辑任何前端文件时(限定在 component/page/style 路径) | 条件性 |
|
|
566
|
+
| `.claude/rules/30.security-db/*` | 编辑任何文件时(`paths: ["**/*"]`) | 始终 |
|
|
567
|
+
| `.claude/rules/40.infra/*` | 仅编辑 config/infra 文件时(限定路径) | 条件性 |
|
|
568
|
+
| `.claude/rules/50.sync/*` | 仅编辑 claudeos-core 文件时(限定路径) | 条件性 |
|
|
569
|
+
| `.claude/rules/60.memory/*` | 编辑 `claudeos-core/memory/*` 时(限定到 memory 路径)— 指示**如何**读/写按需内存层 | 条件性(v2.0.0) |
|
|
432
570
|
|
|
433
|
-
###
|
|
571
|
+
### Claude Code 通过规则引用按需读取的内容
|
|
434
572
|
|
|
435
|
-
|
|
573
|
+
每个规则文件通过 `## Reference` 部分链接到其对应的 standard。Claude 只读取与当前任务相关的 standard:
|
|
436
574
|
|
|
437
|
-
- `claudeos-core/standard/**` — 编码模式、✅/❌
|
|
438
|
-
- `claudeos-core/database/**` —
|
|
575
|
+
- `claudeos-core/standard/**` — 编码模式、✅/❌ 示例、命名约定
|
|
576
|
+
- `claudeos-core/database/**` — DB schema(用于查询、映射器、迁移)
|
|
577
|
+
- `claudeos-core/memory/**`(v2.0.0)— L4 团队知识层;**不**自动加载(在每次会话中都会太嘈杂)。相反,`60.memory/*` 规则告诉 Claude *何时* 读取这些文件:在会话开始时(浏览最近的 `decision-log.md` + 高重要性的 `failure-patterns.md`),以及在做出决策或遇到重现错误时按需追加。
|
|
439
578
|
|
|
440
|
-
`00.standard-reference.md`
|
|
579
|
+
`00.standard-reference.md` 充当所有 standard 文件的目录,用于发现没有对应规则的 standards。
|
|
441
580
|
|
|
442
|
-
###
|
|
581
|
+
### Claude Code 不读取的内容(节省上下文)
|
|
443
582
|
|
|
444
|
-
|
|
583
|
+
这些文件夹通过 standard-reference 规则中的 `DO NOT Read` 部分明确排除:
|
|
445
584
|
|
|
446
585
|
| 文件夹 | 排除原因 |
|
|
447
586
|
|---|---|
|
|
448
587
|
| `claudeos-core/plan/` | Master Plan 备份(~340KB)。使用 `npx claudeos-core refresh` 同步。 |
|
|
449
|
-
| `claudeos-core/generated/` | 构建元数据 JSON
|
|
588
|
+
| `claudeos-core/generated/` | 构建元数据 JSON、提示、Pass 标记、翻译缓存、`.staged-rules/`。不用于编码。 |
|
|
450
589
|
| `claudeos-core/guide/` | 面向人类的入门指南。 |
|
|
451
|
-
| `claudeos-core/mcp-guide/` | MCP
|
|
590
|
+
| `claudeos-core/mcp-guide/` | MCP 服务器文档。不用于编码。 |
|
|
591
|
+
| `claudeos-core/memory/`(自动加载) | **设计上禁用自动加载** — 会在每次会话中膨胀上下文。改为通过 `60.memory/*` 规则按需读取(例如 `failure-patterns.md` 的会话开始扫描)。始终提交这些文件。 |
|
|
452
592
|
|
|
453
593
|
---
|
|
454
594
|
|
|
@@ -457,100 +597,159 @@ ClaudeOS-Core 生成的文档,Claude Code 实际读取方式如下:
|
|
|
457
597
|
### 安装后
|
|
458
598
|
|
|
459
599
|
```
|
|
460
|
-
#
|
|
461
|
-
"
|
|
600
|
+
# 像往常一样使用 Claude Code — 它会自动引用你的标准:
|
|
601
|
+
"为 order 领域创建 CRUD"
|
|
462
602
|
"添加用户资料更新 API"
|
|
463
|
-
"
|
|
603
|
+
"重构这段代码以匹配项目模式"
|
|
464
604
|
```
|
|
465
605
|
|
|
466
|
-
###
|
|
606
|
+
### 手动编辑标准后
|
|
467
607
|
|
|
468
608
|
```bash
|
|
469
|
-
# 编辑
|
|
609
|
+
# 编辑 standards 或 rules 文件后:
|
|
470
610
|
npx claudeos-core refresh
|
|
471
611
|
|
|
472
|
-
#
|
|
612
|
+
# 验证一切都是一致的
|
|
473
613
|
npx claudeos-core health
|
|
474
614
|
```
|
|
475
615
|
|
|
476
|
-
###
|
|
616
|
+
### 当文档损坏时
|
|
477
617
|
|
|
478
618
|
```bash
|
|
479
619
|
# 从 Master Plan 恢复一切
|
|
480
620
|
npx claudeos-core restore
|
|
481
621
|
```
|
|
482
622
|
|
|
623
|
+
### 内存层维护(v2.0.0)
|
|
624
|
+
|
|
625
|
+
L4 内存层(`claudeos-core/memory/`)跨会话积累团队知识。3 个 CLI 子命令保持其健康:
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
# Compact:执行 4 阶段压缩策略(定期 — 例如每月)
|
|
629
|
+
npx claudeos-core memory compact
|
|
630
|
+
# Stage 1:总结过期条目(>30 天,正文 → 一行)
|
|
631
|
+
# Stage 2:合并重复标题(frequency 求和,保留最新 fix)
|
|
632
|
+
# Stage 3:丢弃低重要性 + 过期(importance <3 AND lastSeen >60 天)
|
|
633
|
+
# Stage 4:强制每个文件 400 行上限(最古老的低重要性首先丢弃)
|
|
634
|
+
|
|
635
|
+
# Score:按重要性重新排名 failure-patterns.md 条目
|
|
636
|
+
npx claudeos-core memory score
|
|
637
|
+
# importance = round(frequency × 1.5 + recency × 5),最大 10
|
|
638
|
+
# 在追加几个新的失败模式后运行
|
|
639
|
+
|
|
640
|
+
# Propose-rules:从重现的失败中提出候选规则添加
|
|
641
|
+
npx claudeos-core memory propose-rules
|
|
642
|
+
# 读取 frequency ≥ 3 的 failure-patterns.md 条目
|
|
643
|
+
# 计算 confidence(加权证据的 sigmoid × 锚点乘数)
|
|
644
|
+
# 将提议写入 memory/auto-rule-update.md(不自动应用)
|
|
645
|
+
# Confidence ≥ 0.70 值得认真审查;接受 → 编辑规则 + 记录决策
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
何时写入内存(Claude 按需执行此操作,但你也可以手动编辑):
|
|
649
|
+
- **`decision-log.md`** — 每当你在竞争模式之间选择、选择库、定义团队约定或决定*不*做某事时追加新条目。仅追加;从不编辑历史条目。
|
|
650
|
+
- **`failure-patterns.md`** — 在重现错误或不明显根本原因的**第二次出现**时追加。首次错误不需要条目。
|
|
651
|
+
- `compaction.md` 和 `auto-rule-update.md` — 由上面的 CLI 子命令生成/管理;不要手动编辑。
|
|
652
|
+
|
|
483
653
|
### CI/CD 集成
|
|
484
654
|
|
|
485
655
|
```yaml
|
|
486
656
|
# GitHub Actions 示例
|
|
487
657
|
- run: npx claudeos-core validate
|
|
488
|
-
#
|
|
658
|
+
# Exit code 1 阻止 PR
|
|
659
|
+
|
|
660
|
+
# 可选:每月内存维护(单独的 cron workflow)
|
|
661
|
+
- run: npx claudeos-core memory compact
|
|
662
|
+
- run: npx claudeos-core memory score
|
|
489
663
|
```
|
|
490
664
|
|
|
491
665
|
---
|
|
492
666
|
|
|
493
|
-
##
|
|
667
|
+
## 这有什么不同?
|
|
668
|
+
|
|
669
|
+
### 与其他 Claude Code 工具对比
|
|
494
670
|
|
|
495
671
|
| | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
|
|
496
672
|
|---|---|---|---|---|---|
|
|
497
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
500
|
-
|
|
|
501
|
-
|
|
|
502
|
-
|
|
|
503
|
-
|
|
|
504
|
-
|
|
|
505
|
-
|
|
|
506
|
-
|
|
|
507
|
-
|
|
|
508
|
-
|
|
|
673
|
+
| **方法** | 代码先分析,然后 LLM 生成 | 预构建配置预设 | LLM 设计 agent 团队 | LLM 生成规范文档 | LLM 编写 CLAUDE.md |
|
|
674
|
+
| **读取你的源代码** | ✅ 确定性静态分析 | ❌ | ❌ | ❌(LLM 读取) | ❌(LLM 读取) |
|
|
675
|
+
| **技术栈检测** | 代码确认(ORM、DB、构建工具、pkg manager) | N/A(技术栈无关) | LLM 猜测 | LLM 猜测 | LLM 猜测 |
|
|
676
|
+
| **领域检测** | 代码确认(Java 5 模式、Kotlin CQRS、Next.js FSD) | N/A | LLM 猜测 | N/A | N/A |
|
|
677
|
+
| **相同项目 → 相同结果** | ✅ 确定性分析 | ✅(静态文件) | ❌(LLM 变化) | ❌(LLM 变化) | ❌(LLM 变化) |
|
|
678
|
+
| **大型项目处理** | 领域分组切分(每组 4 个领域 / 40 个文件) | N/A | 无切分 | 无切分 | 上下文窗口限制 |
|
|
679
|
+
| **输出** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans(40-50+ 文件) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 个规范文档 | CLAUDE.md(1 个文件) |
|
|
680
|
+
| **输出位置** | `.claude/rules/`(由 Claude Code 自动加载) | `.claude/` 各种 | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
|
|
681
|
+
| **生成后验证** | ✅ 5 个自动验证器 | ❌ | ❌ | ❌ | ❌ |
|
|
682
|
+
| **多语言输出** | ✅ 10 种语言 | ❌ | ❌ | ❌ | ❌ |
|
|
683
|
+
| **多技术栈** | ✅ Backend + Frontend 同时 | ❌ 技术栈无关 | ❌ | ❌ | 部分 |
|
|
684
|
+
| **持久内存层** | ✅ L4 — 决策日志 + 失败模式 + 自动评分规则提议(v2.0.0) | ❌ | ❌ | ❌ | ❌ |
|
|
685
|
+
| **Agent 编排** | ❌ | ✅ 28 agents | ✅ 6 patterns | ❌ | ❌ |
|
|
686
|
+
|
|
687
|
+
### 一句话的关键区别
|
|
688
|
+
|
|
689
|
+
**其他工具给 Claude "一般来说不错的指令"。ClaudeOS-Core 给 Claude "从你的实际代码中提取的指令"。**
|
|
509
690
|
|
|
510
|
-
|
|
691
|
+
这就是为什么 Claude Code 在你的 MyBatis 项目中停止生成 JPA 代码,
|
|
692
|
+
当你的代码库使用 `ok()` 时停止使用 `success()`,
|
|
693
|
+
当你的项目使用 `controller/user/` 时停止创建 `user/controller/` 目录。
|
|
511
694
|
|
|
512
|
-
|
|
695
|
+
### 互补,而非竞争
|
|
513
696
|
|
|
514
|
-
|
|
697
|
+
ClaudeOS-Core 专注于**项目特定规则和标准**。
|
|
698
|
+
其他工具专注于**agent 编排和工作流**。
|
|
515
699
|
|
|
516
|
-
ClaudeOS-Core
|
|
517
|
-
Use both together.
|
|
700
|
+
你可以使用 ClaudeOS-Core 生成项目规则,然后在其之上使用 ECC 或 Harness 进行 agent 团队和工作流自动化。它们解决不同的问题。
|
|
518
701
|
|
|
519
702
|
---
|
|
703
|
+
|
|
520
704
|
## FAQ
|
|
521
705
|
|
|
522
|
-
**Q
|
|
523
|
-
|
|
706
|
+
**Q:它会修改我的源代码吗?**
|
|
707
|
+
不会。它只创建 `CLAUDE.md`、`.claude/rules/` 和 `claudeos-core/`。你现有的代码永远不会被修改。
|
|
708
|
+
|
|
709
|
+
**Q:花费多少?**
|
|
710
|
+
它调用 `claude -p` 4–8 次(Pass 1 × N + Pass 2 + Pass 3 + Pass 4)。这在 Claude Code 的正常使用范围内。当 `--lang` 是非英语时,静态回退路径可能会调用几个额外的 `claude -p` 进行翻译;结果会缓存在 `claudeos-core/generated/.i18n-cache-<lang>.json` 中,以便后续运行可重用它们。
|
|
711
|
+
|
|
712
|
+
**Q:我应该将生成的文件提交到 Git 吗?**
|
|
713
|
+
是的,推荐。你的团队可以共享相同的 Claude Code 标准。考虑将 `claudeos-core/generated/` 添加到 `.gitignore`(分析 JSON 可以重新生成)。
|
|
524
714
|
|
|
525
|
-
**Q
|
|
526
|
-
|
|
715
|
+
**Q:混合技术栈项目(例如 Java backend + React frontend)怎么办?**
|
|
716
|
+
完全支持。ClaudeOS-Core 自动检测两个技术栈,将领域标记为 `backend` 或 `frontend`,并为每个使用特定技术栈的分析提示。Pass 2 合并一切,Pass 3 在一个 pass 中生成 backend 和 frontend 标准。
|
|
527
717
|
|
|
528
|
-
**Q
|
|
529
|
-
|
|
718
|
+
**Q:它适用于 Turborepo / pnpm workspaces / Lerna 单体仓库吗?**
|
|
719
|
+
是的。ClaudeOS-Core 检测 `turbo.json`、`pnpm-workspace.yaml`、`lerna.json` 或 `package.json#workspaces`,并自动扫描子包 `package.json` 文件以查找 framework/ORM/DB 依赖项。领域扫描覆盖 `apps/*/src/` 和 `packages/*/src/` 模式。从单体仓库根目录运行。
|
|
530
720
|
|
|
531
|
-
**Q
|
|
532
|
-
|
|
721
|
+
**Q:重新运行时会发生什么?**
|
|
722
|
+
如果存在之前的 Pass 1/2 结果,会出现一个交互式提示让你选择:**Continue**(从停止的地方恢复)或 **Fresh**(删除所有并重新开始)。使用 `--force` 跳过提示并始终重新开始。Pass 3 始终重新运行。可以从 Master Plans 恢复以前的版本。
|
|
533
723
|
|
|
534
|
-
**Q
|
|
535
|
-
|
|
724
|
+
**Q:NestJS 是使用自己的模板还是 Express 的?**
|
|
725
|
+
NestJS 使用专用的 `node-nestjs` 模板,具有 NestJS 特定的分析类别:`@Module`、`@Injectable`、`@Controller` decorators、Guards、Pipes、Interceptors、DI 容器、CQRS 模式和 `Test.createTestingModule`。Express 项目使用单独的 `node-express` 模板。
|
|
536
726
|
|
|
537
|
-
**Q:
|
|
538
|
-
|
|
727
|
+
**Q:Vue / Nuxt 项目怎么办?**
|
|
728
|
+
Vue/Nuxt 使用专用的 `vue-nuxt` 模板,涵盖 Composition API、`<script setup>`、defineProps/defineEmits、Pinia stores、`useFetch`/`useAsyncData`、Nitro 服务器路由和 `@nuxt/test-utils`。Next.js/React 项目使用 `node-nextjs` 模板。
|
|
539
729
|
|
|
540
|
-
**Q
|
|
541
|
-
|
|
730
|
+
**Q:它支持 Kotlin 吗?**
|
|
731
|
+
是的。ClaudeOS-Core 从 `build.gradle.kts` 或 `build.gradle` 中的 kotlin 插件自动检测 Kotlin。它使用专用的 `kotlin-spring` 模板,具有 Kotlin 特定的分析(data classes、sealed classes、coroutines、extension functions、MockK 等)。
|
|
542
732
|
|
|
543
|
-
**Q
|
|
544
|
-
|
|
733
|
+
**Q:CQRS / BFF 架构怎么办?**
|
|
734
|
+
对于 Kotlin 多模块项目完全支持。ClaudeOS-Core 读取 `settings.gradle.kts`,从模块名检测模块类型(command、query、bff、integration),并跨 Command/Query 模块对同一领域进行分组。生成的标准包括 command controllers 与 query controllers 的单独规则、BFF/Feign 模式和模块间通信约定。
|
|
545
735
|
|
|
546
|
-
**Q
|
|
547
|
-
|
|
736
|
+
**Q:Gradle 多模块单体仓库怎么办?**
|
|
737
|
+
ClaudeOS-Core 扫描所有子模块(`**/src/main/kotlin/**/*.kt`),不论嵌套深度。模块类型从命名约定推断(例如 `reservation-command-server` → domain: `reservation`,type: `command`)。也检测共享库(`shared-lib`、`integration-lib`)。
|
|
548
738
|
|
|
549
|
-
**Q:
|
|
550
|
-
|
|
739
|
+
**Q:L4 内存层(v2.0.0)是什么?我应该提交 `claudeos-core/memory/` 吗?**
|
|
740
|
+
是的 — **始终提交** `claudeos-core/memory/`。它是持久化的团队知识:`decision-log.md` 记录架构选择背后的*为什么*(仅追加),`failure-patterns.md` 注册重现错误及其重要性分数,以便未来会话避免它们,`compaction.md` 定义 4 阶段压缩策略,`auto-rule-update.md` 收集机器生成的规则改进提议。与规则(按路径自动加载)不同,内存文件是**按需的** — Claude 只在 `60.memory/*` 规则指示它时读取它们(例如会话开始时扫描高重要性故障)。这样可以保持上下文成本低,同时保留长期知识。
|
|
551
741
|
|
|
552
|
-
**Q
|
|
553
|
-
|
|
742
|
+
**Q:如果 Pass 4 失败怎么办?**
|
|
743
|
+
自动化管道(`npx claudeos-core init`)有静态回退:如果 `claude -p` 失败或 `pass4-prompt.md` 缺失,它通过 `lib/memory-scaffold.js` 直接搭建内存层。当 `--lang` 是非英语时,静态回退**必须**通过 `claude` CLI 翻译 — 如果那也失败,运行以 `InitError` 中止(没有静默的英语回退)。在 `claude` 已认证时重新运行,或使用 `--lang en` 跳过翻译。翻译结果缓存在 `claudeos-core/generated/.i18n-cache-<lang>.json` 中,以便后续运行重用它们。
|
|
744
|
+
|
|
745
|
+
**Q:`memory compact` / `memory score` / `memory propose-rules` 做什么?**
|
|
746
|
+
请参阅上面的[内存层维护](#内存层维护v200)部分。简短版本:`compact` 运行 4 阶段策略(总结过期、合并重复、丢弃低重要性过期、强制 400 行上限);`score` 按重要性(frequency × recency)重新排名 `failure-patterns.md`;`propose-rules` 从重现的失败中将候选规则添加表面化到 `auto-rule-update.md`(不自动应用 — 手动审查和接受/拒绝)。
|
|
747
|
+
|
|
748
|
+
**Q:为什么 `--force`(或 "fresh" 恢复模式)删除 `.claude/rules/`?**
|
|
749
|
+
v2.0.0 添加了三个 Pass 3 silent-failure 守卫(Guard 3 覆盖两个不完整输出变体:H2 用于 `guide/`,H1 用于 `standard/skills/plan`)。Guard 1("部分 staged-rules 移动")和 Guard 3("不完整输出 — 缺失/空的 guide 文件或缺失的 standard 哨兵 / 空的 skills / 空的 plan")不依赖现有规则,但 Guard 2("检测到零规则")依赖 — 当 Claude 忽略 `staging-override.md` 指令并试图直接写入 `.claude/` 时(Claude Code 的 sensitive-path 策略阻止的地方)会触发。先前运行的陈旧规则会让 Guard 2 假阴性 — 所以 `--force`/`fresh` 清除 `.claude/rules/` 以确保干净的检测。**在 `--force`/`fresh` 下,对规则文件的手动编辑将丢失**;如有需要,请先备份。
|
|
750
|
+
|
|
751
|
+
**Q:`claudeos-core/generated/.staged-rules/` 是什么,为什么存在?**
|
|
752
|
+
Claude Code 的 sensitive-path 策略拒绝从 `claude -p` 子进程直接写入 `.claude/`(即使带 `--dangerously-skip-permissions`)。v2.0.0 通过让 Pass 3/4 提示将所有 `.claude/rules/` 写入重定向到暂存目录来绕过这一点;然后 Node.js 编排器(不受该策略约束)在每次 pass 后将暂存树移动到 `.claude/rules/`。这对用户是透明的 — 目录自动创建、自动清理、自动移动。如果先前的运行在移动中途崩溃,下一次运行在重试之前清除暂存目录。
|
|
554
753
|
|
|
555
754
|
---
|
|
556
755
|
|
|
@@ -558,26 +757,28 @@ ClaudeOS-Core 扫描所有子模块(`**/src/main/kotlin/**/*.kt`),不受
|
|
|
558
757
|
|
|
559
758
|
```
|
|
560
759
|
pass-prompts/templates/
|
|
561
|
-
├── common/ #
|
|
760
|
+
├── common/ # 共享 header/footer + pass4 + staging-override
|
|
562
761
|
├── java-spring/ # Java / Spring Boot
|
|
563
|
-
├── kotlin-spring/ # Kotlin / Spring Boot
|
|
762
|
+
├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
|
|
564
763
|
├── node-express/ # Node.js / Express
|
|
565
764
|
├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
|
|
566
765
|
├── node-fastify/ # Node.js / Fastify
|
|
567
|
-
├── node-nextjs/ # Next.js / React
|
|
766
|
+
├── node-nextjs/ # Next.js / React (App Router, RSC)
|
|
767
|
+
├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
|
|
568
768
|
├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
|
|
569
769
|
├── angular/ # Angular
|
|
570
770
|
├── python-django/ # Python / Django (DRF)
|
|
571
|
-
|
|
771
|
+
├── python-fastapi/ # Python / FastAPI
|
|
772
|
+
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
572
773
|
```
|
|
573
774
|
|
|
574
|
-
`plan-installer`
|
|
775
|
+
`plan-installer` 自动检测你的技术栈,然后组装特定于类型的提示。NestJS、Vue/Nuxt、Vite SPA 和 Flask 分别使用专用模板,具有框架特定的分析类别(例如 NestJS 的 `@Module`/`@Injectable`/Guards;Vue 的 `<script setup>`/Pinia/useFetch;Vite 的 client-side routing/`VITE_` env;Flask 的 Blueprint/`app.factory`/Flask-SQLAlchemy)。对于多技术栈项目,分别生成 `pass1-backend-prompt.md` 和 `pass1-frontend-prompt.md`,而 `pass3-prompt.md` 结合两个技术栈的生成目标。Pass 4 使用共享的 `common/pass4.md` 模板(内存脚手架),与技术栈无关。
|
|
575
776
|
|
|
576
777
|
---
|
|
577
778
|
|
|
578
|
-
##
|
|
779
|
+
## 单体仓库支持
|
|
579
780
|
|
|
580
|
-
ClaudeOS-Core 自动检测 JS/TS
|
|
781
|
+
ClaudeOS-Core 自动检测 JS/TS 单体仓库设置,并扫描子包的依赖项。
|
|
581
782
|
|
|
582
783
|
**支持的单体仓库标记**(自动检测):
|
|
583
784
|
- `turbo.json`(Turborepo)
|
|
@@ -585,33 +786,33 @@ ClaudeOS-Core 自动检测 JS/TS 单体仓库并扫描子包依赖。
|
|
|
585
786
|
- `lerna.json`(Lerna)
|
|
586
787
|
- `package.json#workspaces`(npm/yarn workspaces)
|
|
587
788
|
|
|
588
|
-
**从单体仓库根目录运行** — ClaudeOS-Core 读取 `apps/*/package.json` 和 `packages/*/package.json`
|
|
789
|
+
**从单体仓库根目录运行** — ClaudeOS-Core 读取 `apps/*/package.json` 和 `packages/*/package.json` 以跨子包发现 framework/ORM/DB 依赖项:
|
|
589
790
|
|
|
590
791
|
```bash
|
|
591
792
|
cd my-monorepo
|
|
592
793
|
npx claudeos-core init
|
|
593
794
|
```
|
|
594
795
|
|
|
595
|
-
|
|
596
|
-
- `apps/web/package.json`
|
|
597
|
-
- `apps/api/package.json`
|
|
598
|
-
- `packages/db/package.json`
|
|
599
|
-
- `pnpm-workspace.yaml`
|
|
796
|
+
**检测到的内容:**
|
|
797
|
+
- 来自 `apps/web/package.json` 的依赖项(例如 `next`、`react`)→ frontend 技术栈
|
|
798
|
+
- 来自 `apps/api/package.json` 的依赖项(例如 `express`、`prisma`)→ backend 技术栈
|
|
799
|
+
- 来自 `packages/db/package.json` 的依赖项(例如 `drizzle-orm`)→ ORM/DB
|
|
800
|
+
- 来自 `pnpm-workspace.yaml` 的自定义工作空间路径(例如 `services/*`)
|
|
600
801
|
|
|
601
|
-
|
|
602
|
-
- `apps/api/src/modules/*/` 和 `apps/api/src/*/`
|
|
603
|
-
- `apps/web/app/*/`、`apps/web/src/app/*/`、`apps/web/pages/*/`
|
|
604
|
-
- `packages/*/src/*/`
|
|
802
|
+
**领域扫描也涵盖单体仓库布局:**
|
|
803
|
+
- 后端领域的 `apps/api/src/modules/*/` 和 `apps/api/src/*/`
|
|
804
|
+
- 前端领域的 `apps/web/app/*/`、`apps/web/src/app/*/`、`apps/web/pages/*/`
|
|
805
|
+
- 共享包领域的 `packages/*/src/*/`
|
|
605
806
|
|
|
606
807
|
```
|
|
607
|
-
my-monorepo/ ←
|
|
808
|
+
my-monorepo/ ← 在此运行:npx claudeos-core init
|
|
608
809
|
├── turbo.json ← 自动检测为 Turborepo
|
|
609
810
|
├── apps/
|
|
610
811
|
│ ├── web/ ← 从 apps/web/package.json 检测到 Next.js
|
|
611
|
-
│ │ ├── app/dashboard/ ←
|
|
812
|
+
│ │ ├── app/dashboard/ ← 检测到前端领域
|
|
612
813
|
│ │ └── package.json ← { "dependencies": { "next": "^14" } }
|
|
613
814
|
│ └── api/ ← 从 apps/api/package.json 检测到 Express
|
|
614
|
-
│ ├── src/modules/users/ ←
|
|
815
|
+
│ ├── src/modules/users/ ← 检测到后端领域
|
|
615
816
|
│ └── package.json ← { "dependencies": { "express": "^4" } }
|
|
616
817
|
├── packages/
|
|
617
818
|
│ ├── db/ ← 从 packages/db/package.json 检测到 Drizzle
|
|
@@ -619,31 +820,54 @@ my-monorepo/ ← 在这里运行:npx claudeos-core init
|
|
|
619
820
|
└── package.json ← { "workspaces": ["apps/*", "packages/*"] }
|
|
620
821
|
```
|
|
621
822
|
|
|
622
|
-
> **注意:** Kotlin/Java
|
|
823
|
+
> **注意:** 对于 Kotlin/Java 单体仓库,多模块检测使用 `settings.gradle.kts`(请参阅上面的 [Kotlin 多模块领域检测](#kotlin-多模块领域检测)),不需要 JS 单体仓库标记。
|
|
623
824
|
|
|
624
825
|
## 故障排除
|
|
625
826
|
|
|
626
827
|
**"claude: command not found"** — Claude Code CLI 未安装或不在 PATH 中。参见 [Claude Code 文档](https://code.claude.com/docs/en/overview)。
|
|
627
828
|
|
|
628
|
-
**"npm install failed"** — Node.js
|
|
829
|
+
**"npm install failed"** — Node.js 版本可能太低。需要 v18+。
|
|
830
|
+
|
|
831
|
+
**"0 domains detected"** — 你的项目结构可能不标准。请参阅上面适合你技术栈的检测模式。
|
|
832
|
+
|
|
833
|
+
**Kotlin 项目上的 "0 domains detected"** — 确保你的项目在根目录有 `build.gradle.kts`(或带有 kotlin 插件的 `build.gradle`),并且源文件在 `**/src/main/kotlin/` 下。对于多模块项目,确保 `settings.gradle.kts` 包含 `include()` 语句。也支持单模块 Kotlin 项目(没有 `settings.gradle`)— 领域从 `src/main/kotlin/` 下的包/类结构提取。
|
|
834
|
+
|
|
835
|
+
**"Language detected as java instead of kotlin"** — ClaudeOS-Core 首先检查根 `build.gradle(.kts)`,然后检查子模块构建文件。如果根构建文件使用 `java` 插件而没有 `kotlin`,但子模块使用 Kotlin,该工具会作为回退检查最多 5 个子模块构建文件。如果仍未检测到,请确保至少一个 `build.gradle.kts` 包含 `kotlin("jvm")` 或 `org.jetbrains.kotlin`。
|
|
836
|
+
|
|
837
|
+
**"CQRS not detected"** — 架构检测依赖于包含 `command` 和 `query` 关键字的模块名称。如果你的模块使用不同的命名(例如 `write-server`、`read-server`),CQRS 架构不会被自动检测。你可以在 plan-installer 运行后手动调整生成的提示。
|
|
629
838
|
|
|
630
|
-
**"0
|
|
839
|
+
**"Pass 3 produced 0 rule files under .claude/rules/"(v2.0.0)** — Guard 2 触发:Claude 忽略了 `staging-override.md` 指令并试图直接写入 `.claude/`,这是 Claude Code 的 sensitive-path 策略阻止写入的地方。使用 `npx claudeos-core init --force` 重新运行。如果错误持续,请检查 `claudeos-core/generated/pass3-prompt.md` 以验证 `staging-override.md` 块在顶部。
|
|
631
840
|
|
|
632
|
-
**
|
|
841
|
+
**"Pass 3 finished but N rule file(s) could not be moved from staging"(v2.0.0)** — Guard 1 触发:暂存移动遇到瞬态文件锁(通常是 Windows 杀毒软件或文件监视器)。标记未写入,因此下一次 `init` 运行会自动重试 Pass 3。只需重新运行 `npx claudeos-core init`。
|
|
633
842
|
|
|
634
|
-
|
|
843
|
+
**"Pass 3 produced CLAUDE.md and rules but N/9 guide files are missing or empty"(v2.0.0)** — Guard 3 (H2) 触发:Claude 在写入 CLAUDE.md + rules 之后,但在完成(或开始)`claudeos-core/guide/` 部分(预期 9 个文件)之前响应被截断。在仅 BOM 或仅空白的文件上也会触发(标题已写入但正文被截断)。没有这个守卫,完成标记仍会被写入,使 `guide/` 在后续运行中永久为空。标记在这里不会被写入,所以下一次 `init` 运行会从相同的 Pass 2 结果重试 Pass 3。如果持续重复,使用 `npx claudeos-core init --force` 从头重新生成。
|
|
635
844
|
|
|
636
|
-
|
|
845
|
+
**"Pass 3 finished but the following required output(s) are missing or empty"(v2.0.0)** — Guard 3 (H1) 触发:Claude 在 `claudeos-core/guide/` 之后但在(或期间)`claudeos-core/standard/`、`claudeos-core/skills/` 或 `claudeos-core/plan/` 之前截断。要求:(a) `standard/00.core/01.project-overview.md` 存在且非空(每个技术栈的 Pass 3 提示都写入的哨兵),(b) `skills/` 有 ≥1 个非空 `.md`,(c) `plan/` 有 ≥1 个非空 `.md`。`database/` 和 `mcp-guide/` 被故意排除(某些技术栈合法地产生零文件)。与 Guard 3 (H2) 相同的恢复路径:重新运行 `init`,如果持续则 `--force`。
|
|
846
|
+
|
|
847
|
+
**"pass2-merged.json exists but is malformed or incomplete (<5 top-level keys), re-running"(v2.0.0)** — 信息日志,不是错误。在恢复时,`init` 现在解析并验证 `pass2-merged.json`(需要 ≥5 个顶级键,镜像 `pass-json-validator` 的 `INSUFFICIENT_KEYS` 阈值)。来自先前崩溃运行的骨架 `{}` 或格式错误的 JSON 会被自动删除,Pass 2 重新运行。不需要手动操作 — 管道自愈。如果持续出现,请检查 `claudeos-core/generated/pass2-prompt.md` 并使用 `--force` 重试。
|
|
848
|
+
|
|
849
|
+
**"Static fallback failed while translating to lang='ko'"(v2.0.0)** — 当 `--lang` 是非英语时,Pass 4 / 静态回退 / gap-fill 都需要 `claude` CLI 进行翻译。如果翻译失败(CLI 未认证、网络超时或 strict validation 拒绝输出:<40% 长度、损坏的代码围栏、丢失的 frontmatter 等),运行将中止而不是静默地写入英语。修复:确保 `claude` 已认证,或使用 `--lang en` 重新运行以跳过翻译。
|
|
850
|
+
|
|
851
|
+
**"pass4-memory.json exists but memory/ is empty"(v2.0.0)** — 之前的运行写入了标记,但用户(或清理脚本)删除了 `claudeos-core/memory/`。CLI 自动检测这个陈旧标记并在下一次 `init` 上重新运行 Pass 4。不需要手动操作。
|
|
852
|
+
|
|
853
|
+
**"pass4-memory.json exists but is malformed (missing passNum/memoryFiles) — re-running Pass 4"(v2.0.0)** — 信息日志,不是错误。Pass 4 标记内容现在被验证(`passNum === 4` + 非空 `memoryFiles` 数组,不仅仅是存在)。将像 `{"error":"timeout"}` 这样的东西作为标记正文发出的部分 Claude 失败以前会被永远接受为成功;现在标记被删除并 Pass 4 自动重新运行。
|
|
854
|
+
|
|
855
|
+
**"Could not delete stale pass3-complete.json / pass4-memory.json" InitError(v2.0.0)** — `init` 检测到陈旧标记(Pass 3:CLAUDE.md 被外部删除;Pass 4:memory/ 为空或标记正文格式错误)并试图将其删除,但 `unlinkSync` 调用失败 — 通常是因为 Windows 杀毒软件或文件监视器(编辑器、IDE 索引器)保持着文件句柄。以前这被静默忽略,导致管道跳过 pass 并重用陈旧标记。现在它大声失败。修复:关闭可能打开该文件的任何编辑器/AV 扫描器,然后重新运行 `npx claudeos-core init`。
|
|
856
|
+
|
|
857
|
+
**"CLAUDEOS_SKIP_TRANSLATION=1 is set but --lang='ko' requires translation" InitError(v2.0.0)** — 你在 shell 中设置了仅用于测试的环境变量 `CLAUDEOS_SKIP_TRANSLATION=1`(可能是 CI/测试设置遗留下来的)并选择了非英语 `--lang`。这个环境变量使 Pass 4 的静态回退和 gap-fill 依赖的翻译路径短路以用于非英语输出。`init` 在语言选择时检测冲突并立即中止(而不是在 Pass 4 中途带着令人困惑的嵌套错误崩溃)。修复:在运行之前 `unset CLAUDEOS_SKIP_TRANSLATION`,或使用 `npx claudeos-core init --lang en`。
|
|
637
858
|
|
|
638
859
|
---
|
|
639
860
|
|
|
640
|
-
##
|
|
861
|
+
## 贡献
|
|
641
862
|
|
|
642
863
|
欢迎贡献!最需要帮助的领域:
|
|
643
864
|
|
|
644
|
-
- **新技术栈模板** — Ruby/Rails、Go/
|
|
645
|
-
- **
|
|
646
|
-
-
|
|
865
|
+
- **新技术栈模板** — Ruby/Rails、Go (Gin/Fiber/Echo)、PHP (Laravel/Symfony)、Rust (Axum/Actix)、Svelte/SvelteKit、Remix
|
|
866
|
+
- **IDE 集成** — VS Code 扩展、IntelliJ 插件
|
|
867
|
+
- **CI/CD 模板** — GitLab CI、CircleCI、Jenkins 示例(GitHub Actions 已经自带 — 参见 `.github/workflows/test.yml`)
|
|
868
|
+
- **测试覆盖率** — 扩展测试套件(当前 24 个测试文件中的 489 个测试,涵盖扫描器、技术栈检测、领域分组、计划解析、提示生成、CLI 选择器、单体仓库检测、Vite SPA 检测、验证工具、L4 内存脚手架、Pass 2 恢复验证、Pass 3 Guards 1/2/3(H1 哨兵 + H2 BOM-aware 空文件 + 严格陈旧标记 unlink)、Pass 4 标记内容验证 + 陈旧标记 unlink 严格性、翻译 env-skip 守卫 + early fail-fast + CI 工作流、staged-rules 移动、语言感知翻译回退和 AI Work Rules 模板结构)
|
|
869
|
+
|
|
870
|
+
查看 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 以获取完整的领域列表、代码风格、提交约定和添加新技术栈模板的分步指南。
|
|
647
871
|
|
|
648
872
|
---
|
|
649
873
|
|