research-question-generator은(는) 무엇을 하나요?
이 스킬은 pool.json을 생성합니다: 각각 익명 ID를 가진 연구 질문 후보 목록으로, 근접 중복은 한 번씩 병합되고, 모든 질문이 동일한 평이한 스타일을 가지며 효과 방향을 명명하지 않도록 재작성됩니다. 다음 스킬들(screen-pilot, critique-forecast, check-novelty)은 이 파일을 입력으로 사용합니다.
먼저 필요한 것
- 분야 프로필(field profile): 이 패키지에서
field-profile/TEMPLATE.md를 복사하여 여러분의 분야에 맞게 작성하고 프로젝트에 저장합니다(기본적으로 프로젝트 루트에FIELD-PROFILE.md). 연구자가 그 내용(특히 분야, 파일럿이 실행될 대상, 파일럿 제한 사항, 답변을 알고 싶어할 사람)에 동의해야 합니다. 테스트된 프로필은field-profile/example-small-language-models.md입니다. - 이번 라운드의 작업 폴더(여기서는
RUN/이라고 함). - 각자의 컨텍스트를 가진 서브 에이전트. 모델을 선택할 수 있는 경우 각 생성기에 다른 모델을 사용하세요. 다른 제공자의 도구나 API를 통해 생성기를 실행하고 그 출력을 같은 형식으로 저장할 수도 있습니다.
단계
- 생성기 선택. 최소 세 개의 생성 모델을 각 모드(일반 및 원거리)에서 사용하여 각 모델이 두 개의 생성기를 실행하도록 합니다:
plain및distant. 테스트에서는 세 개의 Claude 모델(Opus 5.5, Fable 5.2, Sonnet 5.5)이 각 모드당 17개 질문을 작성했습니다. - 원거리 분야 할당. 잘 정립된 발견이 있는 원거리 분야 목록을 선택하고(테스트됨: 인지 심리학, 심리언어학, 행동 경제학, 생태학), 각 원거리 생성기에 하나씩 중복 없이 할당합니다:
python3 scripts/assign_fields.py SEED "field one;field two;..." NAME1 NAME2 NAME3. 시드와 출력을 기록합니다. - 브리프 작성.
python3 scripts/make_briefs.py FIELD-PROFILE.md RUN N NAME1:plain NAME1:distant:"FIELD" ...를 실행하여RUN/briefs/에 생성기별로 하나의 브리프를 작성합니다(짧은 헤더,prompts/plain.md또는prompts/distant.md의 모드 프롬프트, 그 다음prompts/constraints.md, 모두 프로필에서 채워짐) 및 출력 폴더를 생성합니다. - 생성기 실행. 브리프당 하나의 새 서브 에이전트를 시작하고, 해당 브리프의 모델을 사용하여 자신의 브리프만 읽고 따르도록 지시합니다. 예제 질문이나 다른 생성기의 출력을 보여주지 마세요. 각 에이전트는
candidates.json을 작성합니다(원거리 모드에서는transfers.md와 작업 목록도 작성되며, 기록용으로 보관되고 전달되지 않습니다). - 형식 확인.
python3 scripts/check_candidates.py N RUN/generation/*/*/candidates.json. 파일에 실패한 생성기가 있으면 한 번 수정을 요청하고 기록합니다. - 풀링 및 근접 중복 찾기.
python3 scripts/merge.py RUN/pool SEED plain:NAME1=RUN/generation/plain/NAME1/candidates.json distant:NAME1=... ...는 질문 텍스트만 유지하고 섞습니다.python3 scripts/candidate_pairs.py RUN/pool은 유사한 질문 쌍을 나열합니다. 테스트된 버전은nomic-embed-text를 통해 로컬 Ollama 서버로 질문을 임베딩하고 코사인 유사도가 0.83 이상인 쌍, 질문당 최대 5개의 최근접 이웃을 유지합니다. Ollama 없이--lexical을 추가하세요(테스트되지 않음: 단어 개수 유사성, 각 질문의 5개 최근접 이웃).
- 중복 판단.
prompts/dedup_judge.md를 프로필에서 채웁니다(python3 scripts/fill_prompt.py FIELD-PROFILE.md prompts/dedup_judge.md > RUN/pool/dedup_judge.md). 약 150쌍 이상이면 분할하고(python3 scripts/split_pairs.py RUN/pool 150), 각 배치를 새 판사에게 줍니다(테스트됨: Sonnet 5.5, 152쌍씩 4개 배치). 각 판사는 채워진 프롬프트와 자신의 배치만 읽고 결정을 작성합니다;python3 scripts/join_decisions.py RUN/pool decisions_1.json ...로 결합한 다음,python3 scripts/apply_merges.py RUN/pool로 클러스터를 병합하고to_rewrite.json을 작성합니다. - 재작성.
prompts/rewrite.md를 같은 방식으로 채우고,RUN/pool/to_rewrite.json과 함께 새 에이전트(테스트됨: Sonnet 5.5)에게 주어RUN/pool/rewritten.json을 작성하게 하며, 다른 파일은 읽지 않습니다. - 익명화.
python3 scripts/anonymise.py RUN/pool SEED는 모든 ID가 재작성되었는지 확인하고, 50단어 이상인 질문을 나열하며, 다시 섞고,RUN/pool/pool.json(ID Q01, Q02, ... 및 텍스트) 및RUN/pool/sources.json(각각이 어떤 생성기와 모드에서 왔는지)을 작성합니다. 비평가, 예측가, 파일럿 빌더 및 참신성 검사자에게는pool.json만 보여줍니다.
시드: 고정된 정수로, 단계 실행 전에 선택되고 기록됩니다.
테스트 결과
테스트(분야: 작은 공개 언어 모델의 관찰 가능한 행동)에서 12개 생성기가 약 3분 만에 204개 질문을 작성했습니다. 병합 후 168개가 남았습니다(18%는 근접 중복; 명시된 신뢰도가 정답과 오답을 구분한다는 아이디어 등 여러 생성기에서 나타남). 파일럿이 효과를 발견하고 문헌 검사가 같은 방향의 이전 보고를 찾지 못한 질문의 비율은 다음과 같습니다:
| 모드 | 새롭고 확인된 발견 |
|---|---|
| 일반 프롬프트 | 50개 중 14개 (28%) |
| 원거리 분야 전이 | 51개 중 14개 (27%) |
| 문제화(포함되지 않음) | 42개 중 6개 (14%) |
| 최근 초록의 갭 매핑(포함되지 않음) | 36개 중 3개 (8%) |
모드당 36~51개 질문으로 이러한 차이는 기술적입니다(동일 비율 검정, p = 0.054). 포함되지 않은 두 모드는 이 패키지 최상단의 NOT-RECOMMENDED.md에 문서화되어 있습니다.
파일
prompts/plain.md,prompts/distant.md: 생성 프롬프트.N은 질문 수로 대체됩니다; 다른 플레이스홀더는 분야 프로필에서 옵니다.prompts/constraints.md: 모든 생성기가 받는 제약 사항.prompts/dedup_judge.md,prompts/rewrite.md: 중복 판사 및 재작성기.scripts/:fill_prompt.py,make_briefs.py,assign_fields.py,check_candidates.py,merge.py,candidate_pairs.py,split_pairs.py,join_decisions.py,apply_merges.py,anonymise.py. 표준 라이브러리만 사용.