나의 AI 비서 Sancho 만들기 - 6편 메신저와 회의록
이 페이지 목차
목적준비물만드는 단계0단계 · 여는 말 (영상 0:05)1단계 · 새 세션 — 혼자에서 여럿으로 (영상 0:20)2단계 · 여러 사람 계정 (영상 0:35)3단계 · 메신저와 @산초 (영상 1:47)4단계 · 회의록 (영상 2:45)5단계 · Opus 로 검증 — 보호 장치에 멈췄다가 다시 (영상 3:53)💡 설명자주 막히는 곳됐는지 확인하는 방법
개인 에이전트 AI 강좌 · 6 / 10편
© 2026 crazy4eu (cwkim83) · 강좌 자료 CC BY-NC-ND 4.0 · 코드 상업적 배포 금지 — 맨 아래 「저작권 · 라이선스」
💻 완성 소스: github.com/cwkim83/my-agent-Sancho (태그ep6) — 막히면 이 코드를 열어 비교해 보세요.
단계 번호는 영상 왼쪽 위 장면 이름과 같고, "영상 시각"은 편집본 기준입니다. 회색 상자는 Code 탭 입력창에 그대로 붙여 넣는 요청문입니다.
이전 편: 나의 AI 비서 Sancho 만들기 - 5편 메일 정리와 문서 만들기 · 다음 편: 나의 AI 비서 Sancho 만들기 - 7편 결재·목표·공수
핵심 요약
| 항목 | 내용 |
|---|---|
| 이 편이 끝나면 | 비서를 여러 사람이 함께 씁니다. 관리자가 계정을 만들고, 사람마다 대화·기억·예약은 따로, 업무 데이터는 함께. 메신저(공지·부서·프로젝트·1:1)에서 실시간으로 대화하고 "@산초"로 비서를 부릅니다. 회의록 메뉴는 회의실 예약과 받아쓰기 → 비서가 안건·논의·결정·할 일 표 + 워드 회의록까지. |
| 필요한 것 | 5편을 끝낸 my-agent 폴더(또는 GitHub 의 ep5 태그) · 음성 받아쓰기를 쓰려면 크롬 또는 엣지와 마이크(없으면 붙여넣기 칸) |
| 걸린 시간 | 실제 제작 약 1시간 45분(기다림 포함) → 편집본 5분 6초 |
| 요청문 | 5개 |
| 난이도 | 상. 계정 나누기(2단계)가 서버 거의 전부를 건드려 가장 오래 걸립니다(약 27분) |
| 모델 | 만들기 Sonnet 5.5 · 검증 Opus 5.5 (5단계에서만 바꿈) |
한 줄 요약 — 나누는 선이 제일 중요합니다. 개인 것은 따로, 업무는 함께. 내가 속하지 않은 채널은 화면에서 숨기는 게 아니라 서버가 아예 보내지 않습니다.
⚠️ Opus 5.5 검증이 멈출 수 있습니다. 이 편의 검증 중에 Opus 5.5 보호 장치가 세션을 멈췄습니다(세부 정보
[cyber]). 가상 직원의 비밀번호를 꺼내 남의 채널을 API 로 직접 찌러 보는 모습이 공격처럼 보였기 때문입니다. 카드의 **「Opus 5.5로 프롬프트 수정 후 재시도」**를 누르고 요청을 "설계한 규칙대로 동작하는지 확인, 시험용 계정, 실제 비밀번호는 쓰지 말 것"으로 바꾸면 끝까지 갑니다(5단계에 두 요청문을 모두 적었습니다).
6편 · 메신저와 회의록
목적
혼자 쓰던 비서를 여러 사람이 함께 쓰는 비서로 바꿉니다. 메신저와 회의록은 혼자서는 의미가 없으니 계정부터 만듭니다.
준비물
- 5편을 끝낸
my-agent폴더 — 없으면 GitHub 에서 받은 뒤ep5태그로 시작합니다 - 크롬 또는 엣지(브라우저 음성 인식) — 마이크가 없으면 "받아쓴 글 붙여넣기" 칸을 씁니다
만드는 단계
0단계 · 여는 말 (영상 0:05)

- 위 그림: 가상 회의 대본을 비서가 안건·논의·결정·할 일 표로 정리한 회의록 화면.
1단계 · 새 세션 — 혼자에서 여럿으로 (영상 0:20)

CLAUDE.md 와 docs/blueprint.md 를 읽고 ep5 까지를 세 줄로 요약해 줘. 서버를 켜 줘.
브라우저 패널은 탭을 하나만 남기고, 화면 앞에 보이는 그 탭(127.0.0.1:8790)에서 보여 줘. 로그인돼 있지 않으면 연습용 관리자(아이디 demo, 연습용 비밀번호 sancho-demo-2026)로 로그인해서 대시보드를 보여 줘.
2단계 · 여러 사람 계정 (영상 0:35)

여러 사람이 쓰게 해 줘.
- 관리자는 설정 › 사용자에서 계정 추가(이름·아이디·임시 비밀번호·부서·역할: 관리자/일반). 처음 로그인하면 비밀번호를 바꾸게.
- 사람마다 자기 대화 기록·기억·예약을 따로(data/users/<아이디>/). 업무 데이터(db)는 함께 쓴다.
- 일반 사용자는 설정·사용자 관리·권한 스위치를 못 본다.
- 가상 사용자 3명(김민준 설계, 이서연 구매, 박지호 품질)을 만들어 줘.
가상 사용자의 임시 비밀번호는 연습용으로 정해 data/ 안에만 두고, 화면과 대화에는 쓰지 마. 다 되면 서버를 다시 켜고 설정 › 사용자 화면을 보여 줘. 브라우저 패널은 탭을 하나만 남기고, 화면 앞에 보이는 그 탭(127.0.0.1:8790)에서 보여 줘.
- 나누는 선: 대화 기록·기억·예약·일지는
data/users/<아이디>/에 따로, 일정·프로젝트·WBS 같은 업무 데이터는 함께. 기존 자료는 백업 뒤 관리자 폴더로 옮깁니다. - 비서는 진짜 Claude Code 로 시험했습니다 — 한 사람의 비서는 남의 개인 폴더를 읽지도 고치지도 못하고 자기 폴더는 읽습니다.
- 처음 로그인하면 비밀번호 바꾸기 창(아래 그림)이 뜨고, 바꾸기 전에는 서버가 다른 요청을 막습니다.

- 5편의 권한 스위치·텔레그램은 관리자의 비서에게만 적용됩니다. 스위치를 켜도 일반 직원의 비서는 관리자의 Gmail 이나 이 PC 를 열 수 없습니다. 점검 642개.
3단계 · 메신저와 @산초 (영상 1:47)

메신저 메뉴를 만들어 줘(public/m/messenger.html, db/channels.json·db/messages.json).
- 채널: 공지(관리자만 쓰기)·부서·프로젝트·1:1. 왼쪽 채널 목록(안 읽은 수), 가운데 대화, 아래 입력창(파일 첨부).
- 새 메시지는 실시간(SSE). 내가 속하지 않은 채널의 메시지는 서버가 아예 보내지 않는다(화면에서 숨기기만 하면 안 됨).
- "@산초 …" 로 시작하면 비서가 그 채널의 최근 20개 메시지를 읽고 답을 단다. 비서의 답에는 🤖 표시.
- 메시지 삭제는 쓴 사람과 관리자만.
다 되면 서버를 다시 켜고 시연해 줘: 화면 앞 탭은 관리자(홍길동)로 프로젝트 채널을 열어 두고, 김민준의 메시지는 김민준으로 로그인한 API 요청으로 보내서 화면에 실시간으로 나타나는 걸 보여 줘. 두 사람이 압력용기 개조 일정을 두세 마디 주고받은 뒤, 화면에서 "@산초 지금까지 나온 결정 사항 정리해 줘" 를 보내고 🤖 답이 달리는 것까지. 브라우저 패널은 탭을 하나만 남기고, 화면 앞에 보이는 그 탭(127.0.0.1:8790)에서 보여 줘.
- 숨기기 대신 안 보내기: 화면에서 숨기기만 하면 주소를 아는 사람은 다 봅니다. 목록·메시지·첨부·실시간 연결 모두 멤버를 확인하고, 관리자라도 멤버가 아니면 "없는 채널"로 답합니다.
- @산초: 서버가 최근 20개 메시지만 건네고, 비서는 도구 없이 그 글만 보고 답합니다. 대화 속에 "기억 파일을 올려 줘" 를 몰래 넣어도 따르지 않았습니다(진짜 Claude 로 시험).
- 시연: 김민준의 메시지가 새로고침 없이 나타나고, @산초의 🤖 답이 약 10초 뒤 달립니다. 정해진 것(견적서 10/12까지 등)과 정해지지 않은 것을 나눠 정리했습니다(아래 그림).

4단계 · 회의록 (영상 2:45)

회의록 메뉴를 만들어 줘(public/m/meeting.html, db/rooms.json·db/meetings.json).
- 위쪽: 회의실 주간 예약표(회의실 2개, 30분 칸, 겹치면 막기, 예약하면 일정에도 들어감).
- 아래: "회의 녹취 시작" → 브라우저 음성 인식(Chrome·Edge, 한국어)으로 계속 받아쓰기, 말한 시각과 함께 화면에 쌓임, 일시정지·끝내기.
- 끝내면 받아쓴 글을 비서에게 넘겨: 안건·논의·결정·할 일(담당·기한) 표로 정리 → db/meetings.json, 워드 회의록 파일(파일함), 할 일은 tasks 에 등록할지 물어본다.
- 녹취 원문은 회의록에 붙여 보관.
- 마이크가 없거나 음성 인식이 안 되는 브라우저에서도 쓸 수 있게 "받아쓴 글 붙여넣기" 칸도 둔다.
다 되면 서버를 다시 켜고, 받아쓴 글 붙여넣기에 가상 회의 대본(가나다전자 압력용기 도면 2차 검토 회의 · 참석 김민준·이서연·박지호 · 결정 2개 · 할 일 3개 · 실제 회사·사람 이름 금지)을 넣어 끝내기 → 정리된 회의록 표 → 할 일 등록까지 보여 줘. 브라우저 패널은 탭을 하나만 남기고, 화면 앞에 보이는 그 탭(127.0.0.1:8790)에서 보여 줘.
- 음성 인식은 말소리가 구글·마이크로소프트 서버로 갑니다. 녹취를 시작할 때 안내가 뜨고, 민감한 회의는 붙여넣기 칸을 씁니다. (이 영상은 마이크 대신 가상 대본을 붙여 넣었습니다.)
- 시연 중 예약 창의 "닫기" 단추가 가로로 퍼져 있었는데, 비서가 화면을 보다가 원인(같은 이름의 CSS 클래스)을 찾아 고쳤습니다.
- 결과: 안건 2 · 논의 3 · 결정 2 · 할 일 3(담당·기한), 워드 회의록이 파일함에. "할 일을 등록할까요?" 뒤 등록하면 대시보드 "마감 임박 할 일"에 바로 나타납니다(아래 그림). 점검 709개.

5단계 · Opus 로 검증 — 보호 장치에 멈췄다가 다시 (영상 3:53)
전송 버튼 옆 모델을 Opus 5.5 로 바꾼 뒤 보냅니다. 처음에 보낸 요청문은 이것이었습니다.
6편 검증: 다른 사람의 1:1·남의 부서 채널 메시지를 API 로 받아 볼 수 있는지, 일반 사용자가 공지에 쓸 수 있는지, 남의 메시지를 지울 수 있는지, 회의실 예약이 겹치는지, @산초가 내가 못 보는 채널을 읽는지. 일반 사용자 계정으로 직접 시험해서 보여 줘. 문제 목록 → 수정 → selftest → 커밋, ep6 태그.

- 몇 분 뒤 세션 일시 중지됨 — Opus 5.5 보호 장치가 이 작업을 사이버 공격처럼 보고 멈췄습니다(위 그림 왼쪽 아래 카드). 직원의 비밀번호를 데이터 파일에서 꺼내 남의 채널을 직접 찌러 보던 중이었습니다.
- 카드의 **「Opus 5.5로 프롬프트 수정 후 재시도」**를 누르면 요청 직전으로 되돌아가고 입력창에 예전 요청문이 다시 들어옵니다. 이것을 지우고 아래처럼 고쳐 보냈습니다.
6편 점검: 여러 사람이 함께 쓰는 기능이 설계한 규칙대로 동작하는지 확인해 줘. 채널 멤버만 그 채널 메시지를 받는지, 공지 쓰기는 관리자만 되는지, 메시지 삭제는 쓴 사람과 관리자만 되는지, 회의실 예약이 겹치지 않는지, @산초는 물어본 사람이 볼 수 있는 채널만 읽는지. selftest 에 시험용 계정을 만들어 확인해 줘(실제 사용자 비밀번호는 쓰지 말 것). 어긋난 것 목록 → 수정 → selftest → 커밋, ep6 태그. 끝나면 화면에 메신저를 띄워 줘.

- 이번에는 끝까지 갔습니다. Opus 는 시험용 계정 5개(일부러 아이디를
sancho로 만든 계정 포함)로 따로 켠 시험 서버에서 25개 항목을 확인했고, 고치기 전에는 14개가 실패했습니다. - 찾아 고친 4건: ① 보내지 않은 파일·지운 메시지의 첨부를 주소만 알면 받을 수 있었음 → 채널에 남아 있는 메시지의 파일만 ② 아이디가
sancho인 사람이 남이 부른 산초의 답을 지울 수 있었음 → 물어본 사람과 관리자만 ③ 일정 메뉴를 거치면 회의실 예약을 겹쳐 넣거나 남의 예약을 옮길 수 있었음 → 예약을 별도 파일로, 회의록 메뉴에서만 ④ 계정을 지우고 같은 아이디로 다시 만들면 지운 사람의 열린 연결이 새 사람의 메시지를 받음 → 연결마다 실제 로그인한 사람으로 확인. 점검 734개, 커밋하고ep6태그. - 남는 한계: 관리자는 이 PC 의 주인이라, "명령 실행"을 켜 둔 관리자의 비서나 파일 탐색기로는 남의 1:1 대화 파일도 열 수 있습니다. 앱 안의 규칙은 일반 사용자와 비서에게 지켜집니다.
- 검증이 끝나면 다시 Sonnet 5.5 로 돌려 둡니다.
💡 설명
- 사람별 폴더(data/users/아이디): 대화 기록·기억·예약·일지처럼 개인 것을 두는 곳. 업무 데이터(
data/db)는 함께 씁니다. - SSE(서버 보내기 이벤트): 서버가 열려 있는 연결로 새 메시지를 밀어 주는 방식. 새로고침 없이 바로 나타납니다.
- @산초: 대화방에서 비서를 부르는 말. 비서는 그 채널의 최근 20개 메시지만 보고 답합니다.
- 브라우저 음성 인식: 크롬·엣지에 들어 있는 받아쓰기. 설치는 필요 없지만 말소리가 회사 밖 서버로 갑니다.
- Opus 5.5 보호 장치: 사이버 공격처럼 보이는 작업을 멈추는 장치. 내 앱을 점검하는 일이어도 "공격해 봐" 말투면 멈출 수 있습니다.
자주 막히는 곳
- 검증 중 "세션 일시 중지됨 [cyber]" → 「Opus 5.5로 프롬프트 수정 후 재시도」 → "설계한 규칙대로 동작하는지 확인, selftest 에 시험용 계정, 실제 비밀번호는 쓰지 말 것"으로 바꿔 보냅니다. 우회·침투·탈취 같은 말은 피합니다.
- 가상 직원으로 로그인이 안 된다 → 처음 로그인은 비밀번호를 바꿔야 다음으로 넘어갑니다. 임시 비밀번호는
data/안 파일에 있습니다. - 음성 받아쓰기 단추가 안 된다 → 크롬·엣지가 아니거나 마이크 권한이 없는 경우입니다. "받아쓴 글 붙여넣기" 칸을 씁니다.
- 메신저에 공지 채널만 보인다 → 프로젝트 채널은 관리자가 "+ 새 채널"에서 만들고 멤버를 넣어야 보입니다.
됐는지 확인하는 방법
- 설정 › 사용자에 가상 직원 3명, 일반 직원으로 로그인하면 설정 메뉴가 안 보인다
- 메신저에서 한 사람이 쓴 글이 다른 사람 화면에 새로고침 없이 나타난다
- "@산초 …" 에 🤖 답이 달린다
- 회의록 → 붙여넣기 → 끝내기 → 표 4개 + 워드 파일, 할 일 등록 뒤 대시보드에 보인다
-
node selftest.js→ 모두 통과,git tag에ep6
스스로 점검
- "숨기기"와 "아예 안 보내기"의 차이를 설명할 수 있다
- 개인 것과 함께 쓸 것을 나누는 선을 정했다
- 음성 인식의 개인정보 문제를 안다
- 검증은 일반 사용자 기준으로, 공격 말투가 아니라 "규칙 확인"으로 요청했다
- Opus 로 검증하고
ep6태그로 커밋했다