| name | PersonaLingo |
| description | 个性化雅思口语语料生成器。纯 Agent 内闭环(问卷 → 引导对话 → 7 步蒸馏 → 个人画像 → 静态语料网站),零后端依赖,一键安装可用。需要题库自动同步 / RAG 检索可升级到 runnable-export 模式。 |
| version | 3.1.0 |
| entry | SKILL.md |
| mode | install-only |
PersonaLingo Skill · Install-only
一键安装,零后端依赖。Agent 在本地完成「问卷 → 引导对话 → 蒸馏画像 → 个人资料 → 静态语料网站」全链路。
Installation
npx skills add orzcls/PersonaLingo
安装产物(CLI 自动发现仓库里的 skills/personalingo/ 子目录,仅复制该子目录内容;不会拉 backend/frontend/docs):
.agents/skills/personalingo/
├── SKILL.md
├── skill.json
└── skill-assets/
├── questionnaire.json # 问卷 Schema
├── conversation-guide.md # 引导对话规则
├── distill-protocol.md # 7 步蒸馏 prompt 协议
├── corpus-schema.json # corpus.json 校验 schema(与后端 models/corpus.py 等价)
├── profile-template.md # 个人资料模板
├── site-template.html # 静态网站模板
├── band-strategies.json # 分数段策略(与后端 band_strategies.json 一致)
├── fallback-topics.json # Stage 5 降级题库(20 话题)
├── fallback-vocabulary.json # Stage 6 降级词表(按 band 分档)
└── fallback-patterns.json # Stage 7 降级句型(8 条通用模板)
不会再复制 backend/ / frontend/ / docs/ 等项目代码。
运行时目录
Agent 每次为新学习者创建独立工作区:
corpus/<corpus_id>/
├── answers.json # Step 1 问卷作答
├── dialogue.md # Step 2 引导对话日志
├── corpus.json # Step 3 蒸馏产物(符合 corpus-schema.json)
├── profile.md # Step 4 个人资料
└── site/
└── index.html # Step 5 静态语料网站
<corpus_id> 建议用 p_ + 8 位十六进制随机数(例:p_0a1b2c3d)。
Pipeline · 五步闭环
Step 1 · 问卷(Questionnaire)
-
读取 skill-assets/questionnaire.json。
-
按 ask_order: sequential、sections[].questions[] 的顺序逐题询问用户。
-
required: true 的题目必须得到作答;其它题可由用户跳过(值写 null)。
-
所有作答合并为:
{
"corpus_id": "p_0a1b2c3d",
"created_at": "2026-05-11T10:00:00Z",
"answers": {
"goal": { "target_band": "7.0", "exam_window": "1-3 个月", "current_band": "6.0" },
"persona": { "mbti": "INTJ", "communication_style": ["逻辑结构化"], "self_description": "..." },
"experiences": { "people": [...], "objects": [...], "places": [...], "events": [...] },
"interests": { "interests": ["科技/编程"], "expertise": "..." },
"weaknesses": { "weak_areas": ["句型单一"], "recurring_mistakes": "..." }
}
}
-
写入 corpus/<corpus_id>/answers.json。
Step 2 · 引导对话(Guided Conversation)
- 读取 skill-assets/conversation-guide.md。
- 按"追问原则"与"追问模板"发起 3–6 轮对话,每轮仅一个聚焦问题。
- 记录每轮对话到
corpus/<corpus_id>/dialogue.md(Markdown 格式,含时间戳)。
- 达到"结束条件"时在文件末追加
Summary(锚点事件 / 语言样本 / 弱项证据)。
Step 3 · 七步蒸馏(Distill)
- 加载 skill-assets/distill-protocol.md 与 skill-assets/band-strategies.json。
- 从
answers.json 读取 target_band,取出对应分数档策略块(若 8.0+ / 暂不考试 → 兜底用 7.5)。
- 串行执行 7 个 Stage 的 LLM Prompt,Stage 3-7 的 system prompt 必须注入 band_strategy 块(与后端
corpus_generator.py 等价):
research → learner_profile(background / goal_vector / weakness_signals / language_samples / topic_signals / source_stats)
framework → capability_framework(source / dimensions / pain_points / lift_paths)
persona → persona(mbti / dimensions / communication_style)
anchors → anchors[]
bridges → bridges[]
vocabulary → vocabulary[]
patterns → patterns[]
- 任一 Stage 失败按 protocol 的「降级策略」处理:Agent 必须在
skill_manifest.stages[i] 写 status="fallback" + source + note,并依次调用对应 fallback 资产:
- Stage 5 降级 →
skill-assets/fallback-topics.json
- Stage 6 降级 →
skill-assets/fallback-vocabulary.json(按 target_band ± 0.5 筛选)
- Stage 7 降级 →
skill-assets/fallback-patterns.json
- 合并写入
corpus/<corpus_id>/corpus.json,必须通过 skill-assets/corpus-schema.json 的 JSON Schema 校验。
- 将实际使用的 band 策略快照写入
corpus.band_strategy,供下游追溯。
Step 4 · 个人资料(Profile)
- 读取 skill-assets/profile-template.md。
- 用
corpus.json 的字段替换 {{ ... }} 占位符;数组字段按 {{#each}} 循环展开;缺失字段输出 —。
- 写入
corpus/<corpus_id>/profile.md。
Step 5 · 静态语料网站(Static Site)
- 读取 skill-assets/site-template.html。
- 同样用
corpus.json 字段填充模板,生成单文件 HTML(所有样式 inline,无构建依赖)。
- 写入
corpus/<corpus_id>/site/index.html。
- 用户直接
open site/index.html 即可浏览个人语料站点。
质量守则
- 真实性优先:锚点故事、词汇例句必须来自问卷 + 对话的真实素材,禁止虚构。
- 架构等价:install-only 产出的
corpus.json 必须与 runnable-export 同 schema(见 skill.json.install_only.schema_alignment),下游 Agent 可用统一逻辑读两种模式的结果。
- Schema 严格:
corpus.json 必须通过 corpus-schema.json 校验;不符字段直接丢弃并在 stages[i].note 记录原因。
- Band 注入:Stage 3-7 没有注入 band_strategy 等于没在蒸馏——产物会偏离目标分数档。
- 本地化:所有产物写到当前工作目录的
corpus/<corpus_id>/,不上传任何远程服务。
- 可复跑:每一步都以前序产物为唯一输入;任何一步可单独重跑而不影响其它步骤。
升级路径 — Runnable Export 模式
若学习者需要以下能力,建议升级到完整 orzcls/PersonaLingo 项目:
| 能力 | Install-only | Runnable Export |
|---|
| 问卷 / 对话 / 蒸馏 | Agent 内闭环 | 后端 API 驱动 + 前端 UI |
| 动态 IELTS 题库同步 | 否 | 支持季度自动同步 |
| QMD RAG 检索引擎 | 否 | BM25+TF-IDF+RRF+LLM 重排 |
| 对话风格学习持久化 | 否(单次会话) | SQLite 持久化 |
| 可运行 Skill 包导出 | 否(本地产物可手动打包) | /api/distill/skill/{id}/runnable/download |
升级方式:
git clone https://github.com/orzcls/PersonaLingo
cd PersonaLingo && docker-compose up -d
详见项目 README.md。
Requirements
- 任意支持该 skill 协议的 AI Agent(Claude / Qoder / Cursor / Cline 等)。
- Agent 运行环境中可写本地文件的工具(用于产出
corpus/<corpus_id>/)。
- 无需 Python / Node.js / 任何外部服务。