BRYZE 위키

회사와 브랜드의 기준, 함께 쌓는 지식

사용자 도구

사이트 도구


ai:assistant_ops_cron

문서의 이전 판입니다!


크론잡

이 문서는 멀티 에이전트 환경에서 크론잡 실행 시 실패 확률을 줄이고, 특히 목적지 정보 누락으로 결과가 다른 사람 또는 다른 세션에 잘못 전달되는 문제를 방지하기 위한 운영 기준 초안입니다.

1. 문서 목적

크론잡은 정해진 시간에 자동으로 실행되는 만큼, 한 번 잘못 설정되면 같은 실수가 반복될 수 있습니다. 특히 멀티 에이전트 환경에서는 누가 실행하는가, 어디로 보내는가, 어떤 계정으로 동작하는가가 분명하지 않으면 결과가 엉뚱한 채널이나 다른 사용자에게 전달될 수 있습니다.

이 문서는 아래 위험을 줄이기 위해 작성합니다.

  • 결과 메시지가 잘못된 채팅방으로 전송되는 문제
  • 다른 에이전트 계정/설정을 참조하는 문제
  • 실행은 되었지만 대상이 불명확해지는 문제
  • 반복 실행으로 같은 오발송이 누적되는 문제

2. 핵심 원칙

  • 크론잡은 실행 주체와 전달 목적지가 명확해야 합니다.
  • 목적지 정보가 없으면 전송하지 않는 것을 기본값으로 합니다.
  • 애매하면 보내지 않는 편이 잘못 보내는 것보다 안전합니다.
  • 계정, 채널, 세션 정보는 추론하지 않고 명시적으로 지정합니다.
  • 멀티 에이전트 환경에서는 기본값 의존을 최소화합니다.

3. 가장 중요한 위험: 목적지 정보 누락

멀티 에이전트 환경에서 가장 위험한 유형 중 하나는 결과를 어디로 보내야 하는지 명확하지 않은 상태에서 크론이 실행되는 경우입니다.

예를 들어 아래와 같은 상황이 발생할 수 있습니다.

  • 이전 실행의 컨텍스트를 잘못 재사용하는 경우
  • 기본 채널/기본 계정으로 전송되는 경우
  • 운영자가 예상하지 않은 세션이 활성 상태인 경우
  • 특정 사용자용 크론이 공용 또는 타 사용자 채널로 전달되는 경우

따라서 목적지 정보는 선택값이 아니라 필수값으로 취급해야 합니다.

4. 목적지 정보 필수 항목

크론잡 설계 시 아래 항목이 빠지면 안 됩니다.

  • 실행 에이전트 ID
  • 전송 채널
  • accountId
  • 대상 chat_id 또는 세션 식별자
  • 대상이 개인인지 그룹인지에 대한 구분
  • 실패 시 재시도 여부
  • 전송하지 말아야 하는 조건

권장 원칙:

  • 채널만 알고 대상 세션을 모르는 상태에서는 보내지 않습니다.
  • 사용자 이름만 알고 내부 식별자가 없는 상태에서도 보내지 않습니다.
  • 마지막으로 사용한 대상 같은 암묵적 컨텍스트는 신뢰하지 않습니다.

5. 안전한 설계 원칙

5-1. 목적지 없으면 실패 처리

목적지 정보가 하나라도 빠져 있으면 성공처럼 넘기지 말고, 명시적으로 실패 또는 보류 처리하는 것이 안전합니다.

권장 기준:

  • chat_id 없음 → 전송 금지
  • accountId 없음 → 전송 금지
  • 채널 불명확 → 전송 금지
  • 세션 식별 불가 → 전송 금지

5-2. 기본값 자동 추론 금지

멀티 에이전트 환경에서는 아래 방식이 특히 위험합니다.

  • 최근 대화 상대를 목적지로 간주
  • 마지막 사용 채널을 자동 재사용
  • 다른 세션의 delivery context를 재활용
  • accountId 없이 기본 계정에 의존

이런 방식은 단일 사용자 환경에서는 편해 보여도, 멀티 에이전트 환경에서는 오발송 가능성을 크게 높입니다.

5-3. 읽기와 전송 분리

크론잡은 가능하면 아래처럼 2단계로 나누는 것이 안전합니다.

  • 1단계: 조회/분석/정리
  • 2단계: 전송 대상 검증 후 발송

이렇게 분리하면, 조회는 성공했더라도 목적지 검증이 실패하면 발송만 막을 수 있습니다.

5-4. 사람별 / 채널별 설정 분리

다음 정보는 한 파일 또는 한 변수에 뭉뚱그려 두기보다 구분해서 관리하는 것이 안전합니다.

  • 사용자별 목적지
  • 채널별 목적지
  • 계정별 전송 권한
  • 에이전트별 실행 범위

6. 권장 운영 방식

6-1. 전송 전 검증

실제 발송 전에 최소한 아래를 검증합니다.

  • 지금 실행 중인 에이전트가 맞는가
  • accountId가 의도한 계정인가
  • chat_id가 의도한 대상인가
  • 이 작업이 개인 DM용인지 그룹용인지 맞는가
  • 동일 메시지가 최근 이미 전송되지 않았는가

6-2. dry-run 또는 로그 우선

새 크론잡을 만들거나 수정한 직후에는, 바로 실전 발송하지 말고 한동안은 아래 방식이 안전합니다.

  • dry-run으로 대상만 출력
  • 실제 전송 대신 로그 파일에 기록
  • 테스트 채널로만 발송

6-3. id 기반으로 관리

가능하면 이름보다 내부 식별자를 사용합니다.

  • 사람 이름보다 sessionKey / chat_id / accountId 우선
  • 채널명보다 실제 채널 식별자 우선

이유:

  • 이름은 중복되거나 바뀔 수 있지만,
  • 식별자는 훨씬 안정적입니다.

7. 실패 확률을 줄이는 작성 규칙

  • 크론 목적을 한 문장으로 명확히 적습니다.
  • 입력값과 출력값을 분리해 적습니다.
  • 전송 대상 식별자를 명시합니다.
  • 대상이 비어 있을 때의 동작을 명시합니다.
  • 실패 시 재시도 여부를 적습니다.
  • 중복 전송 방지 조건을 적습니다.
  • 테스트 채널과 운영 채널을 분리합니다.
  • 환경변수나 설정 파일의 의존 항목을 문서화합니다.

8. 권장 체크리스트

크론잡을 배포하기 전 아래를 확인합니다.

  • 이 크론은 누가 실행하는가?
  • 어떤 에이전트에서 실행되는가?
  • 어떤 계정으로 메시지를 보내는가?
  • 정확한 목적지 식별자가 있는가?
  • 목적지 정보가 없을 때 안전하게 멈추는가?
  • 테스트 채널에서 먼저 검증했는가?
  • 중복 발송 방지 장치가 있는가?
  • 오발송 시 빠르게 끌 수 있는가?

9. 권장 금지사항

아래 방식은 멀티 에이전트 환경에서 지양합니다.

  • 기본 채널에 자동 전송
  • 마지막 활성 세션 재사용
  • 사람 이름만 보고 목적지 결정
  • accountId 없이 메시지 발송
  • 실패 원인 기록 없이 자동 재시도 반복
  • 테스트와 운영 목적지를 동일하게 사용

10. 예시 문구

크론 설계 문서에는 아래 수준으로 명시하는 것이 좋습니다.

  • 실행 에이전트: sungyong
  • 채널: googlechat
  • accountId: acc_sungyong
  • 목적지 chat_id: googlechat:spaces/XXXXX
  • 목적지 누락 시 동작: 발송하지 않고 오류 로그 기록
  • 중복 방지: 동일 키 기준 1회만 발송
  • 테스트 목적지: 별도 검증용 채널 사용

11. 요약

멀티 에이전트 환경의 크론잡은 잘 실행되는 것만으로는 충분하지 않습니다. 정확한 대상에게, 정확한 계정으로, 정확한 조건에서만 보내지도록 설계되어야 합니다.

특히 목적지 정보가 불명확한 상태에서는 보내지 않는 것이 기본 원칙이며, 이 원칙이 오발송과 운영 사고를 줄이는 가장 중요한 안전장치입니다.

ai/assistant_ops_cron.1775710686.txt.gz · 마지막으로 수정됨: (바깥 편집)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki