CommunityPesquisa e Análise de Dadosgithub.com

科研模拟面试(Research Mock Interview)

Sistema de simulação de entrevistas de pesquisa local, com backend LLM plugável. Ideal para preparação de mestrado, doutorado, defesas e apresentações.

O que é 科研模拟面试(Research Mock Interview)?

Este Skill Hermes oferece um sistema de simulação de entrevistas de pesquisa **local-first**, permitindo que candidatos pratiquem e recebam feedback estruturado sem depender de serviços online. Ele suporta seis cenários: preparação para mestrado (baoyan), candidatura a doutorado, entrevistas para cargos de pesquisa, defesas, reuniões de grupo e entrevistas para PhD no exterior. O sistema carrega o perfil real do candidato (currículo, projetos, artigos) e utiliza um backend LLM plugável (mock offline, Ollama local ou API em nuvem) para conduzir entrevistas simuladas com perguntas desafiadoras, bloqueios duros quando necessário, e geração de relatórios de avaliação, lista de pontos fracos e análise agregada. A privacidade é prioridade: todos os dados são armazenados localmente em SQLite, sem telemetria, e o usuário tem controle total sobre a exclusão dos dados. A partir da versão 1.1, o sistema também suporta modo de voz duplex plugável (STT/TTS) para uma experiência mais realista.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add Bin-H-17/research-mock-interview

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Pesquisa de Simulação de Entrevista (Research Mock Interview) Hermes Skill

1. O que é isso

Um sistema de simulação de entrevista de pesquisa local-first, entregue como um Hermes Skill. Ele lê o material de pesquisa real do candidato (currículo / projeto / artigo) e, para cenários como preparação para mestrado (baoyan), candidatura a doutorado, busca de emprego em pesquisa, defesa, reunião de grupo ou PhD no exterior, usa um backend LLM plugável para atuar como um examinador rigoroso, conduzindo uma simulação de entrevista em várias rodadas. Quando a resposta do candidato sobre o projeto/código é superficial, ele aciona perguntas de bloqueio duro, e no final produz uma pontuação + uma base de pontos fracos + um relatório de revisão.

1.1 Consistência com o plano de arquitetura (decisão bloqueada)

  • X1 Público-alvo: Todas as direções (preparação para mestrado/doutorado + versão leve para emprego), a base de perguntas v1 cobre seis cenários: preparação para mestrado/doutorado, emprego, defesa, reunião de grupo, PhD no exterior.
  • X2 Forma: Hermes Skill local + atração de tráfego via conteúdo público; este repositório é a skill em si.
  • X3 Voz: A v1.1 implementou "voz duplex plugável" — o mock offline sem dependências roda todo o pipeline; STT real (vosk/whisper) + TTS real (pyttsx3/edge-tts) são backends opcionais, todos carregados sob demanda (lazy loading); dependências ausentes geram erros explícitos em tempo de execução (não quebram o core sem dependências).
  • X4 Coleta via WeChat Official Accounts: Abandonada; esta Skill não coleta nenhuma fonte de conteúdo externa.
  • X5 Versão Python: Alvo 3.12, mínimo 3.11 (veja requirements.txt e §6).
  • Backend LLM plugável: Interface abstrata + mock (offline, zero dependências) / ollama (local, padrão) / cloud (BYOK, chave não armazenada em disco).
  • Material de inicialização a frio: Dados de exemplo desidentificados vêm primeiro (data/sample_profile.json), com entrada para importação de perfis reais (cli run --profile).
  • Regra de ouro de privacidade: Local, single-tenant, deletável, sem telemetria, sem saída do domínio; tenant_id=local; purge limpa todos os dados do owner com um clique.

2. Quando acionar

  • O usuário quer praticar / revisar entrevistas de pesquisa (preparação para mestrado/doutorado, emprego em pesquisa, defesa, reunião de grupo, PhD no exterior).
  • O usuário deseja fazer um teste de estresse "explique claramente, explique em detalhes" baseado em sua própria experiência de projeto.
  • O usuário precisa de um relatório de revisão estruturado e uma lista de pontos fracos consolidada.

3. Fluxo de trabalho (ordem de execução do proprietário/usuário)

Passo 1: Preparação do ambiente (único)

cd research-mock-interview
python --version            # Precisa ser >=3.11, recomendado 3.12
pip install -r requirements.txt   # Opcional: Só precisa do PyYAML se for usar config.yaml

Passo 2: Rodar a demonstração (funciona mesmo sem internet)

python src/cli.py run --demo

--demo usa o perfil de exemplo embutido + backend mock, e executa automaticamente o ciclo completo de "pergunta → resposta → bloqueio duro → pontuação → relatório de revisão", provando que o sistema funciona offline e os dados são armazenados localmente em SQLite.

Passo 3: Importar materiais reais

Organize seu currículo/projeto real em um JSON (consulte os campos de data/sample_profile.json) e execute:

python src/cli.py run --profile /caminho/para/seu_perfil.json --scenario 保研

Entre no modo interativo e responda rodada por rodada; digite /finish para encerrar e gerar o relatório, ou /quit para sair no meio (o registro é mantido).

Passo 4: Trocar o backend LLM (opcional)

Copie config.example.yaml para config.yaml e altere llm.backend para:

  • mock: Offline, zero dependências (padrão, adequado para demonstração / sem internet).
  • ollama: Backend de produção local padrão, preencha base_url / model (ex.: qwen2.5:7b).
  • cloud: API em nuvem (BYOK), a chave vem apenas de variáveis de ambiente (ex.: RMI_LLM_API_KEY), nunca hard-coded ou salva em disco.

Passo 5: Visualizar dados acumulados e direito de exclusão

python src/cli.py list          # Lista todas as entrevistas deste tenant
python src/cli.py report --id <primeiros 8 caracteres do session_id ou completo>   # Ver relatório de revisão
python src/cli.py weakness      # Ver lista de pontos fracos
python src/cli.py purge --yes   # Direito de exclusão do owner: limpa todos os dados locais deste tenant

Passo 6 (novo na v1.1): Modo de voz duplex (plugável)

# Autoteste offline: duplex mock, sem microfone/rede, provando que o pipeline de orquestração de voz está funcional
python src/cli.py run --demo --voice

# Conectar a voz real (precisa primeiro pip install das dependências opcionais correspondentes, veja requirements.txt)
# Copie config.example.yaml para config.yaml, defina voice.enabled=true ou adicione --voice ao executar,
# e altere o backend de voice.stt/tts para vosk/whisper/pyttsx3/edge, preenchendo o caminho do modelo.

Passo 7 (novo na v1.1): Análise agregada de pontos fracos entre cenários

python src/cli.py analyze                 # Agregação de todos os cenários
python src/cli.py analyze --scenario 保研   # Apenas um cenário específico
python src/cli.py analyze --out report.md  # Exportar relatório em Markdown

Dimensões de agregação: distribuição por categoria, distribuição por gravidade, tendência entre cenários (melhora/piora/estável), pontos fracos recorrentes (≥2 vezes) e recomendações de ação.

4. Responsabilidades dos módulos (src/)

  • llm_backend.py: Abstração LLMBackend + MockBackend / OllamaBackend / CloudBackend, fábrica from_config(cfg) para alternar conforme configuração.
  • storage.py: Store encapsula persistência local SQLite, isolamento de escopo do tenant, purge_owner() implementa o ciclo de direito de exclusão.
  • interview_engine.py: InterviewSession conduz o ciclo "importar → perguntar → bloqueio duro → pontuar → base de pontos fracos → relatório de revisão".
  • voice_io.py (v1.1): STTProvider / TTSProvider / DuplexVoice para voz plugável; mock offline sem dependências, backends reais com lazy loading + guarda de dependências ausentes.
  • analytics.py (v1.1): aggregate_weaknesses / render_aggregate_report para agregação de pontos fracos entre cenários (apenas bibliotecas padrão).
  • cli.py: Ponto de entrada argparse (run / list / report / weakness / purge / analyze, run suporta --voice).

5. Disciplinas de design (não podem ser violadas)

  1. Não sair do domínio: Todos os dados ficam apenas no SQLite local; o backend cloud envia apenas o texto da entrevista para a API configurada pelo usuário, e a chave vem apenas de variáveis de ambiente.
  2. Sem telemetria: Não coleta, não reporta nenhum comportamento de uso.
  3. Deletável: data_dir pode ser excluído completamente; purge fornece limpeza programática com um clique.
  4. Backend plugável: O código de negócio depende apenas da abstração LLMBackend; adicionar um novo backend requer apenas implementar generate().
  5. Amigável para inicialização a frio: Dados de exemplo garantem funcionamento imediato; materiais reais são importados via --profile, com formato compatível com versões anteriores.

6. Ambiente de execução

  • Alvo Python 3.12; mínimo 3.11 (veja comentários em requirements.txt).
  • Dependências principais apenas da biblioteca padrão; PyYAML é opcional (necessário apenas ao usar config.yaml).
  • Voz é aprimoramento opcional: O core ainda tem zero dependências de terceiros obrigatórias; dependências de STT/TTS reais só são necessárias ao ativar a voz e escolher um mecanismo real (veja comentários em requirements.txt).

Habilidades Relacionadas