

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 自定义
<a name="custom"></a>

## 什么是 AWS 自定义转换？
<a name="custom-what-is"></a>

AWS Transform custom 使用代理人工智能对软件、代码、库和框架进行大规模现代化改造，以减少技术债务。它可以处理各种场景，包括语言版本升级、API 和服务迁移、框架升级和迁移、代码重构以及组织特定的转换。

通过持续学习，该代理可以根据每一次执行和开发人员反馈进行改进，无需专业的自动化专业知识即可提供高质量、可重复的转换。

### 关键功能
<a name="custom-key-capabilities"></a>

AWS Transform custom 提供以下功能：
+ **自然语言驱动的转换定义 **-使用自然语言、文档和代码示例创建自定义转换
+ **转换执行 **-在多个代码库中一致可靠地应用转换
+ **持续学习 **-自动提高每次执行的转型质量
+ **AWS-托管转换 **-针对常见场景使用即用型、 AWS经过审查的转换

### 转型模式
<a name="custom-transformation-patterns"></a>

AWS Transform 自定义支持多种转换模式，以满足您的现代化需求。根据所需变更的范围和性质，每种模式都有不同的复杂性特征。


| 模式 | 说明 | 复杂度 | 示例 | 
| --- | --- | --- | --- | 
| API 和服务迁移  | 在保持功能的同时，在 API 版本或等效服务之间迁移 | 中 | AWS SDK v1→v2（Java、Python、 JavaScript）、Boto2→Boto3、JUnit 4→5、javax→jakarta | 
| 语言版本升级  | 升级到相同编程语言的更新版本，采用新功能并替换过时的功能 | Low-Medium | Java 8→17、Python 3.9→3.13、12→22、版本升级 Node.js TypeScript  | 
| 框架升级  | 升级到同一框架的更新版本，解决重大变化 | 中 | Spring Boot 2.x→3.x、React 17→18、Angular 升级、Django 升级 | 
| 框架迁移  | 迁移到具有相似目的的完全不同的框架 | 高 | Angular→React，Redux→Zustand，→React Vue.js | 
| 库和依赖关系升级  | 将第三方库升级到新版本，同时保持相同的语言和框架 | Low-Medium | Pandas 1.x→2.x、 NumPy 升级、库升级、 Hadoop/HBase/Hive Lodash 升级 | 
| 代码重构和模式现代化  | 在不更改外部功能的情况下实现代码模式现代化并采用最佳实践 | Low-Medium | 打印→日志框架、字符串连接→f 字符串、类型提示采用、可观察性检测 | 
| 剧本和 File-by-File 翻译  | 翻译独立脚本或配置文件，其中文件大多是独立的 | Low-Medium | AWS CDK→Terraform、Terraform→、Excel→Python 笔记本、Bas CloudFormation h→ PowerShell | 
| 架构迁移  | 只需最少的代码更改即可在硬件架构或运行时环境之间迁移 | Medium-High | x86→AWS Graviton (ARM)、本地部署→Lambda、传统服务器→容器 | 
| Language-to-Language 迁移  | 将代码库从一种编程语言翻译成另一种编程语言 | 非常高 | Java→Python、 JavaScript →、C→Rust、Python→G TypeScript o | 
| 自定义和 Organization-Specific 转换  | 独特的组织要求和专业的现代化需求 | 变化 | 自定义内部库迁移、特定组织编码标准、专有框架迁移 | 

**注意**  
对于 COBOL/mainframe 语言，请使用大型机 AWS 转换。要将 .NET 框架升级到 .NET Core，请考虑适用于 Windows 的 AWS 转换。要将 VMware 迁移到 AWS，请考虑使用 T AWS ransform for V

### 操作方法 AWS 改造自定义作品
<a name="custom-how-it-works"></a>

AWS 自定义转换通常用于转换多个代码库或模块的大型项目。团队通常遵循四个阶段的工作流程：

**定义转换 **-向代理提供自然语言提示、文档和代码示例，代理会生成初始转换定义。这个定义可以通过聊天或直接编辑来反复完善。使用 AWS-managed 转换时可以跳过此阶段。

**试点或 Proof-of-Concept **-在示例代码库上测试转换，并根据结果进行完善。此验证阶段有助于估算全面转型的成本和工作量。在此阶段，持续学习可以提高质量。

**扩展执行 **-使用 CLI 设置自动批量执行，开发人员审查和验证结果。使用 Web 应用程序监控进度并跟踪多个存储库之间的转换。

**监控和审查 **-持续学习可自动提高转型质量。查看从之前的运行中提取的经验教训，确保它们符合质量标准，并将所有无用的内容存档。

## 了解主要 概念
<a name="custom-understanding-key-concepts"></a>

本节解释了使用自定义 AWS 转换的关键概念。

### 转换定义
<a name="custom-transformation-definitions"></a>

**转换定义**包含执行特定代码转换所需的指令和知识。它表示为一项技能，包括：
+ `SKILL.md`（必填）-带有 YAML 前端内容（`name`和`description`字段）的 Markdown 中的指令，其中包含核心转换逻辑和执行指令
+ `references/`文件夹（可选）-在转换执行期间根据需要加载文档
+ `scripts/`文件夹（可选）-转换在执行期间下载和运行的脚本

AWS 当需要执行、检查或修改时，Transform CLI 会自动将转换定义下载到当前目录。

**重要**  
发布转换时，该目录必须仅`SKILL.md`包含`references/`文件夹、文件夹或两者（可选）。`scripts/`不允许使用其他文件或子目录。

**注意**  
CLI 版本 2.0 及更高版本使用技能格式。现有的转换定义由 CLI 自动处理。

### 转换注册表
<a name="custom-transformation-registry"></a>

**转换注册表**是您 AWS 账户的集中存储库，用于存储和管理转换定义。注册表中的转换可以是：
+ 使用列出 `atx custom def list`
+ 跨多个代码库执行
+ 与您 AWS 账户中的其他用户共享
+ Version-controlled

**重要**  
转换定义因账户而异。如果您想在其他 AWS 账户中使用转换，则必须在该账户中单独发布转换。

### 草稿与已发布的转换
<a name="custom-draft-vs-published"></a>

AWS 自定义转换支持注册表中的两种转换状态：

**草稿转换**正在进行中或未经测试的转换定义。它们被保存为特定版本，可以由引用该特定版本的用户检索、更新和执行。在转型准备好与团队共享之前，草稿可用于迭代开发、测试和完善。草稿还与特定的对话相关联。如果重新启动 CLI，则可以使用`atx --conversation-id {id}`恢复之前的 CLI。

**已发布的转换可在**您账户的转换注册表中找到，供具有所需 IAM 权限的其他用户执行。可以使用`atx custom def list`发现已发布的转换。

典型的工作流程是：

1. 在本地创建转换

1. 另存为草稿以供测试 (`atx custom def save-draft`)

1. 完善和验证

1. 发布以与您的团队共享 (`atx custom def publish`)

您也可以直接发布转换，无需将其另存为草稿。

### 参考文献与课程
<a name="custom-references-vs-knowledge-items"></a>

AWS 自定义转换使用两种类型的知识来提高转换质量：

**参考**是用户提供的文档，存储在转换定义的`references/`文件夹中。参考文献仅支持文本文件（所有文件总共最大 10MB），通常包含文档、API 规范、迁移指南和代码示例。在转换执行期间根据需要加载引用。在交互模式下创建或更新转换定义时，可以添加引用。

**课程**会自动从之前的转换运行中提取。持续学习系统根据执行轨迹、开发人员反馈以及在转换过程中遇到的代码修复生成它们。它将相关课程分为几类，这样您就可以一起复习它们。与您预先提供的参考文献不同，当您在不同的代码库中进行转换时，经验会随着时间的推移而累积，系统会自动应用这些参考资料来改善未来的运行。您可以通过互动方式查看和管理课程。`atx custom def learnings`

### 生成和验证命令
<a name="custom-build-validation-commands-concept"></a>

**生成或验证命令**是一个可选参数，用于指定在转换过程中如何验证您的代码。此命令在转换期间的不同时刻执行，以确保代码的完整性。

提供验证结果并在验证失败时返回问题的命令对于通过持续学习提高转型质量非常重要。如果不需要生成或验证，请省略您的输入。

有关示例和详细指南，请参阅 “工作流程” 部分中的生成和验证命令。

### 持续学习
<a name="custom-continual-learning-concept"></a>

**持续学习**是一种自动捕获每次转型执行的反馈并随着时间的推移提高转型质量的系统。该系统通过以下方式收集信息：
+ 明确的反馈-交互模式下提供的注释和代码修复
+ 隐式观察-代理在转换和调试代码时遇到的问题

持续学习系统处理这些信息以创建**课程**，将其添加到转型定义中，以改善未来的转型。转换完成后，系统会自动运行学习过程，无需您额外输入。

**重要**  
课程是针对特定转型的，不能在不同的转换或不同的客户账户之间共享。

#### 管理课程
<a name="custom-managing-lessons-concept"></a>

系统会自动生成课程，但您可以控制将来的课程应用于哪些课程。该`atx custom def learnings`命令会打开一个交互式终端会话，用于审查和整理转型所积累的经验教训。

在此会话中，您可以：
+ 浏览按类别分组的课程，查看每个类别包含多少活跃课程。
+ 打开一节课，阅读其全部细节，包括课程正文、影响以及之前有多少次跑步参考了该课程。
+ 存档课程以防止系统将其应用于将来的运行，并在需要时将其恢复。
+ 永久删除已存档但已不再有用的课程。

如需分步指导，请参阅 [持续学习](custom-workflows.md#custom-continual-learning)。

### Client-Side 技能
<a name="custom-client-side-skills-concept"></a>

**Client-side 技能**是在转换执行期间扩展代理的额外能力。与定义要执行的转换定义不同，客户端技能提供了补充工具、脚本和指令，代理可以在任何转换过程中将其与内置功能一起使用。

Client-side 技能是从项目级和用户级目录中发现的。当他们强制执行特定于存储库的标准时，将技能放在项目级别；当技能应用于您的所有项目时，将其设置在用户级别。 Project-level 技能仅在提供代码存储库路径时可用。有关详细配置和用法，请参阅[Client-Side 技能](custom-workflows.md#custom-client-side-skills)。

## 自定义转换命令简介
<a name="custom-cmd-intro"></a>

以下是一些可用于自定义转换的命令。完整的命令列表在[AWS 转换自定义转换命令参考](https://docs.aws.amazon.com/transform/latest/userguide/custom-command-reference.html)中。
+ `atx custom`
  + **执行自定义转换交互式体验，允许创建、发现、执行和完善转换。**
  + 这是的默认命令`atx`。
  + `--trust-all-tools`(`-t`) 是可选的，隐含地允许代理请求的所有工具请求。谨慎使用，尤其是在生产环境中。您可以使用信任设置文件为特定工具和命令配置工具[信任](https://docs.aws.amazon.com/transform/latest/userguide/custom-workflows.html#custom-advanced-configuration)。
+ `atx custom --help` \| `atx custom -h`
  + **显示帮助菜单。**
  + 每个命令还包括一个帮助菜单，例如`atx custom def exec --help`。
+ `atx --version` \| `atx -v`
  + **显示版本。**
  + 版本号随每个版本而变化。
+ `atx custom def list`
  + **打印转换注册表中可用的转换列表。**
+ `atx custom def exec`
  + **执行转换 **
+ `atx custom def learnings`
  + **打开交互式会话以查看和管理转型从先前运行中吸取的经验教训 **
+ `atx mcp`
  + **用于管理 MCP 服务器配置 **