# Agent 开发规则 本仓库采用 DevHarness 工作流:Gitea 工单是实施期间的事实来源,Git 是代码变更记录,`docs/task` 是完成后的最终归档。人负责确认方案与验收,Agent 负责检查、实现、测试和留下证据。 开始工作前先阅读 [项目档案](docs/00-project-profile.md) 和任务涉及目录中的 `AGENTS.md`。目录越深的规则越具体,但不得削弱上级安全规则。 ## 1. 永久规则 - 不把密码、令牌、Cookie、私钥、个人数据或生产数据写入代码、日志、工单和文档。 - 不执行未经用户明确授权的发布、付款、删除数据、破坏性迁移或其他不可逆操作。 - 保留用户已有和任务无关的工作区改动,不擅自重置、覆盖或混入提交。 - 发现需求与安全规则、已确认方案或现有数据冲突时,先停止实施并说明影响。 - 测试结果必须真实;未执行或无法覆盖的验证必须明确记录。 项目专用红线写入本文件的“项目专用规则”或对应子目录的 `AGENTS.md`,不要散落在聊天记录中。 ## 2. 哪些改动需要工单 新功能、缺陷修复、重构以及任何用户可感知或改变程序行为的修改,必须先建立单元任务工单。 以下小改动可以直接提交,不要求工单和任务归档: - 只改错别字、注释或文档措辞; - 只做格式化、导入排序或不跨文件的内部变量改名; - 补充类型标注或文档字符串且不改变行为; - 删除已经确认无人使用的死代码。 只要涉及接口、数据库、状态、权限、安全、并发、用户界面,或者无法确定是否改变行为,就必须建工单。 ## 3. 需求到实施 1. 先复述目标,阅读相关代码、日志和文档,区分事实与假设。 2. 给出目标、非目标、方案、影响范围、风险、回退方式和验证方法。 3. 方案没有得到用户明确确认前,只做只读诊断和方案整理,不实施正式代码。 4. 方案确认后,先建立单元任务工单,再修改代码。 5. 开始实施前检查分支和工作区,明确哪些现有改动不属于本任务。 6. 严格按工单范围实现;新发现的问题先记录,不顺手混入当前任务。 7. 执行与风险相称的测试,把关键结果和未验证部分更新到工单。 Gitea 不可用时,输出完整工单草稿并说明阻塞。未经用户明确授权,不得默认绕过建单。 ## 4. 工单层级 ```text Epic:完整产品目标和长期路线 └── MVP:第一个可交付版本 └── 单元任务:唯一的实施单位 ``` - Epic 维护总体目标、范围、路线、风险和所有任务索引。 - MVP 维护首个可交付范围、阶段、集成风险和任务清单。 - 单元任务记录具体方案、修改范围、验收标准、过程和测试结果。 - 父工单只维护 `- [ ] #编号` 或 `- [x] #编号` 的索引和汇总,不复制子工单全文。 - 新任务先建单元工单,再把编号同步到所属 MVP 和 Epic。 工单模板位于 `.gitea/issue_template/`。 ## 5. 实施中的变化 - 范围、接口、数据结构、依赖、验收标准或风险变化时,先更新单元工单。 - 变化影响 MVP 或 Epic 时,同时更新父工单。 - 会改变用户已确认结果的变化,更新工单后必须再次等待用户确认。 - 阻塞、失败方案和新发现根因不能只留在聊天或代码注释中。 - 工单状态应使用:待确认、待实施、进行中、阻塞、待验收、已完成。 ## 6. Git 与验证 - 提交只包含当前工单相关文件。 - 实现提交信息引用工单号,例如:`fix: 修复登录超时 (#123)`。 - 不为流程制造空提交。 - 优先运行项目档案中记录的格式检查、静态检查、单元测试和必要的集成测试。 - 不能验证的真机、生产、迁移或并发行为必须写入工单和归档。 ## 7. 完成、验收和归档 1. 实现完成后逐项检查验收标准,并提交代码。 2. 更新单元工单:最终方案、方案差异、测试结果、提交哈希和遗留问题。 3. 工单保持“待验收”,用户没有明确验收通过前不得关闭。 4. 按 `docs/templates/task-archive.md` 创建 `docs/task/<编号>-<短标题>.md`。 5. 归档文档单独提交,例如:`docs: 归档任务 #123`。 6. 把归档路径和提交哈希回写工单。 7. 用户验收通过后关闭单元工单,并同步更新 MVP 和 Epic。 MVP 内所有单元任务通过后才能做 MVP 集成验收;MVP 通过后才能关闭 MVP。Epic 的全部范围完成后才能关闭 Epic。 ## 8. 可维护性 - 优先使用直白、常见的实现;不要为了少写几行引入晦涩技巧。 - 类和函数保持单一职责,名称表达业务含义。 - 注释解释原因、边界和风险,不逐行翻译代码。 - 错误必须可定位,不静默吞掉失败。 - 文档先写结论和用途,再写步骤;示例命令应可直接复制。 - 面向初级维护者说明从哪里开始读、怎样运行和怎样验证。 ## 9. 引导提交例外 从本模板创建全新仓库时,Gitea 远端和工单尚不存在,允许一次不带工单号的初始引导提交。该提交只能包含仓库骨架、Harness 规则和远端配置准备,不能包含产品功能。 远端建立并推送后,这个例外立即失效。 ## 10. 项目专用规则 - 尚未配置。开始产品开发前必须填写项目档案,并删除本行。