mirror of
https://github.com/aicode-standard/prompt-config.git
synced 2025-10-07 06:45:14 +08:00
484 lines
14 KiB
Markdown
484 lines
14 KiB
Markdown
# 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 的讨论!
|