Files
core/AGENTS.md
T
2026-11-03 03:32:07 +00:00

37 lines
4.0 KiB
Markdown

# Dever 核心开发
适用于整个仓库。这里维护编译器、运行库和标准库;Dever 应用开发使用 [随包 Skill](skills/SKILL.md)。
## 工作规则
- 首条回复和最终回复称呼用户为“主人”。先读适用规则、相关源码和测试,再修改;已读且未变的文件不重复读取。
- 落实用户已授权的工作,不用方案或记录代替实施。讨论方案时只读;安装、部署、重启、提交、推送和重写 Git 历史须在授权范围内。
- 在 `/dm` 工作时遵守根 AGENTS。构建和程序运行使用已有开发容器,不往宿主机安装环境;保留用户改动、数据和凭据。
- 开发阶段统一使用 `0.0.1`,没有生产数据,不做旧语法、接口、配置或数据的兼容层。公开行为改动须说明,并同步调用方、测试和文档。
## 实现规则
- 保留 Dever 语法与约束。固定路线:Dever → 具体类型 Rust → 官方 Cargo/rustc → 原生程序。不开新后端,不 fork rustc。
- 优先复用 Rust 标准库和已有成熟库。只实现 Dever 自身规则与必要适配,不重复造解析器、调度器、网络栈或数值算法。
- 不预建扩展点、占位层或没有调用方的抽象。函数用于消除真实重复或表达清楚的职责,不包装每次库调用。
- 不添加无依据的判空、类型猜测、备用实现或静默兜底。外部输入在所属入口验证,内部不重复检查已保证的条件;鉴权、数据隔离、协议和资源释放必须正确。
- 错误沿现有路径传播,保留原因,不用空值或默认成功掩盖失败。重试、锁、缓存和补偿只用于当前真实需求。
- 每次复制、扫描、分配、加锁或调度交接都要有用途。只读优先借用,能移动就移动,不用 clone 代替所有权分析。
- 普通调用生成直接函数调用,只有需要挂起的函数才生成异步调用。具体类型直接传递,集合直接遍历,不套动态值或中间容器。
- 环境地址、端口、路径和凭据走既有配置;身份及数据归属来自可信上下文。不按账号、租户、测试名称或固定答案写特例。协议常量和局部算法常量可留在代码中。
- Rust 代码写必要的中文注释,说明原因和语义差异。Dever 源码为 `.dever` 纯代码;函数用 lowerCamelCase,字段、局部值和目录用 snake_case。
- 沿用目录结构,只保留工具包和运行库两份 Cargo 清单。每目录最多八个手写 `.rs` 文件,通常每文件 100–300 行,接近 400 行审查,超过 500 行拆分;小模块可直接放在 mod.rs。
## 验证与交付
- 先比较生成代码、运行库调用和独立 Rust 实现,找到多余操作再改。保留已有优化,不为某个性能样例添加特殊路径。
- 性能对照使用相同语义、输入、精度、依赖和编译选项。共享 Dever 运行库的对照只检验生成层,不能证明运行库追平。
- 提前固定轮次,保留全部原始结果及源码、二进制对应关系。报告绝对耗时、修改前后变化和对 Rust 的差距,不挑选样本或隐瞒退化。
- 每个独立改动先做相关功能和性能验证,再继续下一项;每批结束检查相关矩阵。稳定慢 2% 及以上继续定位,约 1% 不为凑数字增加代码。
- 新增复杂度没有稳定收益就撤回。删除等价冗余且无退化可以保留,但不冒充提速。
- 复用现有检查和测试,不造自证逻辑、不削弱断言。已通过的检查仅在相关内容变化或证据不足时补验。
- 说明只写当前用法和必要规则,不写对话、开发日志或占位描述。修改代码同步相关说明;调用图由工具生成,见 [说明写法](DOCUMENTATION.md)。
- 交付前检查差异、错误处理、冗余、引用和临时文件。未执行、失败或未测项目如实说明,不以构建成功代替业务通过。
源码布局、构建和测试命令见 [rust/README.md](rust/README.md)。语言行为见 [LANGUAGE.md](LANGUAGE.md)。