VocabBuddy
从 0 打造一个语言学习小助手 Skill

这里我们从一个简单的需求出发,一步一步构建一个语言学习小组手 Skill.
需求
Skill 的出发点是一个明确的需求, 我们的需求是什么呢?
现在越来越多的人开始使用 AI 工具来跨越语言的障碍—查单词、查短语、翻译。
但如果直接问“tumble 是什么意思“, 返回内容可能并不是我们最期望的。比如可能会漏掉一些解释,或者输出结构杂乱,看起来不方便。
所以我一开始的需求是希望 Agent 严格按照一个指定格式输出。
由于这个 Skill 比较简单,我们全程手动操作。
先给这个 Skill 取一个名字,因为主要是针对单词、短语的学习助手,就叫 VocabBuddy 吧。
首先创建一个文件夹 VocabBuddy 作为 Skill 的项目文件夹,然后创建 SKILL.md 技能主体文件。
这里我们严格遵守 Skill 的命名规范,使用小写字母和连字符。
编写 SKILL.md
Frontmatter
---
name: vocab-buddy
---除了 name, description 也是必须的,因为这是 Agent 决定是否使用该技能的关键,我们必须说清楚在什么情况下要启用这个技能。
---
name: vocab-buddy
description: 单词查询和内容翻译的结构化呈现、固定搭配提取。在用户查询单词、短语和翻译时触发。
---正文
正文需要用简洁、无歧义的语言描述这个 Skill 做什么,怎么做。在第一版中,这个 Skill 做两件事:
- 格式化输出
- 从翻译中提取固定搭配
---
name: vocab-buddy
description: 单词查询和内容翻译的结构化呈现、固定搭配提取。在用户查询单词、短语和翻译时触发。
---
# VocabBuddy
## 查询单词和短语
当用户在查询单词和短语的时候,按下面的格式输出翻译内容:
```markdown
[单词]
1.[词性],[中文释义]
[例句]
[例句中文翻译]
```
如果有多个释义,每个释义都需要有独立的例句和例句中文翻译
## 翻译整段内容
当用户是在翻译整段内容时, 除了翻译采用地道的中文翻译整段内容,
还需要判断内容中是否存在固定短语搭配,如果存在,在翻译后列出这些固定短语搭配及其释义和例句。
输出格式如下
```markdown
[中文翻译]
## 固定短语
1.[固定短语]
[中文释义]
[例句]
[例句中文翻译]
```
如果有多个固定短语搭配,在“固定短语”区域依次陈列。好了,一个只包含 SKILL.md 的语言学习小组手 Skill 就完成了。
这里我们用扣子先试试效果, 在没有启用 Skill 的时候,输出大致是这样的,每次查询可能会稍有不同。

启用 Skill 后,我们得到的是一个稳定的,与我们期望一致的输出。

迭代
目前看起来还不错,有效果。 但如果仅仅是格式化一个输出,似乎帮助有限。 我希望每次查询后能将单词、短语保存到一个地方,方便自己回顾。
由于我们使用的是字节系产品扣子1,自然想到可以把这些内容保存到飞书的多维表格中。
先创建一个名叫 “VocabBuddy”的多维表格,表头包含:Vocabulary、释义、创建时间和熟悉度。

为了能准确拿到多维表格的 ID, 我们需要把多维表格的分享 URL 给扣子,让它帮我们把 table_id 找到,然后就可以在 SKILL.md 中把保存到生词本的逻辑加上了。
---
name: vocab-buddy
description: 单词查询和内容翻译的结构化呈现、固定搭配提取。在用户查询单词、短语和翻译时触发。
---
# VocabBuddy
## 查询单词和短语
当用户在查询单词和短语的时候,按下面的格式输出翻译内容:
```markdown
[单词]
1.[词性],[中文释义]
[例句]
[例句中文翻译]
```
如果有多个释义,每个释义都需要有独立的例句和例句中文翻译
## 翻译整段内容
当用户是在翻译整段内容时, 除了翻译采用地道的中文翻译整段内容,还需要判断内容中是否存在固定短语搭配,如果存在,在翻译后列出这些固定短语搭配及其释义和例句。
输出格式如下
```markdown
[中文翻译]
## 固定短语
1.[固定短语]
[中文释义]
[例句]
[例句中文翻译]
```
如果有多个固定短语搭配,在“固定短语”区域依次陈列。
## 保存查询记录
当查询单词和短语时, 单词和所有释义例句通过飞书CLI保存到飞书表格中;
当翻译整段内容,若内容中包含固定搭配,则将固定搭配和释义例句保存到飞书表格中。
飞书表格 ID 为:tbXXXXXXXXXX
字段对应:
vocab: 单词/短语/固定搭配
解释:所有释义和例句
创建时间:当前时间
熟悉度:默认为 1
一个单词/短语/固定搭配 对应多维表格中的一条数据, 若发现表格中已存在同样的单词/短语/固定搭配,则更新“熟悉度”列的值为 0
保存完成后输出:✅ [vocab]已保存至生词本因为同属字节系,扣子可以使用飞书的 CLI 2来操作多维表格,所以我们甚至不用写脚本。
现在我们每次查询单词和短语后,除了得到一个格式化的输出,还会在飞书表格中看到一条新的记录。

只需要一个 SKILL.md 说明技能的触发条件,操作步骤和输出格式,就能让 Agent 稳定地按照我们的预期去执行了。