멀티에이전트 투자위원회 구성하기
앞 유닛에서 만든 주문 루프는 "오늘 사야 하나"에 답합니다. 조건표 다섯 줄이 근거이고, 같은 입력이면 같은 답이 나옵니다.
그런데 이 루프에 물어볼 수 없는 질문이 하나 있습니다. 무엇을 살까. 조건표는 오늘 살지 말지를 정해 주지만, 조건표 자체를 바꿀지는 정해 주지 못합니다. 근거가 여러 갈래고, 어느 갈래를 중요하게 볼지가 사람마다 다르기 때문입니다.
이번 유닛에서는 답을 하나로 억지로 정하지 않습니다. 서로 다른 관점을 가진 에이전트들이 같은 자료를 놓고 심의하게 만들고, 마지막 선택만 사람이 합니다.
💡 사전 요구사항: 분할매수 규칙을 백테스트로 검사하기와 크론으로 매일 자동 주문 돌리기를 먼저 진행하세요. 이번 회의의 안건 문서에 그 결과와 현재 포지션을 옮겨 적습니다.

규칙으로 풀리는 질문과 심의가 필요한 질문
두 질문은 성격이 다르고, 그래서 필요한 구조도 다릅니다.
| 주문 루프 (8.4) | 투자위원회 (8.5) | |
|---|---|---|
| 질문 | 오늘 사야 하나 | 무엇을 살까 |
| 근거 | 조건표 다섯 줄 | 여러 관점의 토론 |
| 재현성 | 같은 입력이면 같은 답 | 매번 똑같은 문장이 나오지 않음 |
| 사람의 역할 | 집행 승인 | 최종 선택 |
| 산출물 | 주문 기록 | 심의 보고서 |
어느 쪽이 더 낫다는 뜻이 아닙니다. 질문이 다르니 구조가 달라지고, 어느 쪽으로 만들지 고르는 것이 오너가 하는 일입니다.
1단계. 회의 도구 설치와 확인
여러 에이전트를 토론하게 만드는 플러그인을 씁니다. 여러 모델에게 같은 질문을 뿌리고 답을 합치는 방식과는 다릅니다. 그 방식은 답이 나란히 쌓일 뿐, 서로의 답을 읽지 않으니 반대 의견이 부딪히지 않습니다.
이 플러그인은 회의를 돌립니다. 발언자가 앞사람 기록을 전부 읽고 말하므로 반박이 가능하고, 의장이 다음 발언자와 종료 시점을 정합니다.
의장을 맡을 프로필에만 설치합니다. 패널 프로필에는 필요 없습니다.
hermes -p sophie plugins install dandacompany/hermes-council --enable
hermes -p sophie plugins list
목록의 council 행에서 버전이 0.13.0 이상이고 enabled면 성공입니다.
⚠️ 설치할 때는 저장소 경로를, 제거하거나 설정을 바꿀 때는 플러그인 이름인 council을 씁니다. 헷갈리기 쉽지만 Hermes 플러그인의 정상 규약입니다.
이어서 진단을 돌립니다.
hermes -p sophie council doctor
네 항목이 통과하면 준비된 것입니다. 플러그인 활성, 게이트웨이 실행, 칸반 도달, 기록 폴더 쓰기입니다.
⚠️ 비대화형 셸에서 실행 파일을 못 찾는다는 오류가 나면
export PATH="$HOME/.local/bin:$PATH"를 먼저 실행하세요.
실제 안건 전에 두 줄짜리 임시 안건으로 한 바퀴 돌려 보는 것을 권합니다. 회의 생성, 상태 확인, 보고서 수집까지 끊기지 않으면 본 안건으로 가도 됩니다.

2단계. 안건 문서는 사람이 채웁니다
회의에 넣을 입력을 먼저 만듭니다. 일곱 칸이 있습니다.
① 오늘 결정할 것
② 백테스트 결과와 검증 상태
③ 상품 분석 상태
④ 현재 포지션과 한도
⑤ 아직 확인하지 못한 것
⑥ 패널에게 던질 질문
⑦ 권장 기본 결론
이 일곱 칸에 무엇을 넣을지는 사람이 정합니다. 에이전트가 값을 만들어 채우지 않습니다. 무엇을 근거로 볼지 고르는 것이 사람의 일이기 때문입니다.
저장소를 최신으로 받고 파일을 확인합니다.
git pull --ff-only
ls briefs/
파일이 둘 보입니다. 빈 템플릿과, 실습 값으로 끝까지 채워 둔 완성 예시입니다. 채우는 길은 셋입니다.
- 빈 템플릿을 복사해 직접 채운다
- 에이전트에게 값을 불러 주고 받아 적게 한다
- 완성 예시를 복사해 값만 자기 것으로 바꾼다
cp briefs/council-brief-example.md briefs/council-brief.md
⚠️
mv가 아니라cp를 쓰세요. 옮겨 버리면 원본이 사라져 다시 참고할 수 없습니다.
없는 수치는 추정하지 않습니다. 비어 있는 칸은 비어 있다고 적습니다. 이것이 이 문서의 규칙입니다. 값을 지어 넣으면 회의가 그 위에서 논의하게 되고, 결론까지 그 위에 쌓입니다.
⚠️ 예시의 수치는 실습 데이터입니다. 자기 백테스트 결과와 잔고로 바꾸지 않으면 회의가 남의 숫자를 심의하게 됩니다.
문서 맨 위의 고지 문장은 지우지 않습니다. 이 회의가 모의투자 실습 계좌 운영 결정이며 투자 권유가 아니라는 내용이고, 보고서에도 그대로 남습니다.

3단계. 반대할 사람을 미리 정합니다
누가 어떤 눈으로 볼지 정합니다.
| 역할 | 보는 것 |
|---|---|
| 패널 1 | 데이터가 말하는 것. 안건 문서의 수치와 그 검증 상태 |
| 패널 2 | 상품의 성격과 위험. 문서에 적힌 구조와 비어 있는 항목 |
| 패널 3 | 반대편. 사지 말아야 할 이유를 찾고 다른 패널을 반박 |
| 의장 | 회의록 전체를 읽고 쟁점을 좁혀 사람에게 넘길 선택지 구성 |
관점은 패널에게만 배정합니다. 의장은 관점을 받지 않습니다.
반대할 사람을 미리 정해 두지 않으면 회의가 동의 쪽으로 그냥 수렴해 버리기 쉽습니다. 그래서 반대를 역할로 고정합니다.
세 관점 모두 안건 문서 안에서만 근거를 찾도록 적습니다. 회의 중에 각자 밖에서 자료를 찾아오면 패널마다 근거의 시점이 달라져, 같은 문서를 읽고 논의한다는 전제가 깨집니다.
4단계. 예행으로 먼저 확인합니다
여기서부터는 터미널 명령이 아니라 의장 프로필에게 말로 시킵니다. 터미널, 슬랙, 디스코드 등 편한 인터페이스 어디서든 됩니다.
~/.hermes/workspace/magma-finance-lab/briefs/council-brief.md 를 안건으로 투자위원회를 열어줘.
패널은 에이다·올리버·노아, 의장은 너야. 한 명씩 순서대로 말하게 하고 최대 세 턴까지만.
관점은 이렇게 나눠줘.
- 에이다: 데이터가 말하는 것 — 안건 문서의 시세·지표·백테스트 결과와 그 검증 상태
- 올리버: 상품 성격과 위험 — 안건 문서에 적힌 상품 구조와 비어 있는 항목
- 노아: 반대편에 서기 — 사지 말아야 할 이유를 찾고 다른 패널 발언을 반박
회의 중에 밖에서 새 자료를 찾지는 마.
결론을 내기 전에 반드시 나한테 물어봐.
먼저 예행으로 어떻게 열릴지만 보여줘.
💡 메신저에는 "현재 폴더"가 없습니다. 그래서 안건 문서를 전체 경로로 적습니다. 터미널에서는 지금 어느 폴더에 있는지가 정해져 있지만, 메신저로 부를 때는 그 기준이 없습니다.
예행 결과에서 여섯 가지를 확인합니다.
| 볼 것 | 응답에서 |
|---|---|
| 패널 세 명 | 프로필 이름으로 제대로 옮겨졌는가 |
| 관점 세 개 | 셋 다 잡혔는가 |
| 턴 제한 | 정한 숫자와 같은가 |
| 안건 문서 | 읽혔는가 |
| 결론 전에 묻기 | 켜졌는가 |
| 중계 대상 | 어느 채널로 갈지 표시되는가 |
"결론을 내기 전에 반드시 나한테 물어봐"가 사람 결정 게이트를 여는 지시입니다. 이 한 줄이 없으면 회의가 사람을 부르지 않고 결론까지 가 버립니다.
💡 예행은 회의도 보드도 카드도 만들지 않습니다. 값이 어긋나면 문장을 고쳐 몇 번이든 다시 돌려도 흔적이 남지 않습니다.
확인이 끝났으면 그대로 엽니다.
좋아, 이대로 열어줘.
5단계. 회의가 도는 것을 봅니다
발언은 요청한 채널로 그대로 중계됩니다. 따로 지시하지 않아도 기본으로 켜집니다. 칸반 대시보드에서 카드가 도는 것도 함께 볼 수 있습니다.
회의 상태 알려줘. 지금 어느 발언까지 왔는지, 카드가 어떻게 도는지 짧게.
여기서 이 구조의 핵심이 보입니다. 모든 프로필이 회의 전체를 읽고 발언합니다. 자기 카드에 적힌 단편적인 지시만 보는 것이 아니라, 앞사람들의 발언이 누적된 맥락 위에서 말합니다. 그래서 반박이 성립합니다.
⚠️ 회의 참여 프로필의 승인 모드가 수동이면 카드가 승인 대기에 걸려 멈출 수 있습니다. 백그라운드에서 도는 카드라 승인을 물을 사람이 화면 앞에 없기 때문입니다. 막히면 그 프로필의 승인 요청을 처리하고 카드를 다시 진행시키세요.
6단계. 사람이 결정합니다
패널 발언이 끝나면 의장이 쟁점을 좁혀 선택지를 만들고 회의를 멈춥니다.
사람 결정 대기 상태인지 확인하고, 의장이 올린 질문과 선택지를 그대로 보여줘.
선택지의 근거를 회의록과 요약에서 읽고 결정합니다. 화면에 표시된 문구를 그대로 쓰고, 뒤에 이유를 한 문장 붙입니다.
추가 검증으로 결정할게. 이유는 검증 게이트 두 개가 아직 닫히지 않았기 때문이야.
결론은 채택, 보류, 추가 검증 중 하나입니다. 근거가 부족하면 보류가 정식 결론입니다. 결정을 미루는 것이 아니라, 지금 증거로는 여기까지라고 적는 것입니다.
💡 패널이 같은 결론으로 일찍 수렴하면 회의가 남은 발언을 건너뛸 수 있습니다. 아직 듣지 못한 관점이 있다면 결정하기 전에 "그 발언까지 듣고 결정할게"라고 요청하세요. 자동으로 수렴한 것을 사람이 되돌리는 것도 오너의 일입니다.
7단계. 결정이 문서로 남습니다
회의 보고서를 내보내줘. reports/council 폴더에도 사본을 남겨줘.
네 종류가 나옵니다.
| 문서 | 쓰임 |
|---|---|
| 요약 | 결정하기 전에 읽는 문서 |
| 결론 보고서 | 회의가 무엇을 정했는지 |
| 결정 기록 | 결정·할 일·아직 안 풀린 질문 |
| 전체 회의록 | 왜 그렇게 정했는지가 발언 단위로 |
이 결정은 다음 아침 루프에 자동으로 반영되지 않습니다. 사람이 새 주문 기안을 검토해 만들 때 참고하는 입력입니다. 그래서 나중에 "그때 왜 그렇게 정했지"를 추적할 수 있습니다.
회의가 끝난 뒤 액션 플랜을 이어서 요청하면 다음 사이클 설계에 바로 쓸 수 있습니다.
자주 만나는 문제
| 증상 | 원인 | 해결 |
|---|---|---|
| 회의가 사람을 안 부르고 끝난다 | 결정 게이트 지시가 빠졌다 | 예행 결과에서 그 값이 켜졌는지 먼저 확인 |
| 패널이 안건에 없는 값을 말한다 | 문서의 대괄호가 안 채워졌다 | 자리표시자가 남아 있는지 확인하고 다시 열기 |
| 카드가 멈춰 있다 | 승인 대기에 걸렸다 | 해당 프로필의 승인을 처리하고 다시 진행 |
| 채널에 발언이 안 온다 | 봇이 그 채널에 없다 | 회의록 파일로 읽거나 봇 초대 후 다시 열기 |
| 회의를 지웠는데 빈 보드가 남는다 | 대시보드가 그 보드를 계속 조회한다 | 카드가 없는 껍데기라 무시해도 됩니다 |
명령어 정리
hermes -p sophie plugins install dandacompany/hermes-council --enable
hermes -p sophie plugins list
hermes -p sophie council doctor
git pull --ff-only
ls briefs/
cp briefs/council-brief-example.md briefs/council-brief.md
마무리
여기까지가 이 강의의 본편입니다.
비서 하나로 시작해 팀을 만들고, 보안을 붙이고, 사업부를 세우고, 오늘 자산운용팀의 심의까지 왔습니다. 그동안 직접 코드를 작성한 적은 없습니다.
관점을 나눠 붙이고, 누가 의장을 맡을지 정하고, 마지막 선택은 사람이 합니다. 이것이 오케스트레이터가 하는 일이고, 8주 동안 다룬 내용의 전부이기도 합니다.
이 위원회는 투자에만 쓰는 것이 아닙니다. 답이 하나로 떨어지지 않는 결정이라면 어디든 같은 구조를 쓸 수 있습니다. 리서치 주제 선정, 기술 선택, 우선순위 결정처럼 근거가 여러 갈래인 자리에서 관점을 나눠 심의하게 하고, 마지막 선택만 가져오세요.
