Files
mailks/AGENTS.md
T
zhenyi 7b8d0714e7 feat(config): integrate etcd-based configuration management
- Add etcd-client dependency with TLS support
- Implement EtcdConfig struct for reading config values with priority: etcd > env > default
- Add ServiceRegistry for service discovery registration in etcd
- Create from_etcd method in AppConfig for loading SMTP configuration
- Update main.rs to use etcd-based config loading with fallback mechanism
- Add etcd module with client connection and key-value operations
- Modify Dockerfile to use cargo-chef for faster builds
- Add docker-compose.yaml for emailks service deployment
- Include AGENTS.md with development guidelines and best practices
- Add build.sh script for podman-based container building
- Update dependencies in Cargo.toml and Cargo.lock
2026-06-12 16:21:04 +08:00

5.4 KiB

AGENTS.md — 开发规范 / Development Guidelines

本文件为所有 AI 编码助手(Claude Code、pi、Cursor 等)提供统一的开发指导。 This file provides unified development guidelines for all AI coding assistants.

最后更新 / Last Updated: 2026-06-11


1. 语言 / Language

Always respond in Chinese (中文). Use the user's language for all conversations and explanations. Code, commands, and technical terms can remain in English.

始终使用中文回复。代码、命令和技术术语可以保留英文。


2. 代码风格 / Code Style

2.1 基本原则 / Basic Principles

规则 / Rule 说明 / Description
遵循现有风格 Follow existing project conventions
有意义命名 Use meaningful variable names
函数长度 Keep functions under 50 lines
嵌套深度 Maximum nesting depth: 3 levels
注释 Add comments for complex logic only

2.2 Rust 最佳实践 / Rust Best Practices

规则 / Rule 说明 / Description
错误传播 Use ? operator; never use unwrap() in non-test code
unsafe Avoid; if necessary, add // SAFETY: comment
clone() Minimize usage; prefer references
魔法数字 No magic numbers; use named constants
硬编码字符串 No hardcoded strings; use enums or constants

2.3 导入规范 / Import Guidelines

// 标准库 → 第三方 crate → 本地模块
use std::collections::HashMap;

use serde::{Deserialize, Serialize};

use crate::error::{AppError, AppResult};

3. 禁止模式 / Forbidden Patterns

以下代码模式在项目中严格禁止:

禁止项 / Forbidden 说明 / Reason
// ── xxxx ────────── 禁止使用此类分隔线注释
unwrap() / expect() (非测试) 使用 ? 或安全替代
panic!() / unreachable!() 使用错误类型替代
未处理的 todo!() 必须有对应的 issue 追踪
注释掉的代码 使用 Git 历史追溯
过深嵌套 (≥4层) 使用 early return 扁平化逻辑
过长函数 (>50行) 拆分为更小的函数
魔法数字 使用 const 定义命名常量
硬编码字符串 使用枚举或常量

4. 错误处理 / Error Handling

4.1 错误处理原则

原则 / Principle 说明 / Description
显式处理 Handle all errors explicitly; no silent failures
用户友好 Internal errors are logged; user-facing messages should be helpful
错误上下文 Use .context() or .map_err() to add context

4.2 错误日志格式

tracing::error!(
    error = %err,
    operation = "operation_name",
    "Failed to perform operation"
);

5. 安全规范 / Security

规则 / Rule 说明 / Description
密钥管理 Never hardcode secrets or API keys
输入验证 Always validate and sanitize user input
SMTP 安全 Use TLS for SMTP connections
密码安全 Use proper hashing (Argon2, bcrypt)

6. 工作流程 / Workflow

6.1 开发流程

  1. 理解先于编写 — Read before write; understand context first
  2. 最小变更 — Minimal changes; don't refactor unrelated code
  3. 验证变更 — Verify after changes; run tests or check output

6.2 AI 助手工作规范

规则 / Rule 说明 / Description
先读后写 Always read existing code before making changes
最小侵入 Make minimal changes
验证结果 Run cargo check or cargo test after changes
解释变更 Explain what you changed and why

6.3 常用命令 / Common Commands

cargo build                      # 构建 / Build
cargo check                      # 快速检查 / Quick check
cargo test                       # 运行测试 / Run tests
cargo clippy                     # Lint 检查 / Lint checks
cargo fmt                        # 格式化 / Format code

7. Git 规范 / Git Workflow

7.1 提交信息格式

<type>(<scope>): <subject>

[optional body]

[optional footer]
Type 说明 / Description
feat 新功能 / New feature
fix Bug 修复 / Bug fix
refactor 重构 / Code refactoring
docs 文档 / Documentation
test 测试 / Tests
chore 构建/工具 / Build/tooling

7.2 提交原则

原则 / Principle 说明 / Description
原子提交 Each commit should address one concern
完整性 Each commit should leave the codebase in a working state
禁止强制推送 Never force push to main branch

附录 / Appendix

项目架构速查 / Quick Architecture Reference

emailks — 邮件发送服务 / Email Sending Service

email.rs       → 邮件发送核心 / Email sending core
server.rs      → gRPC 服务 / gRPC server
queue.rs       → 邮件队化 / Email queue
status.rs      → 状态管理 / Status management
error.rs       → 错误类型 / Error types
config.rs      → 配置管理 / Configuration
proto/         → Protobuf 定义 / Protobuf definitions

This document is maintained by the development team. For questions or suggestions, please open an issue.