review simulate
进行中文求职语音模拟面试。适用于用户想围绕目标岗位进行多轮中文面试练习,并通过 ASR 识别回答、由 LLM 决定追问或换题、由 TTS 播报面试官问题,最终输出结构化评估报告、改进建议和示例优化回答的场景。支持 `target_role`、`interviewer_style`、`min_rounds`、`ma...
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 0 · 83 · 0 current installs · 0 all-time installs
by@cows21
MIT-0
Security Scan
OpenClaw
Suspicious
high confidencePurpose & Capability
The skill claims to be a Chinese voice interview simulator (ASR + LLM + TTS), which matches the code. However the registry metadata declared no required environment variables or credentials, while the script clearly requires LLM, ASR and TTS API keys and has defaults pointing to third‑party services (models.audiozen.cn and api.senseaudio.cn). Declaring no creds in metadata is inconsistent with the actual needs.
Instruction Scope
SKILL.md and prompts describe only ASR, LLM, and TTS usage and the runtime flow matches the code. The script will send user audio and generated text to external HTTP endpoints (LLM/ASR/TTS) and writes outputs (audio files and outputs/final_report.json) to a local outputs/ directory. The instructions reference a .env.example path that appears to be from a different workspace (/mnt/cache/...), which is odd but not directly harmful. There is no code-level attempt to read unrelated system files beyond .env in skill or cwd, but network transmission of audio/text is inherent to functionality.
Install Mechanism
This is instruction-only for the platform (no install spec). Included files list a requirements.txt (openai, requests, python-dotenv) which is a standard minimal Python dependency list. There are no high-risk download URLs or archive extracts. Running will install typical Python packages if the user chooses to pip install.
Credentials
The registry says no required env vars, yet the code uses and enforces INTERVIEW_LLM_API_KEY / IME_MODEL_API_KEY, INTERVIEW_ASR_API_KEY / SENSEAUDIO_API_KEY, and INTERVIEW_TTS_API_KEY / SENSEAUDIO_API_KEY. The script will SystemExit if required keys are missing. The code also loads .env files from the skill directory and the current working directory, which can cause it to pick up unrelated secrets if present. The use of fallback env names (IME_MODEL_API_KEY, SENSEAUDIO_API_KEY) implies reuse of potentially broader-scope credentials — the manifest should have declared these.
Persistence & Privilege
The skill does not request always:true, does not modify other skills, and does not require special OS privileges. It writes output into its own outputs/ folder; that behavior is expected for a local-run script.
What to consider before installing
Before installing or running this skill, consider the following:
- The metadata claims no credentials, but the script requires API keys for an LLM and for ASR/TTS; you will need to provide INTERVIEW_LLM_API_KEY (or IME_MODEL_API_KEY) and INTERVIEW_ASR_API_KEY / INTERVIEW_TTS_API_KEY (or SENSEAUDIO_API_KEY). The skill will exit if those keys are missing.
- The default endpoints in code point to models.audiozen.cn and api.senseaudio.cn — if you don't recognize those services, verify their privacy and billing policies before supplying keys or use your own endpoints/keys.
- The script uploads audio and text to external services (ASR/TTS/LLM). If you will be processing sensitive audio (personal data, interviews containing private info), avoid sending it to third parties or sanitize it first.
- The script loads .env from the skill directory and the current working directory; be careful that running it in a directory with other .env files doesn't leak unrelated secrets. Inspect the .env.example referenced in SKILL.md (the path in the doc looks like another workspace) and confirm it is appropriate.
- If you want to audit behavior, review the full scripts/run_interview.py to confirm no unexpected network calls beyond the three service endpoints and to confirm where outputs are written (outputs/final_report.json and audio files).
- If you prefer not to use external services, modify the code to use local/text-only mode (the script supports typing text instead of audio) or substitute endpoints with services you control.
Given the clear manifest vs code mismatch about required credentials, treat this skill as suspicious until you confirm the endpoints and provide only credentials you are comfortable using with those services.Like a lobster shell, security has layers — review code before you run it.
Current versionv1.0.0
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
中文语音面试模拟器
适用范围
此 Skill 用于完成一场可运行的中文求职模拟面试。
能力边界:
- 仅依赖
ASR、LLM、TTS - 用户通过语音回答,系统作为单一面试官连续提问
- 支持追问、换题、结束决策和最终总结报告
不做:
- 简历解析
- 岗位知识库检索
- 英文面试
- 情绪识别、说话人分离、视频处理
- 实时打断式流式语音对话
默认配置
若调用方未给完整配置,优先补齐以下默认值:
target_role:通用求职者interviewer_style:professionallanguage:zh-CNmin_rounds:4max_round_limit:8
约束:
max_round_limit必须大于等于min_rounds- 未达到
min_rounds前,除非用户明确要求结束,否则不要提前结束 - 任意时候都不能超过
max_round_limit
工作流
按以下顺序执行:
-
初始化会话
- 读取
target_role、interviewer_style、轮数限制和语言 - 创建
SessionState
- 读取
-
生成开场与第一问
- 使用 LLM 生成
opening_text、first_question、question_type - 第一问优先从
self_intro或motivation开始 - 同一轮只问一个问题
- 使用 LLM 生成
-
播报问题
- 将当前问题文本交给 TTS
- 返回当前轮次、问题文本和问题语音
-
接收用户回答
- 使用 ASR 将用户语音转成文本
- 若 ASR 结果为空、过短或明显无效,礼貌要求用户补充,不进入正式评估
-
评估本轮回答
- 从
relevance、clarity、specificity、persuasiveness四个维度打分 - 生成一条简短评语
- 提炼回答缺口,例如“缺少个人贡献”“缺少结果数据”
- 从
-
决定下一步
- 输出
action为follow_up、new_question或end - 达到
min_rounds前,默认只允许follow_up或new_question - 达到
max_round_limit时必须结束 - 若用户明确说“结束”“先到这里”,可直接结束
- 输出
-
生成下一问或结束话术
follow_up:围绕上一轮回答中的缺口深挖new_question:切换到未充分覆盖的问题类型end:输出简短收束话术,并进入最终报告生成
-
生成最终报告
- 汇总整场轮次记录和各轮评分
- 输出结构化
FinalReport - 可选生成一段适合 TTS 播报的摘要
问题类型
优先在以下范围内控制问题分布,避免结构失衡:
self_intromotivationproject_experiencechallengeteamworkstrengths_weaknessescareer_planclosing
使用规则:
- 开场优先
self_intro或motivation - 中段重点覆盖
project_experience、challenge、teamwork - 若回答空泛,优先追问,不急于切换
- 收束时可使用
closing
风格约束
friendly:鼓励式、包容、引导型professional:标准、客观、自然stress:更尖锐、要求更具体,但不得冒犯或羞辱用户
所有风格都要遵守:
- 像真实中文面试官
- 避免长篇说教
- 每次只问一个问题
- 问题长度适中,不要连续堆叠多个子问
追问与切换规则
优先追问的情况:
- 提到项目但未说明个人职责
- 提到结果但没有数据或事实支撑
- 只有态度表述,没有实例
- 声称掌握某项技能,但无法证明熟练度
- 逻辑不完整,需要澄清
优先切换新话题的情况:
- 当前问题已经回答完整
- 连续追问后信息增量很低
- 当前主题覆盖已足够
- 面试接近结束,需要补足其他维度
输出要求
每轮输出至少包含:
round_idquestion_typeinterviewer_questioninterviewer_audio或可用于生成语音的文本asr_textevaluationdecision
结束时输出:
closing_textfinal_report- 可选
report_summary_tts_text
字段结构见 references/state_schema_cn.md。
Prompt 使用方式
不要用一个超长 Prompt 覆盖所有行为。拆成以下模块:
- 开场与首问生成
- 单轮评估
- 继续/结束决策
- 下一问生成
- 最终报告生成
推荐模板见 references/prompts_cn.md。
直接运行
运行脚本:
scripts/run_interview.py
安装依赖:
pip install -r requirements.txt
环境变量参考:
最小运行方式:
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
注意事项
- 评分用于练习反馈,不用于真实招聘排名
- 评语要具体、可执行,避免空泛夸奖
- 结论必须基于用户实际回答,不要凭空补充经历
- 当用户连续多轮无法给出有效回答时,可以礼貌收束
- 最终报告里必须给出优势、问题、改进建议和一段更优示例回答
Files
6 totalSelect a file
Select a file to preview.
Comments
Loading comments…
