1
0
mirror of https://github.com/aicode-standard/prompt-config.git synced 2025-10-07 06:45:14 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee
Files
prompt-config/README.zh-CN.md
小墨 8792532b09 Refine proposal document: add path-specific rules and examples for monorepo support
完善提案文档,增加对单体仓库支持的路径特定规则和示例
2025-09-29 17:38:43 +00:00

484 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI 代码编辑器提示词配置文件标准化提案
[English](./README.md) | 简体中文
## 提案概述
为 AI 代码编辑器创建一个统一的提示词配置文件标准,解决当前各编辑器使用不同路径和格式导致的配置碎片化问题。
## 当前问题
1. **路径不统一**
- Cursor: `.cursor/rules.md`
- Trae: `.trae/rules/project_rules.md`
- Codeium: `.codeium/context.md`
- 其他编辑器各有自己的约定
2. **配置同步困难**:团队成员使用不同编辑器时需要维护多份相同内容
3. **版本控制冲突**:不同编辑器的配置文件需要分别添加到 `.gitignore`
4. **迁移成本高**:切换编辑器时需要重新配置提示词
5. **单体仓库挑战**:单体仓库中的不同项目需要不同的提示词配置
## 提案标准
### 核心标准路径
```
.prompt/
├─ rules/
│ ├─ project[/[<自定义文件名>]][.<编辑器标识>].md # 项目级提示词(主要文件)
│ ├─ context[/[<自定义文件名>]][.<编辑器标识>].md # 上下文规则(可选)
│ └─ code_style[/[<自定义文件名>]][.<编辑器标识>].md # 代码风格规范(可选)
├─ config.json # 配置文件
└─ README.md # 说明文档(可选)
```
其中,`[.<编辑器标识>]` 是编辑器特定配置。不添加则是全局使用的公共提示词文件。
### 单体仓库支持与路径特定规则
对于单体仓库项目,使用 `.prompt-config.yaml` 中的 glob 模式配置路径特定规则:
```yaml
version: 1.0
prompt:
rules:
- scope: "packages/frontend/**" # 前端包
files:
- .prompt/frontend-rules.md
- docs/frontend/ai-context.md
- scope: "packages/backend/**" # 后端包
files:
- .prompt/backend-rules.md
- "!docs/frontend/**" # 排除前端文档
- scope: "**/legacy/**" # 任何遗留目录
files:
- .prompt/legacy-overrides.md
default: # 未匹配路径的默认规则
files:
- .prompt/general.md
- docs/ai-guidelines.md
```
#### 规则评估
1. **特异性**:精确路径 > 通配符模式 > 默认规则
2. **排除**:否定模式(`!路径`)排除文件
3. **就近原则**:嵌套配置中最接近的 `.promptconfig.yaml` 生效
4. **合并**:数组会合并,对象会深度合并
### 配置示例
**基础配置:**
如果我们想配置项目级提示词,我们可以这样做:
```
.prompt/
└─ rules/
├─ project.md # 项目级提示词(主要文件)
├─ project.vscode.md # 在 VSCode 编辑器中扩展 `project.md` 文件(可选)
├─ project.cursor.md # 在 Cursor 编辑器中扩展 `project.md` 文件(可选)
└─ project.trae.md # 在 TRAE 编辑器中扩展 `project.md` 文件(可选)
```
**高级配置(多文件结构):**
当提示词内容较多,需要拆分成多个文件时,可以创建对应目录,将提示词按照自定义目录结构进行分类。同样的,也以 `[.<编辑器标识>].md` 结尾。所有的文件都是可选的。
```
.prompt/
└─ rules/
├─ project/
│ ├─ [foo].vscode.md
│ ├─ [foo].cursor.md
│ ├─ [foo].trae.md
│ └─ index.md
├─ project.md
├─ project.vscode.md
├─ project.cursor.md
└─ project.trae.md
```
在这个示例中,`.prompt/rules/project/index.md``.prompt/rules/project.md` 作用相同,同时存在时,他们都将生效。
对于 VSCode 编辑器,在这个示例中,会加载以下 markdown 文件作为提示词:
- `.prompt/rules/project/[foo].vscode.md`
- `.prompt/rules/project/index.md`
- `.prompt/rules/project.md`
- `.prompt/rules/project.vscode.md`
### 文件加载规则
1. **全局文件**`.prompt/rules/project.md`(所有编辑器共享)
2. **编辑器特定文件**`.prompt/rules/project.{editor}.md`(按编辑器加载)
3. **目录结构**:支持子目录组织,`index.md` 作为目录入口文件
4. **合并策略**:所有匹配的文件内容会被合并,编辑器特定配置会扩展全局配置
5. **路径特定规则**:对于单体仓库,使用 glob 模式为不同路径应用不同的提示词
## 配置文件格式 (`.prompt/config.json`)
```json
{
"promptFileVersion": "1.0",
"response_language": "zh-CN", // 指定模型返回的语言
"defaultMergeStrategy": "append", // 默认合并策略append|overwrite|smart
"fileLoadingOrder": ["global", "editor-specific"], // 文件加载顺序
"supportedEditors": ["vscode", "cursor", "trae", "codeium"],
"editorSpecific": {
"vscode": {
"promptPriority": ["project.md", "project.vscode.md"],
"maxTokenLimit": 4000
},
"cursor": {
"promptPriority": ["project.md", "project.cursor.md"],
"maxTokenLimit": 8000
},
"trae": {
"promptPriority": ["project.md", "project.trae.md"],
"maxTokenLimit": 6000
},
"[editor_name]": {
...
}
}
}
```
## 实施路径
### 阶段一:兼容层(立即可行)
创建转换工具和符号链接脚本:
```bash
# migrate-prompts.sh
#!/bin/bash
# 创建标准目录结构
mkdir -p .prompt/rules
# 迁移现有配置并创建符号链接
migrate_editor_config() {
local editor=$1
local source_path=$2
local target_name=$3
if [ -f "$source_path" ]; then
# 迁移到新位置
cp "$source_path" ".prompt/rules/${target_name}.${editor}.md"
# 创建符号链接保持向后兼容
ln -sf "../.prompt/rules/${target_name}.${editor}.md" "$source_path"
echo "Migrated ${editor} configuration"
fi
}
# 迁移各编辑器配置
migrate_editor_config "cursor" ".cursor/rules.md" "project"
migrate_editor_config "trae" ".trae/rules/project_rules.md" "project"
migrate_editor_config "codeium" ".codeium/context.md" "context"
# 创建基础配置文件
if [ ! -f ".prompt/config.json" ]; then
cat > ".prompt/config.json" << EOF
{
"promptFileVersion": "1.0",
"response_language": "",
"defaultMergeStrategy": "append",
"supportedEditors": ["vscode", "cursor", "trae", "codeium"]
}
EOF
fi
```
### 阶段二:编辑器适配
鼓励编辑器厂商原生支持标准路径:
```json
// 编辑器配置示例 (VSCode settings.json)
{
"aiPrompts.standardPath": ".prompt/rules",
"aiPrompts.loadOrder": [
"project.md",
"project.vscode.md",
"context.md",
"context.vscode.md"
],
"aiPrompts.mergeStrategy": "smart",
"aiPrompts.scopeAware": true, // 启用单体仓库路径感知加载
"aiPrompts.debug": false // 显示已加载提示词的调试信息
}
```
### 编辑器实现示例
```javascript
// 范围匹配的伪代码
function getApplicablePrompts(filePath, config) {
const rules = config.rules.filter(rule =>
micromatch.isMatch(filePath, rule.scope)
);
// 按特异性排序(更具体的模式优先)
rules.sort((a, b) => compareSpecificity(a.scope, b.scope));
return rules.flatMap(rule => rule.files);
}
```
### 阶段三:生态系统建设
1. **开发核心工具**
- 配置验证工具:`prompt-validator`
- 文件合并工具:`prompt-merger`
- 迁移辅助工具:`prompt-migrate`
- 范围调试工具:`prompt-debug`(显示哪些提示词应用于哪些路径)
2. **编辑器插件**
- VSCode 扩展:`vscode-prompt-config-integration`
- Cursor 插件:`cursor-prompt-config-integration`
3. **模板库**
- 常见项目类型的配置模板
- 各语言的最佳实践示例
- 单体仓库配置示例
## 配置文件详细规范
### 项目提示词模板 (`.prompt/rules/project.md`)
```markdown
# 项目提示词
## 项目概述
{{项目描述}}
## 编码规范
- 语言: {{编程语言}}
- 代码风格: {{代码风格指南}}
- 命名约定: {{命名规则}}
## 架构约束
- 设计模式: {{使用的模式}}
- 分层架构: {{架构层次}}
- 依赖管理: {{依赖规范}}
## 业务规则
{{具体业务逻辑和要求}}
```
### 编辑器特定扩展示例 (`.prompt/rules/project.vscode.md`)
```markdown
# VSCode 特定配置
## 编辑器集成
- 优先使用 VSCode 扩展: {{扩展列表}}
- 调试配置: {{调试设置}}
- 代码片段: {{自定义片段}}
## 性能优化
- 大文件处理策略: {{处理方式}}
- 内存管理: {{优化建议}}
```
### 完整 config.json 规范
```json
{
"promptFileVersion": "string", // 配置版本号
"responseLanguage": "string", // 默认响应语言
"defaultMergeStrategy": "string", // 默认合并策略
"fileLoadingOrder": ["string"], // 文件加载顺序
"maxFileSizeKB": number, // 最大文件大小限制
"encoding": "string", // 文件编码格式
"validationRules": { // 验证规则
"maxLength": number,
"allowedSections": ["string"],
"requiredSections": ["string"]
},
"editorSpecific": {
"[editor_name]": {
"promptPriority": ["string"], // 提示词优先级
"maxTokenLimit": number, // 最大 token 限制
"temperature": number, // 温度参数
"modelPreferences": ["string"] // 模型偏好
}
},
"extensions": { // 扩展配置
"customSections": ["string"], // 自定义章节
"templateVariables": { // 模板变量
"key": "value"
}
}
}
```
## 迁移指南
### 从现有系统迁移
1. **自动迁移**
```bash
# 使用迁移工具
npx @prompt-standard/migrate --editor cursor --editor trae
# 或使用交互式迁移
npx @prompt-standard/migrate-interactive
```
2. **手动迁移**
```bash
# 1. 创建标准目录
mkdir -p .prompt/rules
# 2. 迁移并重命名现有配置
mv .cursor/rules.md .prompt/rules/project.cursor.md
mv .trae/rules/project_rules.md .prompt/rules/project.trae.md
# 3. 创建符号链接(可选,保持兼容)
ln -s ../.prompt/rules/project.cursor.md .cursor/rules.md
ln -s ../.prompt/rules/project.trae.md .trae/rules/project_rules.md
```
3. **验证配置**
```bash
# 安装验证工具
npm install -g @prompt-standard/validator
# 验证配置完整性
prompt-validate
```
### 验证工具功能
```bash
# 检查配置完整性
prompt-validate --check-completeness
# 验证语法正确性
prompt-validate --check-syntax
# 生成配置报告
prompt-validate --generate-report
# 检查编辑器兼容性
prompt-validate --check-editor vscode cursor
# 调试路径匹配(用于单体仓库)
prompt-debug --path packages/frontend/src/index.js
```
## 收益分析
### 对开发者
- ✅ **一致性**:跨编辑器统一体验,减少上下文切换
- ✅ **可维护性**:集中管理,单一事实来源
- ✅ **灵活性**:支持全局配置和编辑器特定扩展
- ✅ **协作性**:团队配置标准化,易于共享
- ✅ **单体仓库支持**:为单体仓库中的不同项目提供路径特定规则
### 对编辑器厂商
- ✅ **互操作性**:降低用户迁移成本,提高用户粘性
- ✅ **生态系统**:促进工具链集成和插件开发
- ✅ **标准遵从**:体现专业性和前瞻性,增强竞争力
- ✅ **扩展性**:支持自定义配置和高级功能
## 行动计划
### 立即行动1-2周
- [ ] 创建核心工具库:`@prompt-standard/core`
- [ ] 开发配置验证工具:`@prompt-standard/validator`
- [ ] 编写详细文档和示例
- [ ] 建立社区讨论组Discord/GitHub Discussions
- [ ] 为核心库添加单体仓库路径匹配支持
### 短期目标1-3月
- [ ] 争取 2-3 个主流编辑器支持
- [ ] 创建流行项目的配置模板
- [ ] 开发 IDE 插件原型
- [ ] 建立自动化测试流程
- [ ] 添加单体仓库示例和最佳实践
### 长期愿景6-12月
- [ ] 成为事实标准,被多个编辑器原生支持
- [ ] 建立认证程序和兼容性测试
- [ ] 扩展支持更多 AI 开发工具
- [ ] 开发图形化配置管理工具
- [ ] 具有继承和覆盖规则的高级单体仓库支持
## 技术支持
### 开发工具
```bash
# 核心库安装
npm install @prompt-standard/core
# 验证工具安装
npm install -g @prompt-standard/validator
# 迁移工具安装
npm install -g @prompt-standard/migrate
# 调试工具安装
npm install -g @prompt-standard/debug
```
### API 示例
```javascript
// 使用核心库
import { PromptLoader, PromptValidator } from '@prompt-standard/core'
const loader = new PromptLoader('.prompt/rules')
const prompts = await loader.loadForEditor('vscode')
const validator = new PromptValidator()
const results = await validator.validate(prompts)
// 用于单体仓库路径感知加载
const pathSpecificPrompts = await loader.loadForPath('packages/frontend/src/index.js', 'vscode')
```
## 呼吁参与
我们邀请以下各方参与:
### 对于编辑器开发者
- 实现原生标准支持
- 提供反馈和改进建议
- 参与标准规范的制定
- 添加单体仓库路径感知提示词加载功能
### 对于开源项目
- 率先采用标准配置
- 贡献项目配置模板
- 分享使用经验和最佳实践
- 提供单体仓库用例
### 对于社区成员
- 测试和报告问题
- 参与文档编写和翻译
- 开发辅助工具和插件
- 贡献单体仓库支持功能
### 对于企业用户
- 提供实际业务需求
- 分享企业级应用场景
- 参与标准推广和实施
- 贡献大规模单体仓库需求
**参与方式**
- 📝 提交 Issue 和 Feature Request
- 🔄 提交 Pull Request
- 💬 加入社区讨论
- 🚀 分享你的配置案例
- 🏗️ 贡献单体仓库解决方案
**GitHub 仓库**: https://github.com/aicode-standard/prompt-config
加入 https://github.com/aicode-standard/prompt-config/issues 的讨论!