Skip to content
cccskills
FreePublished on GitHub

PersonaLingo

个性化雅思口语语料生成器。纯 Agent 内闭环(问卷 → 引导对话 → 7 步蒸馏 → 个人画像 → 静态语料网站),零后端依赖,一键安装可用。需要题库自动同步 / RAG 检索可升级到 runnable-export 模式。

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (13)

  • SKILL.md7.7 KB
  • LICENSE1.0 KB
  • skill-assets/band-strategies.json4.3 KB
  • skill-assets/conversation-guide.md3.1 KB
  • skill-assets/corpus-schema.json11.0 KB
  • skill-assets/distill-protocol.md15.1 KB
  • skill-assets/fallback-patterns.json2.7 KB
  • skill-assets/fallback-topics.json3.1 KB
  • skill-assets/fallback-vocabulary.json5.8 KB
  • skill-assets/profile-template.md1.9 KB
  • skill-assets/questionnaire.json5.6 KB
  • skill-assets/site-template.html7.4 KB
  • skill.json4.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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)

  1. 读取 skill-assets/questionnaire.json。

  2. 按 ask_order: sequential、sections[].questions[] 的顺序逐题询问用户。

  3. required: true 的题目必须得到作答;其它题可由用户跳过(值写 null)。

  4. 所有作答合并为:

    {
      "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": "..." }
      }
    }
    
  5. 写入 corpus/<corpus_id>/answers.json。

Step 2 · 引导对话(Guided Conversation)

  1. 读取 skill-assets/conversation-guide.md。
  2. 按"追问原则"与"追问模板"发起 3–6 轮对话,每轮仅一个聚焦问题。
  3. 记录每轮对话到 corpus/<corpus_id>/dialogue.md(Markdown 格式,含时间戳)。
  4. 达到"结束条件"时在文件末追加 Summary(锚点事件 / 语言样本 / 弱项证据)。

Step 3 · 七步蒸馏(Distill)

  1. 加载 skill-assets/distill-protocol.md 与 skill-assets/band-strategies.json。
  2. 从 answers.json 读取 target_band,取出对应分数档策略块(若 8.0+ / 暂不考试 → 兜底用 7.5)。
  3. 串行执行 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[]
  4. 任一 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
  5. 合并写入 corpus/<corpus_id>/corpus.json,必须通过 skill-assets/corpus-schema.json 的 JSON Schema 校验。
  6. 将实际使用的 band 策略快照写入 corpus.band_strategy,供下游追溯。

Step 4 · 个人资料(Profile)

  1. 读取 skill-assets/profile-template.md。
  2. 用 corpus.json 的字段替换 {{ ... }} 占位符;数组字段按 {{#each}} 循环展开;缺失字段输出 —。
  3. 写入 corpus/<corpus_id>/profile.md。

Step 5 · 静态语料网站(Static Site)

  1. 读取 skill-assets/site-template.html。
  2. 同样用 corpus.json 字段填充模板,生成单文件 HTML(所有样式 inline,无构建依赖)。
  3. 写入 corpus/<corpus_id>/site/index.html。
  4. 用户直接 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-onlyRunnable 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
# 访问 http://localhost:5273 使用完整前端

详见项目 README.md。

Requirements

  • 任意支持该 skill 协议的 AI Agent(Claude / Qoder / Cursor / Cline 等)。
  • Agent 运行环境中可写本地文件的工具(用于产出 corpus/<corpus_id>/)。
  • 无需 Python / Node.js / 任何外部服务。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Report a problem with this skill