ADK-Python 文件组织规范实战指南:目录布局、文件头约定与测试镜像规则

发布时间:2026/11/4 13:14:14

ADK-Python 文件组织规范实战指南:目录布局、文件头约定与测试镜像规则 ADK-Python 文件组织规范实战指南目录布局、文件头约定与测试镜像规则【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-pythonADKAgent Development KitPython 代码库在src/google/adk/下维护着数百个模块为了让新增代码在私人可见性、统一文件头、可预测的测试落点三方面保持一致性仓库通过.agents/skills/adk-style/这一风格技能沉淀了一套文件组织规范。本文以 file-organization.md 为骨架结合workflow/、tools/environment/的真实目录、scripts/compliance_checks.py的合规检查实现与.pre-commit-config.yaml的钩子配置讲清楚在 ADK-Python 中新增一个.py文件时应遵循的布局规则、文件头要求以及测试文件镜像源码路径的命名方法论帮助你在提交代码前一次性通过全部机器检查。一、两条核心布局原则原文档将文件组织概括为两条铁律任何新增代码都必须遵守workflow/目录下一文件一类One class per filesrc/google/adk/workflow/中的每个模块文件只承载一个核心类文件与类一一对应。src/google/adk/下新增模块默认私有private by default新文件必须以_下划线前缀命名是否对外暴露由包的__init__.py与可见性规则决定。从仓库实际目录看这两条原则被严格执行。以src/google/adk/workflow/为例目录下几乎全是_前缀文件且每个文件对应一个独立类src/google/adk/workflow/ ├── __init__.py # 公开 API 的出口 ├── _base_node.py # BaseNode / START ├── _graph.py # Graph / Edge / DEFAULT_ROUTE ├── _node.py # Node / node 装饰器 ├── _join_node.py # JoinNode ├── _function_node.py # FunctionNode ├── _retry_config.py # RetryConfig ├── _errors.py # NodeTimeoutError ├── _workflow.py # Workflow └── _node_runner.py # 内部运行器不出现在公开 API而src/google/adk/workflow/__init__.py正是可见性规则的落点它定义了__all__只导出BaseNode、DEFAULT_ROUTE、Edge、FunctionNode、JoinNode、Node、NodeTimeoutError、RetryConfig、START、Workflow、node这些公开符号并通过_LAZY_MEMBERS字典将符号映射到各自的_私有模块做惰性导入外部使用者从包顶层导入永远不需要也不应该触及内部_模块。这与 visibility.md 中文件私有、符号经__init__.py显式导出的约定完全呼应——原文档在 file-organization 中只是点了一句see the visibility reference想要完整理解命名规则与公开符号暴露机制应配合该参考文档阅读。二、文件头三部曲每个src/google/adk/模块的标准开头规范要求src/google/adk/下的每个模块文件都从以下三部分开始顺序固定Apache 2.0 许可证头由addlicense钩子自动补齐from __future__ import annotations延迟注解求值配合类型检查与 Pydantic 模型定义使用导入语句按标准库 → 第三方 → 相对导入三段排列。from __future__ import annotations这一条并非口头约定而是被scripts/compliance_checks.py的check_future_annotations()函数机器化强制任何不在豁免名单内的源码文件缺失该行compliance-checks检查就会失败并阻断提交。豁免范围与文档描述完全一致——__init__.py、version.py、tests/目录以及contributing/samples/目录下的文件无需该语句。以src/google/adk/workflow/__init__.py的真实文件头为例可以看到标准三段的实际形态# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the License); # ...Apache 2.0 许可证头全文 from __future__ import annotations from typing import TYPE_CHECKING from ..utils import _lazy其中from __future__ import annotations位于许可证头之后、所有导入之前标准库导入typing与相对导入..utils分属不同段落符合standard library → third party → relative的顺序约定。想要了解这三段之间更多细节如cli/包的导入方向限制、TYPE_CHECKING的循环导入规避可继续阅读 imports.md 与 typing.md。三、机器强制这些约定由哪些钩子守护原文档指出许可证头由addlicense钩子添加、from __future__ import annotations由scripts/compliance_checks.py检查。仓库根目录的.pre-commit-config.yaml完整揭示了这三道防线- id: addlicense # 自动为文件添加 Google LLC Apache 2.0 许可证头 name: addlicense entry: bash -c ... addlicense -c Google LLC -l apache $ ... - id: check-new-py-prefix # 强制新增 .py 文件必须以下划线前缀命名私有默认 - id: compliance-checks # 调用 scripts/compliance_checks.py 做多项合规检查 entry: scripts/compliance_checks.py其中compliance-checks的实际逻辑位于 scripts/compliance_checks.py与文件组织规范直接相关的检查点包括check_future_annotations(content, filename)校验from __future__ import annotations是否存在豁免条件精确实现为filename.endswith(__init__.py)、filename.endswith(version.py)、路径含tests/、路径含contributing/samples/四类同一脚本还顺带检查 logger 命名必须是google_adk.前缀、禁止cli/包外反向导入、mTLS 端点、内部短链与 FastAPI 路由装饰器顺序等任一失败都会sys.exit(1)阻断流程。因此在 ADK-Python 中文件放哪里、叫什么名字、文件头长什么样不再是评审意见而是 PR 之前就必须通过的机器门槛。相关钩子的完整清单与各自检查内容可以对照 SKILL.md 末尾的 A check failed — where to look 速查表逐项定位。四、测试文件放哪里镜像源码路径规范对测试落点的要求只有一句话在tests/unittests/下镜像源码的目录结构。文档给出的第一组示例在仓库中真实存在src/google/adk/tools/environment/_edit_file_tool.py tests/unittests/tools/environment/test_edit_file_tool.py对应到仓库源码位于 src/google/adk/tools/environment/_edit_file_tool.py测试位于 tests/unittests/tools/environment/test_edit_file_tool.py。同一目录下还有配套的_read_file_tool.py→test_read_file_tool.py、_write_file_tool.py、_execute_tool.py等镜像关系一一对应、目录层级完全一致。这条规则的工程价值在于可推导性看到任意一个src/google/adk/下的源码文件任何人都能零成本推算出它的测试文件路径反过来测试失败时也能沿镜像路径立即定位到被测实现。注意镜像时只保留源码文件名的去下划线、去扩展名部分——_edit_file_tool.py对应test_edit_file_tool.py前缀统一为test_而不是test__edit_file_tool。五、一对多测试以源码文件名作为共享前缀当一个源文件需要拆分成多个测试文件时规范给出的命名技巧是使用源码文件名去掉前导下划线与扩展名作为共享前缀后缀表达测试关注的不同维度。文档示例在workflow/目录下同样真实存在src/google/adk/workflow/_workflow.py tests/unittests/workflow/test_workflow.py tests/unittests/workflow/test_workflow_hitl.py tests/unittests/workflow/test_workflow_nested.py对照仓库 tests/unittests/workflow/ 目录这套命名体系被大规模执行围绕_workflow.py一个源文件测试族扩展到了test_workflow.py基础行为、test_workflow_hitl.py人工介入场景、test_workflow_nested.py嵌套工作流、test_workflow_concurrency.py并发、test_workflow_dynamic_nodes.py动态节点、test_workflow_failures.py失败路径、test_workflow_parallel_worker.py并行执行、test_workflow_routes.py路由等十余个文件而_base_node.py、_graph.py、_join_node.py等同样各自拥有test_base_node.py、test_graph.py、test_join_node.py一一对应的测试。这种前缀 维度后缀模式的好处是用test_workflow_*一个 glob 就能搜出某个类的全部测试场景源码变更时按前缀即可定位所有需要同步更新的测试文件也方便 CI 按模块粒度并行分发测试任务。六、实操自查清单在 ADK-Python 中新增或移动一个.py文件前对照以下清单逐项确认检查项要求强制方式文件位置功能模块放入src/google/adk/子包/对应目录人工 评审文件命名新文件默认私有必须以_前缀开头如_workflow.pycheck-new-py-prefix钩子workflow/内聚性一个文件只放一个核心类人工 评审许可证头文件头包含 Apache 2.0 许可证Google LLCaddlicense钩子自动补齐延迟注解非豁免文件必须含from __future__ import annotationscompliance-checkscompliance_checks.py导入顺序标准库 → 第三方 → 相对导入isort/ruff钩子公开符号暴露仅在包__init__.py中导入并写入__all__配合 visibility.md人工 评审测试镜像测试置于tests/unittests/同构路径/test_源码名.py人工 评审一对多测试多测试文件共享test_源码名_前缀后缀表达场景维度人工 评审需要说明的是__init__.py、version.py、tests/与contributing/samples/四类文件享有豁免——它们无需from __future__ import annotations但其余规则如测试镜像依然适用。若新增文件需要对外提供公开 API请务必先阅读可见性参考文档理解文件私有、符号公开的完整暴露链路再动手提交。【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/31 7:53:44

PolarDB-X分布式JOIN性能 benchmark:Broadcast与Shard策略深度对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 11:03:29

数字员工技术解析与熊猫智汇实践应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 14:32:17

Jev:一场针对AI话痨的数字静默行为艺术

1. “Jev”不是新模型,是网友集体创作的“哑巴式AI行为艺术” 最近刷到好几条短视频,标题都写着“Jev是什么?哑巴模型居然全网爆火”,点进去一看,画面里是个黑底白字的极简界面,输入框旁写着“请说话”&…

2026/11/4 14:32:17

Jev现象解密:AI语音‘哑巴模型’的声学缺陷与拟人化边界

1. 项目概述:当“Jev”成为全网热词,我们到底在讨论什么?最近刷短视频、逛论坛、看弹幕,你大概率已经撞见过这个词——Jev。它不是新出的美妆品牌,不是某款游戏的隐藏BOSS,更不是某个小众乐队的缩写。它是一…

2026/11/4 14:32:17

自考论文写作工具横评:10款工具实测对比与优化建议

1. 论文写作工具横评背景与价值 最近指导几位自考学生完成毕业论文时,发现他们普遍面临三个核心痛点:文献检索效率低、论文格式混乱、写作时间严重不足。这促使我系统测试了市面上主流的10款论文辅助工具,实测发现优质工具能帮助自考考生节省…

2026/11/4 14:32:17

BUUCTF PWN题解:栈溢出与格式化字符串漏洞实战

1. 解题思路与工具准备最近在BUUCTF平台上刷了几道PWN题(46-50题),发现这几道题虽然难度不算太高,但涉及的知识点比较全面。作为二进制安全方向的练习者,我觉得有必要把解题过程记录下来,既是对自己思路的梳…

2026/11/4 14:32:17

React渲染模式演进与性能优化实战

1. React渲染模式的演进背景2013年React的横空出世,彻底改变了前端开发的范式。最初作为Facebook内部解决动态数据更新问题的解决方案,React凭借虚拟DOM和组件化思想迅速成为构建单页应用(SPA)的首选框架。但传统SPA存在三个致命短板:首屏性能…

2026/11/4 14:27:16

Tomcat 404错误排查与解决方案大全

1. Tomcat报404问题概述 作为一名Java后端开发工程师,我经常遇到新手同事在启动Tomcat时遇到404错误的问题。Tomcat作为最流行的Java Web应用服务器之一,其404错误可能由多种原因导致,有些情况甚至Tomcat本身运行正常(控制台无报错…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 0:03:20

AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年…

2026/11/4 0:03:20

从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你…

2026/11/4 0:03:20

32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑