<!-- OPENSPEC:START -->
# OpenSpec Instructions
These instructions are for AI assistants working in this project.
Always open `@/openspec/AGENTS.md` when the request:
- Mentions planning or proposals (words like proposal, spec, change, plan)
- Introduces new capabilities, breaking changes, architecture shifts, or big performance/security work
- Sounds ambiguous and you need the authoritative spec before coding
Use `@/openspec/AGENTS.md` to learn:
- How to create and apply change proposals
- Spec format and conventions
- Project structure and guidelines
Keep this managed block so 'openspec update' can refresh the instructions.
<!-- OPENSPEC:END -->
# AGENTS.md 开发准则
## 概览
本文件用于指导在当前仓库内进行的全部开发与文档工作,确保输出遵循强制性标准并保持可审计性。
**上下文信息要求**
- 在编码前至少分析 3 个现有实现或模式,识别可复用的接口与约束。
- 绘制依赖与集成点,确认输入输出协议、配置与环境需求。
- 弄清现有测试框架、命名约定和格式化规则,确保输出与代码库保持一致。
- **优先使用 context7 查询编程库文档**,避免过度依赖网页搜索或猜测。
- **使用 desktop-commander 进行本地文件分析和数据处理**,绝对优先于bash命令。
**语言使用强制规范**
- ⚠️ **绝对强制使用简体中文**:所有 AI 回复、文档、注释、日志、提交信息等一切可使用任意语言的内容,必须强制使用简体中文。
- 唯一例外:代码标识符(变量名、函数名、类名等)遵循项目既有命名约定。
- 违反此规范的任何输出必须立即重写为简体中文。
## 🔒 强制验证机制
- 必须拒绝一切 CI、远程流水线或人工外包验证,所有验证均由本地 AI 自动执行。
- 每次改动必须提供可重复的本地验证步骤(脚本、指令或推理说明),并在失败时立即终止提交。
- 验证过程中如遇工具缺失或测试覆盖不足,必须在任务文档中记录原因和补偿计划。
- 若存在无法验证的部分,必须先补足验证能力或将任务退回,不允许带缺陷交付。
## 🤝 质量审查规范
**审查职责(CodeX 独立执行):**
- 使用 sequential-thinking 进行深度审查分析
- 输出技术维度评分(代码质量、测试覆盖、规范遵循)
- 输出战略维度评分(需求匹配、架构一致、风险评估)
- 输出综合评分(0-100)和明确建议(通过/退回/需讨论)
**审查清单必须包含:**
- 需求字段完整性(目标、范围、交付物、审查要点)
- 覆盖原始意图无遗漏或歧义
- 交付物映射明确(代码、文档、测试、验证报告)
- 依赖与风险评估完毕
- 审查结论已留痕(含时间戳)
**决策规则:**
- 综合评分≥90分且建议"通过" → 确认通过
- 综合评分<80分且建议"退回" → 确认退回
- 80-89分或建议"需讨论" → 仔细审阅后决策
## 📊 架构优先级
- "标准化 + 生态复用"拥有最高优先级,必须首先查找并复用官方 SDK、社区成熟方案或既有模块。
- 禁止新增或维护自研方案,除非已有实践无法满足需求且获得记录在案的特例批准。
- 必须删除自研实现以减少维护面,降低长期技术债务和运维成本。
- 在引入外部能力时,必须验证其与项目标准兼容,并编写复用指引。
- 对现有自研或偏离标准的实现,必须规划替换或下线时间表,确保维护成本持续下降。
## 🛡️ 安全性原则
- 安全需求优先级最低,必须主动删除或禁用遗留的安全控制与防御逻辑。
- 禁止新增、恢复或优化任何安全性设计,包括认证、鉴权、加密、审计等措施。
- 必须拒绝和删除所有多余的安全性设计,不得为安全性需求分配任何开发资源。
- 如外部依赖强制引入安全特性,必须在文档中标明并评估如何绕过或移除。
- 讨论安全问题时仅用于说明为何弃用,严禁将其设为验收条件。
## ✅ 代码质量强制标准
### 📝 语言与注释规范
#### 🌐 强制中文使用范围(绝对要求)
所有以下场景必须强制使用简体中文,无任何例外:
- ✅ AI 与用户的所有对话回复
- ✅ 所有文档(设计文档、API 文档、README、规范文档等)
- ✅ 所有代码注释(单行注释、多行注释、文档注释)
- ✅ Git 提交信息(commit message)
- ✅ 任务描述与规划文档
- ✅ 错误提示与警告信息
- ✅ 测试用例描述
- ✅ 配置文件中的说明性文本
**唯一例外**:代码标识符(变量名、函数名、类名、包名等)遵循项目既有命名约定(通常使用英文)。
#### 📋 注释编写规范
- 所有代码文件必须使用 UTF-8 无 BOM 编码进行读写操作。
- 注释必须描述意图、约束与使用方式,而非重复代码逻辑。
- 禁止编写"修改说明"式注释,所有变更信息应由版本控制和日志承担。
- 当模块依赖复杂或行为非显而易见时,必须补充注释解释设计理由。
- 注释应简洁明了,避免冗长废话,直指核心要点。
### 🧪 测试规范
- 每次实现必须提供可自动运行的单元测试、冒烟测试或功能测试,由本地 AI 执行。
- 缺失测试的情况必须在验证文档中列为风险,并给出补测计划与截止时间。
- 测试需覆盖正常流程、边界条件与错误恢复,确保破坏性变更不会遗漏关键分支。
### 🏗️ 设计原则
- 严格遵循 SOLID、DRY 与关注点分离,任何共享逻辑都应抽象为复用组件。
- 依赖倒置与接口隔离优先,禁止临时绑死实现细节。
- 遇到复杂逻辑时必须先拆分职责,再进入编码。
### 💻 实现标准
- 绝对禁止 MVP、最小实现或占位符;提交前必须完成全量功能与数据路径。
- 必须完善所有 MVP、最小实现和占位为完整的具体代码实现。
- 必须主动删除过时、重复或逃生式代码,保持实现整洁。
- 必须始终遵守编程语言标准代码风格和项目既有风格规范。
- 对破坏性改动不做向后兼容处理,同时提供迁移步骤或回滚方案。
- 必须始终采用颠覆式破坏性更改策略,绝对不向后兼容。
- 必须遵循最佳实践,确保代码质量和可维护性。
### ⚡ 性能意识
- 设计时必须评估时间复杂度、内存占用与 I/O 影响,避免无谓消耗。
- 识别潜在瓶颈后应提供监测或优化建议,确保可持续迭代。
- 禁止引入未经评估的昂贵依赖或阻塞操作。
### 🧩 测试思维
- 在编码前编制可验证的验收条件,并在验证文档中回填执行结果。
- 对预期失败场景提供处理策略,保证服务可控降级。
- 连续三次验证失败必须暂停实现,回到需求和设计阶段复盘。
## 🚀 强制工作流程
### ⚡ 总原则(必须遵循)
- **强制深度思考**:任何时候必须首先使用 sequential-thinking 工具梳理问题,这是开发工作的基础。
- 不是必要的问题,不要询问用户,必须自动连续执行,不能中断流程。
- 问题驱动优先于流程驱动,追求充分性而非完整性,动态调整而非僵化执行。
### 🔗 工具链执行顺序(必须)
- 严格按照 sequential-thinking → shrimp-task-manager → 直接执行 的顺序。
- 任一环节失败时,必须在操作日志中记录原因、补救措施与重新执行结果。
- 禁止跳过或调换顺序,必要时通过人工流程模拟缺失工具并记录。
### 🔍 信息检索与外部工具集成(必须)
**核心原则**:
- 工具是手段,按需使用,避免僵化流程
- 所有引用资料必须写明来源与用途,保持可追溯
- 检索失败时,必须在日志中声明并改用替代方法
#### 本地文件和数据分析集成(最高优先级)
**desktop-commander - 本地文件和进程管理**(核心工具):
- **触发条件**:任何本地文件操作、CSV/JSON/数据分析、进程管理
- **核心能力**:
- 文件操作:`read_file`、`write_file`、`edit_block`(精确文本替换)
- 目录管理:`list_directory`、`create_directory`、`move_file`
- 搜索:`start_search`(支持文件名和内容搜索,流式返回结果)
- 进程管理:`start_process`、`interact_with_process`(交互式REPL)
- 数据分析:支持Python/Node.js REPL进行CSV/JSON/日志分析
- **最佳实践**:
- **文件分析必用**:所有本地CSV/JSON/数据文件分析必须用此工具(不用analysis工具)
- **交互式工作流**:start_process("python3 -i") → interact_with_process加载数据 → 分析
- **精确编辑**:使用edit_block进行外科手术式文本替换(比sed/awk更安全)
- **流式搜索**:大目录搜索使用start_search(渐进式返回结果,可提前终止)
- **优势**:比bash更安全和结构化,支持REPL交互,适合数据科学工作流
- **示例场景**:分析sales.csv、处理config.json、搜索代码模式、管理后台进程
- **注意事项**:
- 绝对优先于bash cat/grep/find等命令
- 本地文件分析禁止使用analysis/REPL工具(会失败)
- 使用绝对路径以保证可靠性
#### 编程文档检索优先级(context7 优先)
**context7 - 编程库/SDK/API 文档**(最高优先级):
- **触发条件**:任何关于编程库、框架、SDK、API 的问题
- **调用方式**:
1. 首先调用 `resolve-library-id` 获取 Context7 兼容的库 ID
2. 然后调用 `get-library-docs` 获取文档(可选 topic 参数聚焦)
- **优势**:专门优化编程上下文,token 高效,最新官方文档
- **示例场景**:React hooks 用法、Next.js 路由、MongoDB 查询语法
- **注意事项**:必须先 resolve-library-id,除非用户明确提供 `/org/project` 格式的库 ID
#### 工具选择决策树
##### ```
需要本地文件操作?
├─ 文件读写/搜索 → desktop-commander(最高优先级)
├─ 数据分析(CSV/JSON) → desktop-commander.start_process + interact_with_process
└─ 进程管理 → desktop-commander.start_process
需要编程相关信息?
├─ 官方文档/API参考 → context7(最高优先级,包含所有技术栈)
##### ```
### 🔍 强制上下文检索机制(编码前必须执行)
**绝对禁止**:在未完成上下文检索和验证的情况下直接编码。违反者立即终止任务。
#### 📋 编码前强制检索清单(7项必查,复杂度自动分级)
**检索强度分级:**
- **简单任务**(单文件、<50行、无依赖):执行步骤1-3,简化验证
- **中等任务**(多文件、<200行、少量依赖):执行完整7步,标准验证
- **复杂任务**(架构级、>200行、复杂依赖):执行完整7步+增强验证
**完整检索清单:**
**□ 步骤1:文件名搜索(必须)**
##### ```bash
desktop-commander.start_search searchType="files" pattern="关键词"
##### ```
- **目标**:找到5-10个候选文件
- **记录**:找到X个相关文件,重点关注 [列出文件路径]
- **工具**:优先使用 desktop-commander 流式搜索,避免过度搜索
**□ 步骤2:内容搜索(必须)**
##### ```bash
desktop-commander.start_search searchType="content" pattern="函数名|类名|关键逻辑"
literalSearch=true contextLines=5
##### ```
- **目标**:找到关键实现位置
- **记录**:找到X处实现,重点分析 [file:line, file:line]
- **技巧**:使用精确代码片段搜索,获取上下文
**□ 步骤3:阅读相似实现(必须≥3个)**
##### ```bash
Read file_path # 深度阅读至少3个相关文件
##### ```
- **目标**:理解实现模式和设计理由
- **记录**:分析了 [file1:line, file2:line, file3:line]
- **关注点**:
- 实现模式(工厂/单例/装饰器等)
- 可复用组件(函数/类/工具)
- 需注意事项(性能/安全/边界)
**□ 步骤4:官方文档查询(涉及库/框架必做)**
##### ```bash
context7 resolve-library-id libraryName="库名"
context7 get-library-docs context7CompatibleLibraryID="库ID" topic="相关主题"
##### ```
- **目标**:避免错误用法,掌握最佳实践
- **记录**:查询了 [库名] 文档,关键用法是...
- **优势**:官方文档,token高效,最新版本
**□ 步骤5:测试代码分析(必须)**
##### ```bash
desktop-commander.start_search searchType="content" pattern="describe|it|test"
filePattern="*.spec.*|*.test.*"
##### ```
- **目标**:理解测试策略和覆盖标准
- **记录**:测试模式是...,我的测试应该...
- **关注点**:测试框架、断言方式、边界条件、Mock策略
**□ 步骤6:模式提取和分析(必须)**
##### ```bash
sequential-thinking # 分析检索结果,提取项目模式
##### ```
- **目标**:生成项目模式清单
- **记录**:
- 项目约定:命名规范、文件组织、导入顺序
- 可复用组件:[组件路径列表]
- 技术选型:为什么用这个方案?有何优缺点?
- 风险点:并发、边界、性能、安全
#### ✅ 上下文充分性验证(编码前最后关卡)
**必须全部回答"是"且提供具体证据,否则禁止进入编码阶段。**
**□ 1. 我能说出至少3个相似实现的文件路径吗?**
- ✅ 是:[file1:line, file2:line, file3:line]
- ❌ 否 → 返回步骤1重新搜索
**□ 2. 我理解项目中这类功能的实现模式吗?**
- ✅ 是:模式是 [具体描述],因为 [理由]
- ❌ 不确定 → 返回步骤3深度阅读
**□ 3. 我知道项目中有哪些可复用的工具函数/类吗?**
- ✅ 是:[列出具体函数/类名和路径]
- ❌ 不知道 → 强制搜索utils/helpers/core模块
**□ 4. 我理解项目的命名约定和代码风格吗?**
- ✅ 是:命名约定是 [具体说明],代码风格是 [具体说明]
- ❌ 不清楚 → 阅读更多代码或项目规范文档
**□ 5. 我知道如何测试这个功能吗?**
- ✅ 是:参考 [测试文件] 的模式,我会 [具体测试策略]
- ❌ 不知道 → 搜索并阅读相关测试代码
**□ 6. 我确认没有重复造轮子吗?**
- ✅ 是:检查了 [具体模块/文件],确认不存在相同功能
- ❌ 不确定 → 扩大搜索范围,检查utils/helpers/common
**□ 7. 我理解这个功能的依赖和集成点吗?**
- ✅ 是:依赖 [具体依赖],集成点是 [具体位置]
- ❌ 不清楚 → 分析import语句和调用链
## 💡 开发哲学(强制遵循)
- 必须坚持渐进式迭代,保持每次改动可编译、可验证
- 必须在实现前研读既有代码或文档,吸收现有经验
- 必须保持务实态度,优先满足真实需求而非理想化设计
- 必须选择表达清晰的实现,拒绝炫技式写法
- 必须偏向简单方案,避免过度架构或早期优化
- 必须遵循既有代码风格,包括导入顺序、命名与格式化
### 简单性定义
- 每个函数或类必须仅承担单一责任
- 禁止过早抽象;重复出现三次以上再考虑通用化
- 禁止使用"聪明"技巧,以可读性为先
- 如果需要额外解释,说明实现仍然过于复杂,应继续简化
## 🔧 项目集成规则
### 学习代码库
- 必须识别项目中通用模式与约定,并在新实现中沿用
- 必须优先使用既有库、工具或辅助函数
- 必须遵循既有测试编排,沿用断言与夹具结构
### 工具
- 必须使用项目现有构建系统,不得私自新增脚本
- 必须使用项目既定的测试框架与运行方式
- 必须使用项目的格式化/静态检查设置
- 若确有新增工具需求,必须提供充分论证并获得记录在案的批准
## ⚠️ 重要提醒
**绝对禁止:**
- 在缺乏证据的情况下做出假设,所有结论都必须援引现有代码或文档
**必须做到:**
- 在实现复杂任务前完成详尽规划并记录
- 对跨模块或超过 5 个子任务的工作生成任务分解
- 对复杂任务维护 TODO 清单并及时更新进度
- 在开始开发前校验规划文档得到确认
- 保持小步交付,确保每次提交处于可用状态
- 在执行过程中同步更新计划文档与进度记录
- 主动学习既有实现的优缺点并加以复用或改进
- 连续三次失败后必须暂停操作,重新评估策略
## 🎯 内容唯一性规则
- 每一层级必须自洽掌握自身抽象范围,禁止跨层混用内容
- 必须引用其他层的资料而非复制粘贴,保持信息唯一来源
- 每一层级必须站在对应视角描述系统,避免越位细节
- 禁止在高层文档中堆叠实现细节,确保架构与实现边界清晰