@pm_zhousl/xinyun-ai-init 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/bin/xinyun-ai-init.js +111 -8
- package/init/xinyun-ai-init/README.md +80 -8
- package/init/xinyun-ai-init/rules/frameworks/README.md +24 -0
- package/init/xinyun-ai-init/rules/frameworks/backend/php/thinkphp.md +26 -0
- package/init/xinyun-ai-init/rules/frameworks/frontend/uni-app.md +28 -0
- package/init/xinyun-ai-init/rules/frameworks/frontend/wechat-miniprogram.md +28 -0
- package/init/xinyun-ai-init/rules/init-rules.md +4 -1
- package/init/xinyun-ai-init/rules/upgrade-rules.md +10 -1
- package/init/xinyun-ai-init/templates/AGENTS.template.md +16 -0
- package/init/xinyun-ai-init/templates/README.template.md +3 -0
- package/init/xinyun-ai-init/templates/core-rules.template.md +46 -13
- package/init/xinyun-ai-init/templates/current-task.template.md +7 -2
- package/init/xinyun-ai-init/templates/manifest.template.json +10 -4
- package/init/xinyun-ai-init/templates/project-check.template.md +1 -1
- package/init/xinyun-ai-init/templates/project-guide.template.md +8 -0
- package/init/xinyun-ai-init/templates/project-index.template.json +1 -1
- package/init/xinyun-ai-init/version.json +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,6 +24,17 @@ npx --yes @pm_zhousl/xinyun-ai-init@latest --force
|
|
|
24
24
|
|
|
25
25
|
完整执行要求已经内置在 `xinyun-ai-init/README.md`、`rules/` 和 `templates/` 中。后续不需要复制长提示词,只需要让 AI 读取本地释放出来的 `xinyun-ai-init/README.md`。
|
|
26
26
|
|
|
27
|
+
CLI 执行时会显示当前版本,并尽量检测 npm 线上最新版本;检测失败不会阻塞初始化。
|
|
28
|
+
|
|
29
|
+
用户发送 Codex 一句话入口后,AI 可按初始化包规则创建或补齐最小 `xinyun-ai/`;这不代表授权修改业务代码。
|
|
30
|
+
|
|
31
|
+
可选参数:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
--no-version-check
|
|
35
|
+
--strict-version
|
|
36
|
+
```
|
|
37
|
+
|
|
27
38
|
## 维护者发布
|
|
28
39
|
|
|
29
40
|
发布新版时,在本包目录执行:
|
package/bin/xinyun-ai-init.js
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
const fs = require("fs");
|
|
4
|
+
const https = require("https");
|
|
4
5
|
const path = require("path");
|
|
5
6
|
|
|
7
|
+
const packageJson = require("../package.json");
|
|
8
|
+
|
|
6
9
|
const args = new Set(process.argv.slice(2));
|
|
7
10
|
const force = args.has("--force") || args.has("-f");
|
|
11
|
+
const noVersionCheck = args.has("--no-version-check");
|
|
12
|
+
const strictVersion = args.has("--strict-version");
|
|
8
13
|
const cwd = process.cwd();
|
|
9
14
|
const source = path.resolve(__dirname, "..", "init", "xinyun-ai-init");
|
|
10
15
|
const target = path.join(cwd, "xinyun-ai-init");
|
|
16
|
+
const packageName = packageJson.name;
|
|
17
|
+
const currentVersion = packageJson.version;
|
|
18
|
+
const registryMetadataUrl = "https://registry.npmjs.org/@pm_zhousl%2Fxinyun-ai-init";
|
|
11
19
|
|
|
12
20
|
function copyDir(src, dest) {
|
|
13
21
|
fs.mkdirSync(dest, { recursive: true });
|
|
@@ -22,16 +30,106 @@ function copyDir(src, dest) {
|
|
|
22
30
|
}
|
|
23
31
|
}
|
|
24
32
|
|
|
25
|
-
function
|
|
33
|
+
function compareVersions(a, b) {
|
|
34
|
+
const pa = String(a).split(".").map((part) => Number.parseInt(part, 10) || 0);
|
|
35
|
+
const pb = String(b).split(".").map((part) => Number.parseInt(part, 10) || 0);
|
|
36
|
+
const length = Math.max(pa.length, pb.length);
|
|
37
|
+
|
|
38
|
+
for (let index = 0; index < length; index += 1) {
|
|
39
|
+
const av = pa[index] || 0;
|
|
40
|
+
const bv = pb[index] || 0;
|
|
41
|
+
if (av > bv) return 1;
|
|
42
|
+
if (av < bv) return -1;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function fetchLatestVersion(timeoutMs = 1500) {
|
|
49
|
+
return new Promise((resolve) => {
|
|
50
|
+
const request = https.get(
|
|
51
|
+
registryMetadataUrl,
|
|
52
|
+
{ headers: { Accept: "application/json", "User-Agent": "xinyun-ai-init" } },
|
|
53
|
+
(response) => {
|
|
54
|
+
let body = "";
|
|
55
|
+
|
|
56
|
+
response.setEncoding("utf8");
|
|
57
|
+
response.on("data", (chunk) => {
|
|
58
|
+
body += chunk;
|
|
59
|
+
});
|
|
60
|
+
response.on("end", () => {
|
|
61
|
+
if (response.statusCode < 200 || response.statusCode >= 300) {
|
|
62
|
+
resolve(null);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
const data = JSON.parse(body);
|
|
68
|
+
resolve(data && data["dist-tags"] ? data["dist-tags"].latest : null);
|
|
69
|
+
} catch (error) {
|
|
70
|
+
resolve(null);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
request.setTimeout(timeoutMs, () => {
|
|
77
|
+
request.destroy();
|
|
78
|
+
resolve(null);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
request.on("error", () => {
|
|
82
|
+
resolve(null);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
async function checkVersion() {
|
|
88
|
+
console.log(`[xinyun-ai-init] Current version: ${currentVersion}`);
|
|
89
|
+
|
|
90
|
+
if (noVersionCheck) {
|
|
91
|
+
console.log("[xinyun-ai-init] Version check skipped.");
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const latestVersion = await fetchLatestVersion();
|
|
96
|
+
|
|
97
|
+
if (!latestVersion) {
|
|
98
|
+
console.log("[xinyun-ai-init] Could not check latest npm version. Continue with local version.");
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
console.log(`[xinyun-ai-init] Latest version: ${latestVersion}`);
|
|
103
|
+
|
|
104
|
+
if (compareVersions(currentVersion, latestVersion) < 0) {
|
|
105
|
+
console.log("[xinyun-ai-init] A newer version is available. Recommended command:");
|
|
106
|
+
console.log(`npx --yes ${packageName}@latest --force`);
|
|
107
|
+
|
|
108
|
+
if (strictVersion) {
|
|
109
|
+
console.error("[xinyun-ai-init] Strict version mode is enabled. Stop because local version is outdated.");
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async function main() {
|
|
118
|
+
const canContinue = await checkVersion();
|
|
119
|
+
if (!canContinue) {
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
|
|
26
123
|
if (!fs.existsSync(source)) {
|
|
27
|
-
console.error("[xinyun-ai-init]
|
|
124
|
+
console.error("[xinyun-ai-init] Init package missing:", source);
|
|
125
|
+
console.error("[xinyun-ai-init] Please reinstall or run with @latest.");
|
|
28
126
|
process.exit(1);
|
|
29
127
|
}
|
|
30
128
|
|
|
31
129
|
if (fs.existsSync(target)) {
|
|
32
130
|
if (!force) {
|
|
33
|
-
console.log("[xinyun-ai-init]
|
|
34
|
-
console.log(
|
|
131
|
+
console.log("[xinyun-ai-init] xinyun-ai-init/ already exists. Skip overwrite.");
|
|
132
|
+
console.log(`[xinyun-ai-init] To overwrite, run: npx --yes ${packageName}@latest --force`);
|
|
35
133
|
console.log("");
|
|
36
134
|
printNextStep();
|
|
37
135
|
return;
|
|
@@ -40,18 +138,23 @@ function main() {
|
|
|
40
138
|
}
|
|
41
139
|
|
|
42
140
|
copyDir(source, target);
|
|
43
|
-
console.log("[xinyun-ai-init]
|
|
141
|
+
console.log("[xinyun-ai-init] Created init package:", target);
|
|
142
|
+
console.log("[xinyun-ai-init] This CLI only creates xinyun-ai-init/. It does not create xinyun-ai/ or modify business code.");
|
|
44
143
|
console.log("");
|
|
45
144
|
printNextStep();
|
|
46
145
|
}
|
|
47
146
|
|
|
48
147
|
function printNextStep() {
|
|
49
|
-
console.log("
|
|
148
|
+
console.log("Next step: send this message to Codex / Cursor / Claude Code:");
|
|
50
149
|
console.log("");
|
|
51
150
|
console.log("请执行 `npx --yes @pm_zhousl/xinyun-ai-init@latest --force`,然后读取 `xinyun-ai-init/README.md`,按其中规则初始化或升级当前项目。");
|
|
52
151
|
console.log("");
|
|
53
|
-
console.log("
|
|
152
|
+
console.log("The full workflow is in xinyun-ai-init/README.md. No long prompt is needed.");
|
|
153
|
+
console.log("After this message, the AI may create or update the minimal xinyun-ai/ workspace, but must not modify business code without confirmation.");
|
|
54
154
|
console.log("");
|
|
55
155
|
}
|
|
56
156
|
|
|
57
|
-
main()
|
|
157
|
+
main().catch((error) => {
|
|
158
|
+
console.error("[xinyun-ai-init] Unexpected error:", error && error.message ? error.message : error);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
});
|
|
@@ -24,13 +24,49 @@ AI 读取本文件后,必须按以下方式执行:
|
|
|
24
24
|
|
|
25
25
|
1. 如果当前项目没有 `xinyun-ai/`,进入极速初始化模式。
|
|
26
26
|
2. 如果当前项目已有 `xinyun-ai/`,进入升级检查模式。
|
|
27
|
-
3.
|
|
27
|
+
3. 用户发送 Codex 一句话入口后,视为已授权 AI 按本初始化包创建或补齐最小 `xinyun-ai/` 与极简 `AGENTS.md`。
|
|
28
28
|
4. 代码整改前必须先输出修改方案,等待用户明确确认后才能执行。
|
|
29
29
|
5. 涉及 SQL / 数据库改动时,必须单独输出 SQL 执行提醒。
|
|
30
30
|
6. 非项目开发内容不要沉淀。
|
|
31
31
|
7. 首次初始化不执行语言级语法检查、lint、typecheck、测试或构建命令;本机缺少运行时只记录为待确认,不展开长解释。
|
|
32
32
|
8. 完成后用中文输出初始化或升级结果、项目导读、待确认问题和后续短指令。
|
|
33
33
|
|
|
34
|
+
## 初始化授权边界
|
|
35
|
+
|
|
36
|
+
CLI 只负责生成 `xinyun-ai-init/`,不创建 `xinyun-ai/`,也不修改业务代码。
|
|
37
|
+
|
|
38
|
+
用户发送一句话入口后,AI 可以按本 README 和 `templates/` 创建或补齐首次最小落盘清单。
|
|
39
|
+
|
|
40
|
+
该授权只覆盖 AI 工作区初始化,不代表授权修改业务代码、配置、数据库、依赖、构建脚本、测试逻辑、API 行为、UI 行为或业务流程。
|
|
41
|
+
|
|
42
|
+
## 代码修改强制确认
|
|
43
|
+
|
|
44
|
+
用户提出“帮我改”“修复”“处理一下”“优化一下”只代表提出需求,不代表授权执行。
|
|
45
|
+
|
|
46
|
+
未确认前,只允许读取、分析、定位问题、输出方案;禁止 `apply_patch`、重写文件、格式化、自动修复、migration、seed、SQL、配置修改和任何会产生文件变化或业务副作用的命令。
|
|
47
|
+
|
|
48
|
+
修改方案至少包含:
|
|
49
|
+
|
|
50
|
+
1. 修改目标
|
|
51
|
+
2. 影响范围
|
|
52
|
+
3. 预计修改文件
|
|
53
|
+
4. 是否影响数据库 / API / UI / 配置
|
|
54
|
+
5. SQL 改动与执行提醒
|
|
55
|
+
6. 验证方式
|
|
56
|
+
7. 风险点
|
|
57
|
+
|
|
58
|
+
只有用户明确回复“确认执行”“可以修改”“按方案改”“同意”等类似内容后,才允许在确认范围内执行。
|
|
59
|
+
|
|
60
|
+
## 统一入口与旧规则失效
|
|
61
|
+
|
|
62
|
+
当前项目 AI 规则以 `xinyun-ai/` 为准,`AGENTS.md` 只作为入口文件,指向 `xinyun-ai/`。
|
|
63
|
+
|
|
64
|
+
旧 AI 文档、旧 docs、旧提示词、旧规则文件只作为历史线索,不作为执行依据。
|
|
65
|
+
|
|
66
|
+
如果旧规则路径在当前文件系统中不存在,必须标注为 `当前项目未发现`,不得引用历史会话中的旧内容。
|
|
67
|
+
|
|
68
|
+
如旧规则与 `xinyun-ai/` 冲突,以 `xinyun-ai/` 为准。
|
|
69
|
+
|
|
34
70
|
## 欣芸技术开发 Agent 流
|
|
35
71
|
|
|
36
72
|
这是一套面向 AI 编程工具的本地项目接手、按需理解、受控开发和持续沉淀方法论。
|
|
@@ -44,6 +80,20 @@ AI 读取本文件后,必须按以下方式执行:
|
|
|
44
80
|
5. 受控整改:只在确认范围内修改,不顺手重构。
|
|
45
81
|
6. 技术沉淀:会话结束前筛选有价值内容,沉淀到 `xinyun-ai/`;经验先候选,确认后升级。
|
|
46
82
|
|
|
83
|
+
## 轻量框架适配
|
|
84
|
+
|
|
85
|
+
首期只提供 ThinkPHP、uni-app、微信小程序的轻量识别规则,位置:
|
|
86
|
+
|
|
87
|
+
```md
|
|
88
|
+
rules/frameworks/backend/php/thinkphp.md
|
|
89
|
+
rules/frameworks/frontend/uni-app.md
|
|
90
|
+
rules/frameworks/frontend/wechat-miniprogram.md
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
框架适配只帮助 AI 定位入口、配置、页面 / 路由、请求封装线索,不做深度扫描,不默认创建大量框架说明文件。
|
|
94
|
+
|
|
95
|
+
未识别到对应框架时,不强行套用该框架规则。
|
|
96
|
+
|
|
47
97
|
## 执行模式
|
|
48
98
|
|
|
49
99
|
如果项目没有 `xinyun-ai/`:
|
|
@@ -98,6 +148,15 @@ xinyun-ai/index/project-index.json
|
|
|
98
148
|
- 不读取大目录和生成物:`node_modules`、`vendor`、`dist`、`build`、`.git`、`.codegraph`、`storage`、`runtime`、`unpackage`、`coverage`、`.next`、`.nuxt`。
|
|
99
149
|
- 不确定的信息标注:`推断`、`待确认`、`未在项目中发现`。
|
|
100
150
|
|
|
151
|
+
## 检索与回复规则
|
|
152
|
+
|
|
153
|
+
- 先读 `AGENTS.md`、`xinyun-ai/manifest.json`、`xinyun-ai/index/project-index.json`、`xinyun-ai/current-task.md`。
|
|
154
|
+
- 有 CodeGraph 时,结构性问题优先使用 CodeGraph。
|
|
155
|
+
- 先判断影响端,再读取对应 `workstreams/<端>/` 和相关文件。
|
|
156
|
+
- 输出中区分 `已确认`、`推断`、`待确认`、`未在项目中发现`。
|
|
157
|
+
- 回复先给结论,再给依据路径,再给待确认问题。
|
|
158
|
+
- 不沿用用户已经纠正或否定的旧方向。
|
|
159
|
+
|
|
101
160
|
## 按需补齐
|
|
102
161
|
|
|
103
162
|
后续识别到新端、模块或能力时,只在 `xinyun-ai/` 内补齐对应目录和说明文件。
|
|
@@ -141,15 +200,28 @@ AI 可以沉淀项目经验,但不能自己升级正式规则。
|
|
|
141
200
|
- 创建或修改 `xinyun-ai/` 内 Markdown 文件后,只做基础格式检查:标题、列表、代码块是否闭合。
|
|
142
201
|
- 不运行项目业务 lint、build、test、typecheck。
|
|
143
202
|
|
|
203
|
+
## 版本检测
|
|
204
|
+
|
|
205
|
+
CLI 执行时会尽量检测当前包版本和 npm 线上最新版本。
|
|
206
|
+
|
|
207
|
+
如果检测到本地版本低于线上版本,应提示用户使用:
|
|
208
|
+
|
|
209
|
+
```md
|
|
210
|
+
npx --yes @pm_zhousl/xinyun-ai-init@latest --force
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
版本检测失败不能阻塞初始化或升级流程。
|
|
214
|
+
|
|
144
215
|
## 输出要求
|
|
145
216
|
|
|
146
217
|
初始化或升级完成后,输出:
|
|
147
218
|
|
|
148
219
|
1. 当前执行模式:初始化 / 升级检查 / 部分完成 / 阻塞。
|
|
149
|
-
2.
|
|
150
|
-
3.
|
|
151
|
-
4.
|
|
152
|
-
5.
|
|
153
|
-
6.
|
|
154
|
-
7.
|
|
155
|
-
8.
|
|
220
|
+
2. 当前版本、目标版本、是否影响业务代码。
|
|
221
|
+
3. 已创建或已更新的 `xinyun-ai/` 文件。
|
|
222
|
+
4. 项目一句话概览。
|
|
223
|
+
5. 识别到的端、模块、技术栈、本地启动线索。
|
|
224
|
+
6. 数据库、API、测试体系发现情况。
|
|
225
|
+
7. CodeGraph 与索引状态。
|
|
226
|
+
8. 待确认问题。
|
|
227
|
+
9. 后续日常开发和问题排查短指令。
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# 框架适配规则
|
|
2
|
+
|
|
3
|
+
本目录用于按端和框架存放轻量识别规则。
|
|
4
|
+
|
|
5
|
+
## 目录约定
|
|
6
|
+
|
|
7
|
+
```md
|
|
8
|
+
frameworks/backend/<language>/<framework>.md
|
|
9
|
+
frameworks/frontend/<framework>.md
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
首期只集成:
|
|
13
|
+
|
|
14
|
+
- `backend/php/thinkphp.md`
|
|
15
|
+
- `frontend/uni-app.md`
|
|
16
|
+
- `frontend/wechat-miniprogram.md`
|
|
17
|
+
|
|
18
|
+
## 执行边界
|
|
19
|
+
|
|
20
|
+
- 框架适配只用于帮助 AI 定位入口、配置、页面 / 路由、请求封装线索。
|
|
21
|
+
- 不做深度扫描。
|
|
22
|
+
- 不默认创建大量框架说明文件。
|
|
23
|
+
- 未识别到对应框架时,不强行套用该框架规则。
|
|
24
|
+
- 多端项目应分别说明每个端口的框架、入口、启动线索和请求链路线索。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# ThinkPHP 轻量识别规则
|
|
2
|
+
|
|
3
|
+
## 识别线索
|
|
4
|
+
|
|
5
|
+
- `composer.json` 中存在 `topthink/framework`
|
|
6
|
+
- 存在 `public/index.php` 或 `think`
|
|
7
|
+
- 存在 `app/`、`config/`、`route/`
|
|
8
|
+
- 存在 `app/*/controller`、`app/*/model`、`app/*/service`
|
|
9
|
+
- 代码中出现 `think\facade`、`think\Request`、`think\Response`
|
|
10
|
+
|
|
11
|
+
## 接手重点
|
|
12
|
+
|
|
13
|
+
1. 应用入口:`public/index.php`、`think`
|
|
14
|
+
2. 路由位置:`route/`、`config/route.php`、注解路由线索
|
|
15
|
+
3. 模块结构:`app/<module>/controller`、`model`、`service`、`validate`、`middleware`
|
|
16
|
+
4. 配置位置:`config/`、`.env`
|
|
17
|
+
5. 公共前置逻辑:`middleware`、控制器基类、公共调用位置
|
|
18
|
+
6. 命令任务:`app/command`、`config/console.php`
|
|
19
|
+
7. 异常处理:`app/ExceptionHandle.php` 或项目自定义异常处理
|
|
20
|
+
8. 返回结构:控制器统一响应方法、JSON 返回规范
|
|
21
|
+
|
|
22
|
+
## 边界
|
|
23
|
+
|
|
24
|
+
- 只做轻量识别,不追完整调用链。
|
|
25
|
+
- 不把 ThinkPHP 规则套到其他 PHP 框架。
|
|
26
|
+
- 不默认生成大量 ThinkPHP 说明文件。
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# uni-app 轻量识别规则
|
|
2
|
+
|
|
3
|
+
## 识别线索
|
|
4
|
+
|
|
5
|
+
- `pages.json`
|
|
6
|
+
- `manifest.json`
|
|
7
|
+
- `App.vue`
|
|
8
|
+
- `main.js` / `main.ts`
|
|
9
|
+
- `pages/`、`components/`、`static/`
|
|
10
|
+
- `package.json` 中出现 `@dcloudio`、`uni-app`、`vite-plugin-uni`
|
|
11
|
+
|
|
12
|
+
## 接手重点
|
|
13
|
+
|
|
14
|
+
1. 应用入口:`main.js` / `main.ts`、`App.vue`
|
|
15
|
+
2. 页面配置:`pages.json`
|
|
16
|
+
3. 平台配置:`manifest.json`
|
|
17
|
+
4. 页面目录:`pages/`
|
|
18
|
+
5. 分包配置:`subPackages`
|
|
19
|
+
6. 组件目录:`components/`
|
|
20
|
+
7. 静态资源:`static/`
|
|
21
|
+
8. 请求封装:常见 `utils/request`、`common/request`、`api/`
|
|
22
|
+
9. 登录态与缓存:`uni.getStorageSync`、`uni.setStorageSync`
|
|
23
|
+
10. 条件编译:`#ifdef`、`#ifndef`
|
|
24
|
+
|
|
25
|
+
## 边界
|
|
26
|
+
|
|
27
|
+
- 只做轻量识别,不默认创建大量框架说明文件。
|
|
28
|
+
- 不把 uni-app 规则套到原生微信小程序。
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 微信小程序轻量识别规则
|
|
2
|
+
|
|
3
|
+
## 识别线索
|
|
4
|
+
|
|
5
|
+
- `app.json`
|
|
6
|
+
- `app.js` / `app.ts`
|
|
7
|
+
- `app.wxss`
|
|
8
|
+
- 页面包含 `.wxml`、`.wxss`、`.js` / `.ts`、`.json`
|
|
9
|
+
- `project.config.json`
|
|
10
|
+
- `sitemap.json`
|
|
11
|
+
|
|
12
|
+
## 接手重点
|
|
13
|
+
|
|
14
|
+
1. 应用入口:`app.js` / `app.ts`
|
|
15
|
+
2. 全局配置:`app.json`
|
|
16
|
+
3. 页面路径:`pages`
|
|
17
|
+
4. 分包配置:`subpackages` / `subPackages`
|
|
18
|
+
5. 页面结构:`.wxml`
|
|
19
|
+
6. 页面样式:`.wxss`
|
|
20
|
+
7. 页面逻辑:`.js` / `.ts`
|
|
21
|
+
8. 组件:`components/`
|
|
22
|
+
9. 请求封装:`wx.request` 或项目封装
|
|
23
|
+
10. 登录流程:`wx.login`、用户信息获取、token 缓存
|
|
24
|
+
|
|
25
|
+
## 边界
|
|
26
|
+
|
|
27
|
+
- 只做轻量识别,不默认创建大量框架说明文件。
|
|
28
|
+
- 不把微信小程序规则套到 uni-app。
|
|
@@ -4,4 +4,7 @@
|
|
|
4
4
|
- 首次不创建大量规则、模板、脚本和业务沉淀目录。
|
|
5
5
|
- 首次不执行语言级语法检查、lint、typecheck、测试或构建命令。
|
|
6
6
|
- 每个端最多读取 3-5 个关键文件。
|
|
7
|
-
- 不确定的信息标注:`推断`、`待确认`、`未在项目中发现`。
|
|
7
|
+
- 不确定的信息标注:`推断`、`待确认`、`未在项目中发现`。
|
|
8
|
+
- 首次初始化必须把“代码修改强制确认规则”写入 `AGENTS.md` 和 `xinyun-ai/rules/core-rules.md`。
|
|
9
|
+
- 用户发送一句话入口后,视为已授权创建或补齐最小 `xinyun-ai/` 与极简 `AGENTS.md`。
|
|
10
|
+
- 初始化授权不包含业务代码、配置、数据库、API、UI 或业务流程修改。
|
|
@@ -12,4 +12,13 @@
|
|
|
12
12
|
6. 不修改业务代码、配置、数据库、依赖、构建脚本、测试逻辑。
|
|
13
13
|
7. 升级完成后按需写入 `xinyun-ai/upgrade-log.md`。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
升级检查时必须重点检查:
|
|
16
|
+
|
|
17
|
+
- `AGENTS.md` 是否包含代码修改强制确认规则。
|
|
18
|
+
- `xinyun-ai/rules/core-rules.md` 是否包含代码修改强制确认规则。
|
|
19
|
+
- `AGENTS.md` 是否明确 `xinyun-ai/` 为当前项目 AI 规则入口。
|
|
20
|
+
- 旧 AI 规则路径不存在时,是否标注为 `当前项目未发现`,并停止引用旧会话内容。
|
|
21
|
+
- 是否需要补充轻量框架适配识别规则。
|
|
22
|
+
- 当前 `xinyun-ai/manifest.json` 的版本是否低于初始化包版本。
|
|
23
|
+
|
|
24
|
+
涉及正式规则、目录结构、索引结构或旧规则合并时,必须先确认。
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
本项目使用 `xinyun-ai/` 管理 AI 协作规则。
|
|
4
4
|
|
|
5
|
+
当前项目 AI 规则以 `xinyun-ai/` 为准。旧 AI 文档、旧 docs、旧提示词、旧规则文件只作为历史线索,不作为执行依据。
|
|
6
|
+
|
|
7
|
+
如果旧规则路径在当前文件系统中不存在,必须标注为 `当前项目未发现`,不得引用历史会话中的旧内容。如旧规则与 `xinyun-ai/` 冲突,以 `xinyun-ai/` 为准。
|
|
8
|
+
|
|
9
|
+
## 代码修改强制确认规则
|
|
10
|
+
|
|
11
|
+
任何代码、配置、数据库、依赖、构建脚本、测试逻辑、API 行为、UI 行为或业务流程修改前,AI 必须先输出修改方案,并等待用户明确确认。
|
|
12
|
+
|
|
13
|
+
用户提出“帮我改”“修复”“处理一下”“优化一下”只代表提出需求,不代表授权执行。
|
|
14
|
+
|
|
15
|
+
未确认前,只允许读取、分析、定位问题、输出方案;禁止 `apply_patch`、重写文件、格式化、自动修复、migration、seed、SQL、配置修改和任何会产生文件变化或业务副作用的命令。
|
|
16
|
+
|
|
17
|
+
只有用户明确回复“确认执行”“可以修改”“按方案改”“同意”等类似内容后,才允许在确认范围内执行。
|
|
18
|
+
|
|
19
|
+
说明:用户发送 `xinyun-ai-init` 一句话入口后,视为已授权 AI 创建或补齐最小 `xinyun-ai/` 与本入口文件;该授权不包含业务代码、配置、数据库、API、UI 或业务流程修改。
|
|
20
|
+
|
|
5
21
|
AI 接手本项目时,请先读取:
|
|
6
22
|
|
|
7
23
|
- `xinyun-ai/README.md`
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
- 首次初始化为极速模式,后续能力按需补齐。
|
|
8
8
|
- 后续 AI 会话优先读取 `manifest.json`、`current-task.md`、`rules/core-rules.md`、`index/project-index.json`。
|
|
9
9
|
- 业务代码、配置、数据库、API、UI、业务流程修改前必须先出计划并等待确认。
|
|
10
|
+
- 用户提出“帮我改”“修复”“处理一下”“优化一下”只代表提出需求,不代表授权执行。
|
|
11
|
+
- 当前项目 AI 规则以 `xinyun-ai/` 为准,旧 AI 规则只作为历史线索。
|
|
12
|
+
- 检索时先按端和当前任务收敛范围,不做无关全量扫描。
|
|
10
13
|
- 后续识别到新端、模块或能力时,只在 `xinyun-ai/` 内按需补齐对应目录和说明文件。
|
|
11
14
|
|
|
12
15
|
## 核心流程
|
|
@@ -1,17 +1,50 @@
|
|
|
1
|
-
|
|
1
|
+
# xinyun-ai 核心规则
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 统一入口
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
5
|
+
- 当前项目 AI 规则以 `xinyun-ai/` 为准。
|
|
6
|
+
- `AGENTS.md` 只作为入口文件,指向 `xinyun-ai/`。
|
|
7
|
+
- 旧 AI 文档、旧 docs、旧提示词、旧规则文件只作为历史线索,不作为执行依据。
|
|
8
|
+
- 如果旧规则路径在当前文件系统中不存在,必须标注为 `当前项目未发现`,不得引用历史会话中的旧内容。
|
|
9
|
+
- 如旧规则与 `xinyun-ai/` 冲突,以 `xinyun-ai/` 为准。
|
|
10
|
+
|
|
11
|
+
## 初始化授权边界
|
|
12
|
+
|
|
13
|
+
- 用户发送 `xinyun-ai-init` 一句话入口后,视为已授权 AI 创建或补齐最小 `xinyun-ai/` 与极简 `AGENTS.md`。
|
|
14
|
+
- 该授权不包含业务代码、配置、数据库、依赖、构建脚本、测试逻辑、API 行为、UI 行为或业务流程修改。
|
|
15
|
+
|
|
16
|
+
## 代码修改确认
|
|
17
|
+
|
|
18
|
+
- 代码整改前必须先给修改方案,待用户明确确认后才能执行。
|
|
19
|
+
- 用户提出“帮我改”“修复”“处理一下”“优化一下”只代表提出需求,不代表授权执行。
|
|
20
|
+
- 未确认前,只允许读取、分析、定位问题、输出方案;禁止 `apply_patch`、重写文件、格式化、自动修复、migration、seed、SQL、配置修改和任何会产生文件变化或业务副作用的命令。
|
|
21
|
+
- 确认后只改确认范围内的文件,不顺手重构、不顺手格式化无关文件。
|
|
22
|
+
|
|
23
|
+
修改方案至少包含:
|
|
24
|
+
|
|
25
|
+
1. 修改目标
|
|
26
|
+
2. 影响范围
|
|
27
|
+
3. 预计修改文件
|
|
28
|
+
4. 是否影响数据库 / API / UI / 配置
|
|
29
|
+
5. SQL 改动与执行提醒
|
|
30
|
+
6. 验证方式
|
|
31
|
+
7. 风险点
|
|
32
|
+
|
|
33
|
+
## 检索与回复
|
|
34
|
+
|
|
35
|
+
- 先读 `AGENTS.md`、`xinyun-ai/manifest.json`、`xinyun-ai/index/project-index.json`、`xinyun-ai/current-task.md`。
|
|
36
|
+
- 有 CodeGraph 时,结构性问题优先使用 CodeGraph。
|
|
37
|
+
- 先判断影响端,再读取对应 `workstreams/<端>/` 和相关文件。
|
|
38
|
+
- 输出中区分 `已确认`、`推断`、`待确认`、`未在项目中发现`。
|
|
39
|
+
- 回复先给结论,再给依据路径,再给待确认问题。
|
|
40
|
+
- 不沿用用户已经纠正或否定的旧方向。
|
|
41
|
+
|
|
42
|
+
## 框架适配
|
|
43
|
+
|
|
44
|
+
- 框架适配规则位于 `xinyun-ai-init/rules/frameworks/`。
|
|
45
|
+
- 首期只支持 ThinkPHP、uni-app、微信小程序的轻量识别。
|
|
46
|
+
- 框架适配只帮助定位入口、配置、页面 / 路由、请求封装线索,不做深度扫描。
|
|
47
|
+
- 未识别到对应框架时,不强行套用该框架规则。
|
|
15
48
|
|
|
16
49
|
## 理解深度状态
|
|
17
50
|
|
|
@@ -27,4 +60,4 @@
|
|
|
27
60
|
|
|
28
61
|
## 自我学习
|
|
29
62
|
|
|
30
|
-
发现可复用经验时,先记录为候选经验。候选经验必须标注来源、适用范围、可信度、状态和最后验证时间。用户确认后,才能合并进正式规则。
|
|
63
|
+
发现可复用经验时,先记录为候选经验。候选经验必须标注来源、适用范围、可信度、状态和最后验证时间。用户确认后,才能合并进正式规则。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"projectName": "",
|
|
3
|
-
"xinyunAiVersion": "1.
|
|
4
|
-
"scriptVersion": "2026.07.
|
|
3
|
+
"xinyunAiVersion": "1.1.1",
|
|
4
|
+
"scriptVersion": "2026.07.14",
|
|
5
5
|
"schemaVersion": "1",
|
|
6
6
|
"initializationMode": "fast",
|
|
7
7
|
"expansionMode": "triggered",
|
|
@@ -13,5 +13,11 @@
|
|
|
13
13
|
"api": "unknown"
|
|
14
14
|
},
|
|
15
15
|
"codegraph": { "enabled": false, "status": "unknown" },
|
|
16
|
-
"index": { "primary": "json_markdown", "sqlite": "optional" }
|
|
17
|
-
|
|
16
|
+
"index": { "primary": "json_markdown", "sqlite": "optional" },
|
|
17
|
+
"capabilities": {
|
|
18
|
+
"confirmationGate": true,
|
|
19
|
+
"legacyRuleHandoff": true,
|
|
20
|
+
"lightFrameworkDetection": true,
|
|
21
|
+
"focusedSearchResponse": true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "xinyun-ai-init",
|
|
3
3
|
"displayName": "欣芸技术开发 Agent 流初始化包",
|
|
4
|
-
"version": "1.
|
|
5
|
-
"scriptVersion": "2026.07.
|
|
4
|
+
"version": "1.1.1",
|
|
5
|
+
"scriptVersion": "2026.07.14",
|
|
6
6
|
"schemaVersion": "1",
|
|
7
7
|
"defaultMode": "fast-init",
|
|
8
8
|
"targetWorkspace": "xinyun-ai",
|