)
1. 为什么我劝你先跑通一个最小可用的 Trae AI SkillTrae AI 的 Skills 本质上是一套「让 AI 按你定义的规则去调用本地脚本」的机制。你可以把它理解成给 AI 装了一个专属插件平时它只会聊天装上 Skill 之后它就能在你输入特定内容时自动去执行一段 Python 代码然后把执行结果返回给你。对零基础开发者来说这是理解「AI 编程工具到底怎么扩展能力」最直观的入口。我见过太多人卡在第一步文档看了一堆概念都懂但就是没跑通一个能看见结果的小技能。结果就是「知道有这功能但不知道能干嘛」。所以这篇不走概念科普路线直接带你从零做一个能用的 Skill——自动保存提示词。你输入一句话它就把这句话带时间戳追加写进本地的prompt提示词.md文件。功能简单但完整覆盖了「创建文件 → 写配置 → 上传 → 触发 → 验证」这条链路。适合谁看刚接触 Trae AI、没写过 Skill、Python 只会一点点甚至不会的人。你不需要理解框架原理照着复制粘贴就能跑通。跑通之后你再去看官方文档里那些复杂技能会发现底层逻辑是一样的只是脚本里多写了几行判断而已。核心检索词先明确Trae AI Skills 是什么它是 Trae AI 里用来扩展 AI 行为的自定义能力单元通过SKILL.md描述触发规则、main.py执行具体逻辑、requirements.txt声明依赖打包成 ZIP 上传后即可在对话中触发。能做什么自动化重复操作、把对话内容落盘、调用本地脚本处理数据。适合谁想让 AI 帮自己干「聊天之外的事」的开发者。下面我按真实操作顺序走一遍每一步都给可复制的文件和命令。你跟着做大概 15 分钟能跑通第一个技能。2. 前置准备Trae AI 环境与 Skill 文件结构怎么搭在动手写代码之前先把两件事搞定Trae AI 客户端能正常对话以及本地有一个干净的技能文件夹。这两步没做好后面上传会各种报错。2.1 确认 Trae AI 可用并找到 Skills 入口打开 Trae AI 客户端先随便发一句「你好」确认模型能正常回复。然后找到 Skills 管理入口——通常在侧边栏或设置里的「技能 / Skills」区域。不同版本位置略有差异但关键词是「技能」或「Skills」。进去之后你会看到「创建技能」或「上传技能」的按钮这就是我们后面要用的入口。这里有个小白常踩的坑以为 Skill 是写在对话里的。不是。Skill 是一个独立的 ZIP 包你得先在本地把文件写好、打包再上传。对话里只是触发它。2.2 建立技能文件夹在你喜欢的位置新建一个文件夹名字用英文比如save_prompt_skill。里面最终会有三个文件save_prompt_skill/ ├── SKILL.md # 技能描述与触发规则 ├── main.py # 真正执行的 Python 脚本 └── requirements.txt # 依赖声明本技能用标准库留空说明即可为什么是这三个SKILL.md告诉 Trae AI「这个技能叫什么、什么时候触发、怎么用」main.py是 AI 触发后实际运行的代码requirements.txt是给运行环境看的依赖清单。三个文件缺一不可哪怕依赖为空也要保留否则部分版本解析会失败。2.3 Python 环境确认本技能只用 Python 标准库os、sys、datetime、pathlib所以理论上不需要额外装包。但你要确认本地有 Python 3.11 及以上版本因为 Trae AI 的运行环境对版本有要求。终端里跑一下python3 --version如果显示Python 3.11.x或更高就没问题。低于这个版本建议升级否则上传后可能解析报错。这一步别跳过我见过有人卡在版本不匹配上排查半天。环境确认完文件夹建好接下来就是写文件。顺序建议是先写SKILL.md再写main.py最后补requirements.txt。因为SKILL.md里的描述会直接影响你在界面上填的配置先想清楚触发逻辑代码才好写。3. 可复制配置SKILL.md、main.py 与 requirements.txt 三件套这一节是全文的核心三个文件我都给完整内容你直接复制改路径就能用。重点看SKILL.md的 YAML 头和main.py的保存逻辑。3.1 SKILL.md定义技能身份与触发规则SKILL.md用 YAML front matter 加 Markdown 正文的格式。YAML 部分定义name和description正文部分写清楚使用场景和输出格式。内容如下--- name: save_prompt description: 自动将输入内容追加保存到 prompt提示词.md 文件中 --- # save_prompt ## 命令 当用户在对话框中输入内容时自动触发保存功能。 ## 使用场景 - 记录有价值的提示词和对话内容 - 自动备份 AI 协作过程 - 创建可复用的提示词库 - 团队知识积累和共享 ## 输出解释 1. 每次触发都会将输入内容追加到指定文件 2. 自动添加时间戳和分隔符 3. 文件不存在时自动创建并初始化 4. 返回操作结果和文件状态 ## 示例 用户输入帮我写一个 Python 快速排序算法 技能响应内容已保存到 prompt提示词.md附带时间与内容摘要。name必须是小写英文加下划线这是技能的唯一标识后面在界面里填的名称要和它一致。description一句话说清楚干什么越具体越好AI 判断是否触发时会参考它。3.2 main.py真正干活的脚本这是核心执行文件。逻辑很简单接收命令行参数作为输入文本拼上时间戳追加写入prompt提示词.md。完整代码如下#!/usr/bin/env python3 save_prompt 技能 - 自动保存输入内容到文件 import sys from datetime import datetime from pathlib import Path def save_to_prompt_file(input_text: str) - str: 将输入文本保存到 prompt提示词.md 文件 try: file_path Path(prompt提示词.md) # 文件不存在时初始化 if not file_path.exists(): with open(file_path, w, encodingutf-8) as f: f.write(# Prompt 提示词库\n\n) f.write( 本文件由 save_prompt 技能自动生成和维护\n\n) f.write(---\n\n) timestamp datetime.now().strftime(%Y-%m-%d %H:%M:%S) content_to_append f## {timestamp}\n\n{input_text}\n\n---\n\n with open(file_path, a, encodingutf-8) as f: f.write(content_to_append) preview input_text[:60] ... if len(input_text) 60 else input_text return ( f保存成功\n f文件路径{file_path.absolute()}\n f保存时间{timestamp}\n f内容预览{preview} ) except PermissionError: return 权限不足无法写入文件请检查文件权限 except Exception as e: return f保存失败{str(e)} def main(): if len(sys.argv) 2: print(用法save_prompt \要保存的文本内容\) return input_text .join(sys.argv[1:]) print(save_to_prompt_file(input_text)) if __name__ __main__: main()几个关键点Path(prompt提示词.md)是相对路径文件会生成在技能运行时的当前工作目录encodingutf-8必须写否则中文会乱码sys.argv[1:]用空格拼接支持带空格的输入。3.3 requirements.txt依赖声明本技能只用标准库所以文件里写注释说明即可但文件本身要存在# save_prompt 技能依赖说明 # 本技能仅使用 Python 3.11 标准库无需额外安装包 # 如需添加依赖格式为package_nameversion三个文件写完后检查一下SKILL.md的name和界面里要填的技能名称是否一致。不一致会导致触发失败这是新手最容易忽略的细节。4. 打包上传与验证请求跑通第一个技能并看到文件落盘文件写好只是本地准备真正跑通要经过打包、上传、配置、触发、验证五步。这一节把每步的操作和预期结果都写清楚。4.1 压缩成 ZIP 包把三个文件选中打包注意是打包文件本身不是打包文件夹。macOS/Linux 终端里zip -r save_prompt.skill.zip SKILL.md main.py requirements.txtWindows 上选中三个文件右键「发送到」→「压缩(zipped)文件夹」然后重命名为save_prompt.skill.zip。命名建议带.skill标识方便识别。4.2 上传并配置技能参数进入 Trae AI 的 Skills 创建界面点击上传选择刚才的 ZIP 包。等待解析完成界面会显示解析出的技能信息。然后填写技能名称填save_prompt描述填「自动将输入内容追加保存到 prompt提示词.md 文件中」技能类型选「全局技能」这样所有项目都能用。指令配置区域把SKILL.md正文部分粘进去。填完保存启用。4.3 触发验证在对话框里输入一句非空内容比如「如何学习 TypeScript」。如果配置正确你会看到技能响应返回保存成功的信息包含文件路径、时间戳和内容预览。然后去技能运行的工作目录检查prompt提示词.md应该能看到类似内容# Prompt 提示词库 本文件由 save_prompt 技能自动生成和维护 --- ## 2026-02-01 10:30:25 如何学习 TypeScript ---再输入第二句比如「Python 列表推导式的最佳实践」文件里会追加第二条带新时间戳的记录。这说明追加模式正常工作历史记录没被覆盖。4.4 命令行单独验证脚本如果对话里触发没反应可以先在本地终端单独跑脚本排除是脚本问题还是配置问题python3 main.py 测试保存功能终端应该输出保存成功的提示同时当前目录生成prompt提示词.md。如果这一步就报错说明脚本本身有问题先修脚本如果这一步正常但对话里不触发那就是上传配置或触发规则的问题去检查技能是否启用、名称是否一致。5. 本篇常见错排查401、local proxy failed 与技能不触发怎么解跑通过程中报错是正常的关键是知道每个报错对应哪一层。下面按真实遇到的错误分类说。5.1 上传解析失败或技能不触发最常见的原因是 ZIP 结构不对。如果你压缩的是文件夹而不是三个文件解析会找不到SKILL.md。正确做法是选中三个文件直接压缩解压后应该直接看到三个文件而不是一个文件夹里套三个文件。另一个原因是SKILL.md的 YAML 头格式错误。---必须独占一行name和description的冒号后面要有空格。少一个空格都可能导致解析失败。5.2 401 与鉴权类报错如果你在配置过程中遇到 401通常是 API Key 或鉴权信息没配对。这里要区分Skill 本身的运行不依赖外部 API Key但如果你在 Skill 里调用了模型接口就需要正确配置。涉及模型调用时Base URL、API Key、Model ID 三件套要写全。以 TaoToken 为例Base URL 用https://taotoken.net/apiKey 在控制台生成Model ID 按你实际使用的模型填。三者缺一请求就会 401。5.3 local proxy failed 与网络类报错local proxy failed一般出现在 Skill 需要访问外部服务时。先确认你的网络环境能正常访问目标地址再检查脚本里的请求地址是否写错。如果是本地脚本纯文件操作像本篇的 save_prompt根本不会触发这类错误——这也是我推荐新手从这个技能入手的原因它不依赖网络排错面窄。5.4 reading choices 与返回解析错误reading choices这类报错通常出现在你解析模型返回结构时字段取错。模型返回一般是choices数组取choices[0].message.content。如果你直接取choices.content就会报错。写脚本时先把返回结构打印出来看一眼比猜字段快得多。5.5 OAuth 与登录态问题OAuth 报错多出现在需要授权登录的场景。确认你的 Trae AI 客户端登录态正常重新登录一次往往能解决。如果 Skill 里涉及第三方服务授权检查 token 是否过期。排查顺序建议先本地命令行跑脚本 → 再检查 ZIP 结构 → 再检查界面配置 → 最后看网络和鉴权。由内到外能省很多时间。6. 从 save_prompt 延伸把 Skill 用成你的 AI 工作流入口跑通 save_prompt 之后你其实已经掌握了 Trae AI Skills 的完整链路。接下来可以基于这个模板扩展把它变成更贴合自己习惯的工具。一个自然的延伸是分类保存。在main.py里加一个分类参数根据输入内容关键词判断存到prompt_code.md还是prompt_design.md。代码结构不用大改只是在写文件前多一个if判断文件名。另一个方向是去重。每次保存前先读一遍现有文件如果内容已存在就跳过并提示「已存在未重复保存」。这能避免你反复输入同一句话导致文件膨胀。如果你后续要接入模型能力比如让 Skill 自动把保存的提示词做摘要那就涉及 API 调用了。这时候 Base URL、API Key、Model ID 三件套要配好。TaoToken 的 API 地址是https://taotoken.net/apiKey 在控制台生成。配置类操作可以参考接入文档验证模型是否通可以用模型对话页面先测一句确认链路没问题再写进 Skill。对于想长期把 Skill 用于编码和 Agent 场景的人Coding Plan 更适合持续调用只是偶尔验证一下模型通不通用模型对话就够了。生成和管理 Key 在 API Keys 页面具体接入步骤看文档。回到技能本身它的价值不在于功能多复杂而在于让你亲手走通「定义规则 → 写脚本 → 上传 → 触发 → 落盘」这条链路。走通一次之后你再看到任何 Skill 需求脑子里都有清晰的实现路径。这才是这篇教程真正想给你的东西。