Clude Code 工业级代码工程规范

AI编码助手、Clude Code 实现 cli

Clude Code 工业级代码工程规范

目的:这份规范用于强制统一工程质量与团队产出风格。任何实现/改动都必须能在本规范下被解释、被验收、被回归。
范围:Python 纯 CLI Code Agent(含 LLM、Tooling、Verification、Observability、Docs)。

1. 核心准则(必须)

1.1 注释与文档规范(强制)

1.1.1 双语术语规则(强制)

1.1.2 Python 注释总规则(强制)

团队统一风格:Python 仅允许“声明前注释块(Declaration-leading Comment)”,并且必须紧贴声明;
禁止在类体/函数体内使用 Docstring(体内第一条三引号字符串)。

1.1.3 多语言注释方式(强制)

1.1.4 声明前注释块模板(Python,强制)

"""
@author 你的名字(Author Name)
@date YYYY-MM-DD
@brief 中文标题(English Title)

功能说明(What & Why):
- 该类/函数做什么?为什么需要它?

执行流程(Flow):
- 1) ...
- 2) ...

参数(Params):
- xxx:中文解释(English Meaning),范围/默认值/示例

返回(Return):
- 中文解释(Return Meaning)

注意事项(Notes):
- 约束 1(Constraint 1)
- 约束 2(Constraint 2)

示例(Example):
...(可选)
"""

2. 规范使用流程(每次改动必须执行)

3. 架构与模块化(必须)

3.1 模块配置统一管理(Configuration Centralization)

核心原则:所有可配置参数必须集中到 src/clude_code/config/,禁止模块自管配置或硬编码。

规范项 说明
配置集中化 模块配置定义在 src/clude_code/config/config.py;工具配置统一在 src/clude_code/config/tools_config.py
优先级 必须实现:环境变量 > 配置文件 > 代码默认值,且只能用 settings_customise_sources 实现,禁止 __init__ 手工合并导致优先级反转。
嵌套 env 必须启用 env_nested_delimiter="__",确保 CLUDE_LLM__MAX_TOKENS 等嵌套项可生效。
敏感信息 API Key/Token 禁止硬编码;日志必须脱敏(console/file 都不能明文泄露)。
注入时机 配置注入必须在初始化阶段完成(例如 AgentLoop.__init__),禁止运行时到处读 env/file。
文档化 新增配置项必须同步 .clude/.clude.example.yaml 中文注释与示例,并在 docs 说明。

3.2 配置文件(YAML)格式、位置与生成规则(Commented Template)

规范项 说明
格式统一 主配置统一使用 YAML;JSON 仅允许历史兼容读取,不允许作为默认输出。
主配置位置 主配置固定:~/.clude/.clude.yaml
兼容读取 允许兼容读取:./.clude/.clude.yaml./clude.yaml,但保存/生成必须写入用户目录主配置。
中文注释保留 生成/保存 YAML 必须保留中文注释:以 .clude/.clude.example.yaml 为模板按路径替换值(禁止直接 dump 丢注释)。
顺序一致 顶层 key 顺序必须与 .clude/.clude.example.yaml 一致,便于 diff 与排查。
默认值来源 “生成默认配置”必须来自代码默认值(不受 env/file 污染),推荐 model_construct()
示例敏感字段 .clude/.clude.example.yaml 不得提交真实密钥,必须用空字符串/占位符并注明推荐环境变量。

3.3 工具配置与日志标准化(Tool Config + Tool Logger)

规范项 说明
工具独立配置 每个工具必须有独立配置类(至少 enabledlog_to_file),统一在 tools_config.py
新增工具默认配置必备 新增工具必须在全局 ToolConfigs 增加默认字段,保证“工具可用即有默认配置”。
统一注入 工具配置只能通过 set_tool_configs(cfg) 注入、get_tool_configs() 读取;禁止工具模块直接读 env/file。
统一日志 工具日志必须走统一 helper(如 tooling/logger_helper.py),并遵循全局日志配置与工具 log_to_file
错误反馈 工具错误必须提供可操作信息;敏感信息禁止出现在日志明文。

3.4 提示词中心化管理(Prompt Management)

核心原则:所有发送给 LLM 的长篇提示词(System Prompt、Planning Prompt、Step Prompt 等)必须外置到 src/clude_code/prompts/ 目录,严禁在逻辑代码中硬编码长字符串。

规范项 说明
目录结构 提示词存放于 src/clude_code/prompts/,按功能分子目录(如 agent_loop/classifier/)。
加载约定 使用 from clude_code.prompts import read_prompt, render_prompt 加载。
文件格式 纯文本使用 .md.txt;带变量模板使用 .j2(即便不依赖 jinja2 也要保持扩展名一致性)。
禁止硬编码 超过 3 行的 LLM 提示词禁止出现在 .py 逻辑文件中。
解耦 逻辑代码只负责准备变量(Vars),不负责提示词的遣词造句。

3.4.1 提示词管理检查清单(Prompt Checklist,每次改动必查)

强制要求:每次新增/修改涉及 LLM 交互的代码时,必须检查以下事项:

检查项 通过标准
新增提示词是否外置 新增的任何 LLM 提示词(包括重试提示、纠错提示、反馈模板等)必须创建对应的 .md.j2 文件到 prompts/ 目录。
硬编码检查 代码中不得出现超过 3 行的字符串字面量用于 LLM 交互(含拼接的多行字符串)。
变量传递 提示词中的动态内容(如 error_messagestep_id)必须通过 render_prompt() 的关键字参数传入,不得在 .py 中拼接。
命名规范 提示词文件命名必须体现用途(如 plan_patch_retry.j2invalid_step_output_retry.md),不得使用 prompt1.md 等无意义命名。
目录归属 提示词文件必须放到对应功能子目录(agent_loop/classifier/tools/ 等),不得直接放在 prompts/ 根目录。

3.4.2 现有提示词文件清单(参考)

src/clude_code/prompts/
├── __init__.py              # 导出 read_prompt, render_prompt
├── loader.py                # 加载逻辑
├── README.md                # 目录说明
├── agent_loop/
│   ├── system_base.md                 # Agent 基础系统提示词
│   ├── local_agent_runtime_system.md  # 本地运行时系统提示词
│   ├── planning_prompt.j2             # 规划阶段提示词模板
│   ├── execute_step_prompt.j2         # 步骤执行提示词模板
│   ├── replan_prompt.j2               # 重规划提示词模板
│   ├── plan_patch_retry.j2            # PlanPatch 纠错重试提示词
│   ├── plan_parse_retry.md            # Plan 解析重试提示词
│   └── invalid_step_output_retry.md   # 无效步骤输出重试提示词
└── classifier/
    └── intent_classify_prompt.txt     # 意图分类提示词

3.3.1 搜索资料(WebSearch)工具:Open-WebSearch MCP 与 Serper(强制)

目标:支持两个“搜索资料来源”(Search Provider),可通过配置选择;默认优先使用 Open-WebSearch MCP,失败自动回退 Serper

4. 日志与调试(必须)

5. 质量门禁(必须)

5.1 可执行入口(推荐默认)

5.2 测试与验证(必须)

6. 安全与稳健性(必须)

7. 工程可维护性(必须)

8. 协作与版本(推荐)

9. UI 与可视化(必须)

9.1 Live UI 布局(推荐)

9.2 多模式 UI 输出一致性(UI Output Consistency)

核心原则:classic/enhanced/opencode 三种模式展示的核心信息必须语义一致。

规范项 说明
输出内容同源 系统提示词/用户提示词、LLM 请求/响应、工具调用/结果必须在所有 UI 中可见。
事件处理对齐 新增事件必须同步实现三种 UI 的渲染。
颜色语义统一 system/user/assistant/error/warning/success 颜色语义一致。

10. 文档质量门禁(必须)

11. 规范演进(推荐)