HomeBrowseUpload
← Back to registry
// Skill profile

中文语音面试模拟器

name: voice-interview-simulator

by cows21 · published 2026-03-22

API集成
Total installs
0
Stars
★ 0
Last updated
2026-03
// Install command
$ claw add gh:cows21/cows21-review-simulate
View on GitHub
// Full documentation

---

name: voice-interview-simulator

description: 进行中文求职语音模拟面试。适用于用户想围绕目标岗位进行多轮中文面试练习,并通过 ASR 识别回答、由 LLM 决定追问或换题、由 TTS 播报面试官问题,最终输出结构化评估报告、改进建议和示例优化回答的场景。支持 `target_role`、`interviewer_style`、`min_rounds`、`max_round_limit` 等配置;默认用于通用中文岗位面试,不依赖情绪识别、视频处理或其他额外音频算法。

---

# 中文语音面试模拟器

适用范围

此 Skill 用于完成一场可运行的中文求职模拟面试。

能力边界:

  • 仅依赖 `ASR`、`LLM`、`TTS`
  • 用户通过语音回答,系统作为单一面试官连续提问
  • 支持追问、换题、结束决策和最终总结报告
  • 不做:

  • 简历解析
  • 岗位知识库检索
  • 英文面试
  • 情绪识别、说话人分离、视频处理
  • 实时打断式流式语音对话
  • 默认配置

    若调用方未给完整配置,优先补齐以下默认值:

  • `target_role`: `通用求职者`
  • `interviewer_style`: `professional`
  • `language`: `zh-CN`
  • `min_rounds`: `4`
  • `max_round_limit`: `8`
  • 约束:

  • `max_round_limit` 必须大于等于 `min_rounds`
  • 未达到 `min_rounds` 前,除非用户明确要求结束,否则不要提前结束
  • 任意时候都不能超过 `max_round_limit`
  • 工作流

    按以下顺序执行:

    1. 初始化会话

    - 读取 `target_role`、`interviewer_style`、轮数限制和语言

    - 创建 `SessionState`

    2. 生成开场与第一问

    - 使用 LLM 生成 `opening_text`、`first_question`、`question_type`

    - 第一问优先从 `self_intro` 或 `motivation` 开始

    - 同一轮只问一个问题

    3. 播报问题

    - 将当前问题文本交给 TTS

    - 返回当前轮次、问题文本和问题语音

    4. 接收用户回答

    - 使用 ASR 将用户语音转成文本

    - 若 ASR 结果为空、过短或明显无效,礼貌要求用户补充,不进入正式评估

    5. 评估本轮回答

    - 从 `relevance`、`clarity`、`specificity`、`persuasiveness` 四个维度打分

    - 生成一条简短评语

    - 提炼回答缺口,例如“缺少个人贡献”“缺少结果数据”

    6. 决定下一步

    - 输出 `action` 为 `follow_up`、`new_question` 或 `end`

    - 达到 `min_rounds` 前,默认只允许 `follow_up` 或 `new_question`

    - 达到 `max_round_limit` 时必须结束

    - 若用户明确说“结束”“先到这里”,可直接结束

    7. 生成下一问或结束话术

    - `follow_up`:围绕上一轮回答中的缺口深挖

    - `new_question`:切换到未充分覆盖的问题类型

    - `end`:输出简短收束话术,并进入最终报告生成

    8. 生成最终报告

    - 汇总整场轮次记录和各轮评分

    - 输出结构化 `FinalReport`

    - 可选生成一段适合 TTS 播报的摘要

    问题类型

    优先在以下范围内控制问题分布,避免结构失衡:

  • `self_intro`
  • `motivation`
  • `project_experience`
  • `challenge`
  • `teamwork`
  • `strengths_weaknesses`
  • `career_plan`
  • `closing`
  • 使用规则:

  • 开场优先 `self_intro` 或 `motivation`
  • 中段重点覆盖 `project_experience`、`challenge`、`teamwork`
  • 若回答空泛,优先追问,不急于切换
  • 收束时可使用 `closing`
  • 风格约束

  • `friendly`:鼓励式、包容、引导型
  • `professional`:标准、客观、自然
  • `stress`:更尖锐、要求更具体,但不得冒犯或羞辱用户
  • 所有风格都要遵守:

  • 像真实中文面试官
  • 避免长篇说教
  • 每次只问一个问题
  • 问题长度适中,不要连续堆叠多个子问
  • 追问与切换规则

    优先追问的情况:

  • 提到项目但未说明个人职责
  • 提到结果但没有数据或事实支撑
  • 只有态度表述,没有实例
  • 声称掌握某项技能,但无法证明熟练度
  • 逻辑不完整,需要澄清
  • 优先切换新话题的情况:

  • 当前问题已经回答完整
  • 连续追问后信息增量很低
  • 当前主题覆盖已足够
  • 面试接近结束,需要补足其他维度
  • 输出要求

    每轮输出至少包含:

  • `round_id`
  • `question_type`
  • `interviewer_question`
  • `interviewer_audio` 或可用于生成语音的文本
  • `asr_text`
  • `evaluation`
  • `decision`
  • 结束时输出:

  • `closing_text`
  • `final_report`
  • 可选 `report_summary_tts_text`
  • 字段结构见 [references/state_schema_cn.md](references/state_schema_cn.md)。

    Prompt 使用方式

    不要用一个超长 Prompt 覆盖所有行为。拆成以下模块:

  • 开场与首问生成
  • 单轮评估
  • 继续/结束决策
  • 下一问生成
  • 最终报告生成
  • 推荐模板见 [references/prompts_cn.md](references/prompts_cn.md)。

    直接运行

    运行脚本:

  • `scripts/run_interview.py`
  • 安装依赖:

  • `pip install -r requirements.txt`
  • 环境变量参考:

  • [/.env.example](/mnt/cache/liudelong/cws/code6/openclaw-skill/review_simulate/.env.example)
  • 最小运行方式:

    python scripts/run_interview.py --target-role "算法工程师实习生" --style professional

    运行时行为:

  • 脚本先调用 LLM 生成开场和首问
  • 每轮可输入音频文件路径,调用 SenseAudio ASR 转写
  • 若临时没有音频,也可直接输入文本继续
  • 问题和总结默认调用 SenseAudio TTS,并把音频写到 `outputs/`
  • 最终完整结果写到 `outputs/final_report.json`
  • 接口约定:

  • LLM 默认读取 `INTERVIEW_LLM_API_KEY`,未提供时回退到 `IME_MODEL_API_KEY`
  • ASR/TTS 默认读取 `INTERVIEW_ASR_API_KEY` / `INTERVIEW_TTS_API_KEY`,未提供时回退到 `SENSEAUDIO_API_KEY`
  • 注意事项

  • 评分用于练习反馈,不用于真实招聘排名
  • 评语要具体、可执行,避免空泛夸奖
  • 结论必须基于用户实际回答,不要凭空补充经历
  • 当用户连续多轮无法给出有效回答时,可以礼貌收束
  • 最终报告里必须给出优势、问题、改进建议和一段更优示例回答
  • // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band