这两项是在使用AI辅助编程时必须了解的。是不是写提示词写的很烦,并且是很多重复的劳动?让custom_prompts和skills来帮忙。
一、自定义Prompts
它的作用就是把重复的提示词固定下来,下次直接加入到Codex的上下文。下面是实现步骤及用法。
1、创建prompts文件夹
Mac在~/.codex进入.codex文件夹,创建prompts文件夹,在prompts中就可以创建一个个Markdown固定提示词了。
2、编辑提示词
假如我们创建了一个figma_ui.md的文件,这个文件就是固定下来通过Figma MCP转换Android原生XML UI代码的提示词,那应该如何编辑figma_ui.md文件呢?是有固定格式的。
---
description: 使用Figma MCP生成Android 原生XML布局代码
argument-hint: [NOTE=]
---
这里就写固定下来的提示词...
NOTE就是可以插入内容的占位符,用的不多,看个人需求。
3、使用
编辑好后保存,输入/prompts就可以看到了,如果要追加NOTE内容就按Tab,不追加就按回车:
这样提示词就追加到了Codex的上下文。
二、编辑skills
skill是什么?skill其实是沉淀下来的一项项技能,比如项目中创建Activity,每个项目中肯定有一套固定下来创建Activity的代码,继承谁、实现什么函数等,全是模板代码,而这种固定的模板代码就可以抽取为一个个skill,注意skill是能力,不是模版。
skill的name和description会在codex启动时就加载进上下文,让codex知道具备哪些skill,而不是开始就直接把所有的skill提示词一起加载进上下文,这样可以节省Token,需要什么skill的时候就按需加载。
1、创建skills文件夹
在~/.codex进入.codex文件夹,创建skills文件夹,在skills文件夹中可以存放一个个skill.
2、编辑skill
还是以Figma UI来举例,在skills文件夹创建一个子文件夹,子文件夹名字是figma_ui_to_xml,然后在figma_ui_to_xml内创建一个Markdown文件,文件名是固定的SKILL.md。
这个文件的头部也是固定的name和description,用来暴露skill能力的名字和描述,注意这二个特别重要,因为skill一般是不会显示调用的,skill的能力能不能被调用到,就是看与name和description的匹配度,匹配度高AI认为需要使用这个skill, 就会把这个skill的提示词加载进上下文。
---
name: figma_ui_to_xml
description: Implement this Figma design。将Figma MCP链接转换为Android原生XML。
---
写提示
3、使用
隐式调用:方便快捷(推荐)。
比如在复制Figma MCP的链接会得到下面的内容:
Implement this Figma design.
@https://www.figma.com/design/Lod2RUq5wj3CaISqN4/FOXX-UI-library?node-id=43080-44486&m=dev
因为Implement this Figma design匹配到了figma_ui_to_xml的description的语句,所以会自动使用这个skill。而description中的Implement this Figma design正是为了匹配这个skill特意加上去的。所以后续使用只需要在Figma粘贴过来直接放进去就可以了,不需要再加任何修饰。
显示调用:直接,明确。
在codex中可以显示调用
三、prompts和skills该用谁?
一般情况下都推荐用skill,项目中的规范写法、一套一套的模版代码、各种能力都适合归纳为skill,然后让AI自动判断适合用哪个skill。
而prompt适合与项目没有强关联的,偶尔要问那么一次的,每次编辑都很麻烦的,就可以固定成自定义prompt。