Skill: cows21/review-simulate (version 1.0.0)

--- 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) 最小运行方式： ```bash 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` ## 注意事项 - 评分用于练习反馈，不用于真实招聘排名 - 评语要具体、可执行，避免空泛夸奖 - 结论必须基于用户实际回答，不要凭空补充经历 - 当用户连续多轮无法给出有效回答时，可以礼貌收束 - 最终报告里必须给出优势、问题、改进建议和一段更优示例回答


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)