ai:assistant_ops_cron
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| ai:assistant_ops_cron [2026-04-09 14:06] – 복잡한 크론잡 단계 분리 원칙과 예시 추가 [기존 위키에서 이전] 172.19.176.1 | ai:assistant_ops_cron [2026-10-30 14:55] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== 크론잡 ====== | ====== 크론잡 ====== | ||
| - | 이 문서는 | + | 멀티에이전트 환경에서 크론잡 |
| - | 핵심 목적은 '' | + | |
| - | 특히 여러 에이전트가 함께 동작하는 환경에서는, | + | 메뉴얼.md 문서는 작업자가 그대로 따라도 오차가 없도록 자세히 |
| - | 단순히 | + | |
| - | '' | + | |
| - | ===== 1. 왜 이 문서가 필요한가 ===== | + | 복잡한 작업을 수행하는 |
| - | 크론잡은 | + | |
| - | 따라서 설정이 잘못된 상태로 배포되면 같은 문제가 계속 반복될 수 있습니다. | + | |
| - | 멀티 에이전트 환경에서는 특히 아래와 같은 사고가 발생할 수 있습니다. | + | 구글드라이브 스프레드시트를 참조할 때에는 |
| - | * A 사용자를 위한 결과가 B 사용자에게 | + | |
| - | * 테스트용 메시지가 실제 운영 채널로 발송됨 | + | |
| - | * 다른 에이전트의 계정/ | + | |
| - | * 대상 정보가 비어 있는데도 | + | |
| - | 이 문서는 이런 종류의 운영 실수를 예방하기 | + | 결과 보고 및 진척 상황 확인을 |
| - | ===== 2. 가장 중요한 원칙 ===== | + | 메뉴얼은 크론잡 등록 전 수 번 테스트하면서 시행착오를 직접 업데이트하라고 지시한다. |
| - | 크론잡은 '' | + | |
| - | '' | + | |
| - | + | ||
| - | 운영자가 반드시 지켜야 할 기본 원칙은 아래와 같습니다. | + | |
| - | + | ||
| - | * 목적지 정보가 불명확하면 보내지 않는다. | + | |
| - | * 기본값에 기대지 않는다. | + | |
| - | * 최근 대화나 마지막 세션 정보를 재사용하지 않는다. | + | |
| - | * 이름이 아니라 식별자 기준으로 목적지를 관리한다. | + | |
| - | * 테스트와 운영 목적지를 절대 섞지 않는다. | + | |
| - | + | ||
| - | 즉, | + | |
| - | '' | + | |
| - | '' | + | |
| - | + | ||
| - | ===== 3. 가장 흔한 사고 유형 ===== | + | |
| - | ==== 3-1. 목적지 누락 ==== | + | |
| - | 가장 위험한 경우는 결과를 보낼 대상 정보가 빠져 있는데, | + | |
| - | 시스템이 임의의 기본값이나 이전 컨텍스트를 사용해 | + | |
| - | + | ||
| - | 예시: | + | |
| - | * chat_id 없이 발송 | + | |
| - | * accountId 없이 발송 | + | |
| - | * 대상 세션 정보 없이 마지막 세션에 의존 | + | |
| - | + | ||
| - | 이 경우 운영자는 '' | + | |
| - | 수신자는 예상하지 못한 메시지를 받게 됩니다. | + | |
| - | + | ||
| - | ==== 3-2. 테스트/ | + | |
| - | 처음에는 테스트 채널로 보내던 크론잡이, | + | |
| - | 설정 변경 후 운영 채널로 그대로 나가는 경우가 있습니다. | + | |
| - | + | ||
| - | 예시: | + | |
| - | * 테스트용 목적지를 운영 목적지로 덮어씀 | + | |
| - | * 검증용 계정으로 만들었는데 실제 계정으로 전송됨 | + | |
| - | + | ||
| - | ==== 3-3. 다른 에이전트 컨텍스트 참조 ==== | + | |
| - | 멀티 에이전트 환경에서는 비슷한 이름의 세션이나 설정이 존재할 수 있습니다. | + | |
| - | 이때 '' | + | |
| - | + | ||
| - | 예시: | + | |
| - | * 다른 에이전트의 accountId 사용 | + | |
| - | * 다른 세션의 delivery context 재사용 | + | |
| - | * 동일 이름 사용자 간 혼동 | + | |
| - | + | ||
| - | ===== 4. 반드시 명시해야 하는 항목 ===== | + | |
| - | 크론잡을 설계하거나 검토할 때 아래 정보는 필수 항목으로 봐야 합니다. | + | |
| - | + | ||
| - | * 실행 에이전트 ID | + | |
| - | * 채널 종류 (예: googlechat, discord, telegram) | + | |
| - | * accountId | + | |
| - | * 정확한 목적지 식별자 (chat_id 또는 sessionKey | + | |
| - | * 개인 대상인지 그룹 대상인지 | + | |
| - | * 목적지 누락 시 어떻게 처리할지 | + | |
| - | * 실패 시 재시도 여부 | + | |
| - | * 중복 발송 방지 기준 | + | |
| - | + | ||
| - | 이 항목 중 하나라도 비어 있다면, | + | |
| - | 운영 관점에서는 '' | + | |
| - | + | ||
| - | ===== 5. 사람이 운영할 때 꼭 지켜야 하는 기준 ===== | + | |
| - | ==== 5-1. 이름보다 식별자를 사용한다 ==== | + | |
| - | 사람 이름, 채널 이름, 별칭은 바뀌거나 중복될 | + | |
| - | 가능하면 아래처럼 식별자를 직접 관리하는 편이 안전합니다. | + | |
| - | + | ||
| - | * 이름보다 chat_id | + | |
| - | * 별칭보다 sessionKey | + | |
| - | * 감으로 아는 계정보다 accountId | + | |
| - | + | ||
| - | ==== 5-2. 목적지 없으면 멈추게 한다 ==== | + | |
| - | 목적지가 비어 있거나 애매한데도 발송되게 두면 사고 가능성이 큽니다. | + | |
| - | 운영자는 '' | + | |
| - | + | ||
| - | 즉, | + | |
| - | * 목적지 없음 → 발송 금지 | + | |
| - | * accountId 없음 → 발송 금지 | + | |
| - | * 채널 불명확 → 발송 금지 | + | |
| - | + | ||
| - | 이런 규칙이 기본이어야 합니다. | + | |
| - | + | ||
| - | ==== 5-3. 테스트와 운영을 분리한다 ==== | + | |
| - | 테스트 중인 크론잡은 반드시 별도 목적지에서 검증해야 합니다. | + | |
| - | + | ||
| - | 권장 방식: | + | |
| - | * 테스트용 채널 별도 운영 | + | |
| - | * 테스트용 accountId 별도 확인 | + | |
| - | * 실제 대상과 동일한 이름을 가진 테스트 대상을 만들지 않기 | + | |
| - | + | ||
| - | ==== 5-4. 조회 단계와 발송 단계를 분리한다 ==== | + | |
| - | 가능하면 | + | |
| - | + | ||
| - | * 1단계: 정보 조회 / 분석 / 정리 | + | |
| - | * 2단계: 목적지 검증 / 발송 | + | |
| - | + | ||
| - | 이렇게 하면 조회는 성공했더라도, | + | |
| - | 목적지 검증에 실패하면 발송만 중단할 수 있습니다. | + | |
| - | + | ||
| - | ===== 6. 배포 전에 사람이 확인해야 할 체크리스트 ===== | + | |
| - | 아래 항목은 실제 배포 전에 반드시 사람이 확인해야 합니다. | + | |
| - | + | ||
| - | * 이 크론은 어떤 에이전트가 실행하는가? | + | |
| - | * 어떤 계정으로 메시지를 보내는가? | + | |
| - | * 목적지 식별자가 정확히 입력되어 있는가? | + | |
| - | * 목적지가 개인인지 그룹인지 명확한가? | + | |
| - | * 목적지 정보가 없을 때 발송이 막히는가? | + | |
| - | * 테스트 채널에서 먼저 검증했는가? | + | |
| - | * 동일 메시지 중복 전송 방지 기준이 있는가? | + | |
| - | * 문제가 생기면 즉시 중단할 수 있는가? | + | |
| - | + | ||
| - | 이 체크리스트를 통과하지 못하면 운영 배포를 보류하는 것이 안전합니다. | + | |
| - | + | ||
| - | ===== 7. 운영자가 피해야 할 패턴 ===== | + | |
| - | 아래 방식은 편해 보여도 멀티 에이전트 환경에서는 사고 가능성이 높습니다. | + | |
| - | + | ||
| - | * 최근 대화 상대를 목적지로 간주하는 방식 | + | |
| - | * 마지막 활성 세션을 재사용하는 방식 | + | |
| - | * 사람 이름만 보고 목적지를 고르는 방식 | + | |
| - | * 기본 계정에 의존하는 방식 | + | |
| - | * 테스트와 운영을 같은 채널에서 진행하는 방식 | + | |
| - | * 실패 원인 기록 없이 자동 재시도만 반복하는 방식 | + | |
| - | + | ||
| - | ===== 8. 권장 문서화 방식 ===== | + | |
| - | 크론잡을 만들 때는 최소한 아래 수준으로 문서화하는 것이 좋습니다. | + | |
| - | + | ||
| - | * 실행 에이전트: | + | |
| - | * 채널: googlechat | + | |
| - | * accountId: acc_sungyong | + | |
| - | * 목적지 chat_id: googlechat: | + | |
| - | * 대상 유형: 개인 DM / 그룹 채널 | + | |
| - | * 목적지 누락 시 동작: 발송 금지 및 로그 기록 | + | |
| - | * 중복 방지 기준: 동일 키 1회만 전송 | + | |
| - | * 테스트 목적지: 별도 검증 채널 사용 | + | |
| - | + | ||
| - | 이 문서화가 되어 있어야, | + | |
| - | 나중에 문제가 생겼을 때 운영자가 원인을 빠르게 추적할 수 있습니다. | + | |
| - | + | ||
| - | ===== 9. 요약 ===== | + | |
| - | 멀티 에이전트 환경에서 크론잡 운영의 핵심은 | + | |
| - | '' | + | |
| - | '' | + | |
| - | + | ||
| - | 특히 목적지 정보가 불명확한 상태에서는 보내지 않는 것이 기본 원칙이며, | + | |
| - | 이 원칙이 | + | |
| - | + | ||
| - | ===== 10. 장기 실행 환경에서의 또 다른 위험: 컨텍스트 손실 ===== | + | |
| - | OpenClaw 기반 크론잡은 세션이 길어지거나, | + | |
| - | 이 경우 사람이 보기에는 분명했던 맥락이 실행 시점에는 충분히 남아 있지 않을 수 있습니다. | + | |
| - | + | ||
| - | 특히 아래와 같은 상황에서 문제가 커집니다. | + | |
| - | * 세션이 재시작되어 이전 대화 맥락이 약해진 경우 | + | |
| - | * 대화가 너무 길어져 과거 지시가 뒤로 밀린 경우 | + | |
| - | * 크론 설명이 짧고 추상적으로만 적혀 있는 경우 | + | |
| - | * “전에 하던 방식대로” 같은 암묵적 지시에 의존하는 경우 | + | |
| - | + | ||
| - | 이런 환경에서는 두루뭉술하게 작성된 크론잡일수록 실행 실패 확률이 높아집니다. | + | |
| - | 또는 실행은 되더라도 사람이 기대한 방식과 조금씩 다른 결과가 나올 수 있습니다. | + | |
| - | + | ||
| - | ===== 11. 권장 대응: 매뉴얼 문서를 별도로 상세하게 유지 ===== | + | |
| - | 이 문제를 줄이기 위한 가장 현실적인 방법은, | + | |
| - | 크론잡 자체를 짧게만 적어두는 것이 아니라 | + | |
| - | '' | + | |
| - | 크론 실행 시 그 문서를 먼저 읽도록 지침에 포함하는 것'' | + | |
| - | + | ||
| - | 이 방식의 장점은 아래와 같습니다. | + | |
| - | * 세션 상태와 관계없이 항상 동일한 기준을 다시 불러올 수 있음 | + | |
| - | * 과거 대화 기억에 덜 의존하게 됨 | + | |
| - | * 담당자가 바뀌어도 운영 기준이 유지됨 | + | |
| - | * 결과 품질 편차를 줄이고 균일성을 높일 수 있음 | + | |
| - | * 크론 설명문은 짧게 유지하면서도 실제 판단 기준은 상세하게 관리 가능함 | + | |
| - | + | ||
| - | 즉, | + | |
| - | 크론 자체에는 '' | + | |
| - | 별도 매뉴얼 문서에는 '' | + | |
| - | + | ||
| - | ===== 12. 매뉴얼 문서에 반드시 들어가야 할 내용 ===== | + | |
| - | 크론잡이 참조할 매뉴얼 문서에는 최소한 아래 항목을 상세하게 적는 것이 좋습니다. | + | |
| - | + | ||
| - | * 작업 목적 | + | |
| - | * 입력 | + | |
| - | * 반드시 확인해야 하는 전제 조건 | + | |
| - | * 예외 상황 처리 방식 | + | |
| - | * 결과 정리 형식 | + | |
| - | * 금지해야 할 행동 | + | |
| - | * 전송 대상과 전송 조건 | + | |
| - | * 실패 시 대응 방식 | + | |
| - | * 예시 입력 / 예시 출력 | + | |
| - | * 사람이 기대하는 문체 또는 보고 형식 | + | |
| - | + | ||
| - | 가능하면 애매한 표현보다, | + | |
| - | 실행자가 그대로 따를 수 있는 수준으로 구체적으로 적는 것이 좋습니다. | + | |
| - | + | ||
| - | 좋지 않은 예: | + | |
| - | * 최근 내용 보고 적절히 정리해서 보내기 | + | |
| - | + | ||
| - | 좋은 예: | + | |
| - | * 지정 문서 A를 먼저 읽고, | + | |
| - | * 시트 B의 특정 범위를 확인한 뒤, | + | |
| - | * 누락 행이 있으면 제외 사유를 기록하고, | + | |
| - | * 결과는 3줄 요약 + 상세 항목 형식으로, | + | |
| - | * 지정된 chat_id에만 전송하기 | + | |
| - | + | ||
| - | ===== 13. 크론 지침에 넣어야 할 문구 방향 ===== | + | |
| - | 크론 설정 또는 지침에는, | + | |
| - | 실행 전에 특정 매뉴얼 문서를 반드시 읽도록 명시하는 것이 좋습니다. | + | |
| - | + | ||
| - | 예시 방향: | + | |
| - | * 실행 전 지정된 MANUAL.md 문서를 먼저 읽을 것 | + | |
| - | * 과거 대화 맥락에 의존하지 말고 문서 기준으로 판단할 것 | + | |
| - | * 문서에 없는 사항은 추정하지 말고 보수적으로 처리할 것 | + | |
| - | * 목적지 정보가 누락되면 전송하지 말 것 | + | |
| - | + | ||
| - | 핵심은, | + | |
| - | 크론이 '' | + | |
| - | + | ||
| - | ===== 14. 운영 관점에서 기대할 수 있는 효과 ===== | + | |
| - | 이 방식을 적용하면 아래와 같은 효과를 기대할 수 있습니다. | + | |
| - | + | ||
| - | * 세션 길이에 따른 품질 흔들림 감소 | + | |
| - | * 재시작 이후에도 동일한 기준 유지 | + | |
| - | * 운영자 의도와 결과물 간 편차 축소 | + | |
| - | * 신규 담당자 인수인계 용이 | + | |
| - | * 크론 실행 실패 및 오해석 가능성 감소 | + | |
| - | + | ||
| - | 특히 정기 실행 작업은 '' | + | |
| - | '' | + | |
| - | 문서 기반 실행 방식이 장기적으로 더 안전합니다. | + | |
| - | + | ||
| - | ===== 15. 복잡한 크론잡은 작업 단계를 나누어 설계하는 것이 안전함 ===== | + | |
| - | 복잡한 작업을 한 번의 크론 실행 안에서 모두 처리하려고 하면, | + | |
| - | 중간 판단이 많아지고 예외 상황이 늘어나면서 실패 확률이 높아집니다. | + | |
| - | + | ||
| - | 특히 아래와 같은 작업은 단일 단계로 처리할수록 불안정해질 가능성이 큽니다. | + | |
| - | * 여러 데이터 소스를 동시에 읽어야 하는 작업 | + | |
| - | * 조회 → 정리 → 판단 → 전송이 모두 포함된 작업 | + | |
| - | * 표 분리, 문서 읽기, 예외 처리, 보고 형식 결정이 함께 필요한 작업 | + | |
| - | * 사람마다 다른 목적지나 다른 기준을 적용해야 하는 작업 | + | |
| - | + | ||
| - | 이런 유형은 가능한 한 '' | + | |
| - | + | ||
| - | ===== 16. 왜 단계 분리가 필요한가 ===== | + | |
| - | 복잡한 작업을 단계별로 나누면 아래와 같은 장점이 있습니다. | + | |
| - | + | ||
| - | * 각 단계의 역할이 명확해집니다. | + | |
| - | * 어느 단계에서 실패했는지 원인 추적이 쉬워집니다. | + | |
| - | * 중간 결과를 검증할 수 있습니다. | + | |
| - | * 발송 단계 전에 검토/ | + | |
| - | * 세션 컨텍스트가 짧아져도 각 단계의 목적이 덜 흔들립니다. | + | |
| - | * 동일한 로직을 다른 크론에서도 재사용하기 쉬워집니다. | + | |
| - | + | ||
| - | 즉, | + | |
| - | '' | + | |
| - | '' | + | |
| - | + | ||
| - | ===== 17. 권장 분리 방식 ===== | + | |
| - | 복잡한 크론잡은 보통 아래처럼 나누어 생각하는 것이 좋습니다. | + | |
| - | + | ||
| - | * 1단계: 데이터 조회 | + | |
| - | * 2단계: 데이터 정리 / 전처리 | + | |
| - | * 3단계: 해석 / 판단 | + | |
| - | * 4단계: 결과 포맷팅 | + | |
| - | * 5단계: 목적지 검증 후 발송 | + | |
| - | + | ||
| - | 모든 작업이 반드시 5단계일 필요는 없지만, | + | |
| - | 최소한 '' | + | |
| - | + | ||
| - | ===== 18. 권장 예시 1: 스프레드시트 요약 보고 ===== | + | |
| - | 예를 들어, 여러 표가 섞여 있는 Google 스프레드시트를 읽고 요약 보고를 보내는 크론이 있다고 가정합니다. | + | |
| - | + | ||
| - | 좋지 않은 방식: | + | |
| - | * 스프레드시트를 읽는다 | + | |
| - | * 여러 표를 한 번에 해석한다 | + | |
| - | * 바로 요약을 만든다 | + | |
| - | * 곧바로 메시지를 발송한다 | + | |
| - | + | ||
| - | 이 방식은 중간 검증이 어렵고, | + | |
| - | 표 구조를 잘못 읽었을 때 오해석된 결과가 그대로 발송될 가능성이 있습니다. | + | |
| - | + | ||
| - | 권장 방식: | + | |
| - | * 1단계: 시트를 읽고 '' | + | |
| - | * 2단계: 각 표 안에서 '' | + | |
| - | * 3단계: 표별 요약 데이터를 만든다 | + | |
| - | * 4단계: 표별 요약을 최종 보고 형식으로 합친다 | + | |
| - | * 5단계: 목적지와 accountId를 검증한 뒤 발송한다 | + | |
| - | + | ||
| - | 이렇게 나누면, | + | |
| - | 어느 단계에서 오류가 났는지 확인하기 쉽고, | + | |
| - | 문제 발생 시 발송 전에 멈출 수 있습니다. | + | |
| - | + | ||
| - | ===== 19. 권장 예시 2: 정기 알림 + 예외 감지 ===== | + | |
| - | 예를 들어 매일 특정 데이터를 확인해 이상 징후가 있을 때만 알림을 보내는 크론의 경우에도, | + | |
| - | 한 번에 처리하기보다 아래처럼 나누는 것이 좋습니다. | + | |
| - | + | ||
| - | 권장 방식: | + | |
| - | * 1단계: 원본 데이터 조회 | + | |
| - | * 2단계: 기준값과 비교해 예외 후보 추출 | + | |
| - | * 3단계: 예외 후보 중 실제 알림 대상만 선별 | + | |
| - | * 4단계: 알림 문구 생성 | + | |
| - | * 5단계: 전송 대상 검증 후 발송 | + | |
| - | + | ||
| - | 이렇게 하면 '' | + | |
| - | 탐지 로직만 수정하거나 발송 단계만 별도 점검하기가 쉬워집니다. | + | |
| - | + | ||
| - | ===== 20. 문서화할 때도 단계별로 적는 것이 좋음 ===== | + | |
| - | 크론잡 설명이나 매뉴얼 문서도, | + | |
| - | 작업을 한 문단으로 뭉뚱그려 적기보다 단계별로 적는 편이 좋습니다. | + | |
| - | + | ||
| - | 좋지 않은 예: | + | |
| - | * 매일 아침 데이터를 확인해서 적당히 요약하고 필요한 사람에게 보내기 | + | |
| - | + | ||
| - | 권장 예: | + | |
| - | * 1단계: 문서 A와 시트 B를 읽기 | + | |
| - | * 2단계: 누락 행과 예외 행을 분리하기 | + | |
| - | * 3단계: 예외 행만 기준 규칙으로 재분류하기 | + | |
| - | * 4단계: 지정된 형식으로 보고문 만들기 | + | |
| - | * 5단계: 목적지 식별자를 검증한 뒤 전송하기 | + | |
| - | + | ||
| - | 이런 식으로 문서화하면, | + | |
| - | 실행 주체가 사람이든 에이전트든 동일한 순서로 작업을 재현하기 쉬워집니다. | + | |
| - | + | ||
| - | ===== 21. 요약 ===== | + | |
| - | 복잡한 크론잡은 한 번에 처리하게 만들수록 실패 확률이 높아집니다. | + | |
| - | 반대로 작업을 단계별로 잘게 나누면, | + | |
| - | 원인 추적, 중간 검증, 예외 처리, 발송 통제가 쉬워져 안정성이 올라갑니다. | + | |
| - | + | ||
| - | 따라서 복잡한 자동화 작업일수록 | + | |
| - | '' | + | |
| - | '' | + | |
| + | 크론잡을 수행해야 할 때 사용해야 하는 도구를 명시해야 한다. 어떤 도구를 사용해야 할지 모를 때에는 비서에게 지시하고 어떤 도구를 사용했는지 물어보면 된다. | ||
ai/assistant_ops_cron.1775711163.txt.gz · 마지막으로 수정됨: (바깥 편집)