manage-discord-sessions
Codex 또는 Claude로 실행되는 Discord 백그라운드 작업의 설정·상태·실시간 활동·재부팅 복구를 ADK 워크스페이스에서 관리합니다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Codex 또는 Claude로 실행되는 Discord 백그라운드 작업의 설정·상태·실시간 활동·재부팅 복구를 ADK 워크스페이스에서 관리합니다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Configure, observe, and recover Discord AI jobs from the ADK workspace with either Codex or Claude. Use for Discord setup, background-job status, live activity, stalled-job diagnosis, reboot recovery, idle rotation, or session history.
세션 변경사항을 분석해 verify-* 스킬 드리프트를 탐지하고 자동 생성/업데이트합니다. issue-driven-development Sync 단계, 새 패턴/규칙 도입 후, PR 전 검증 스킬 커버리지 확인 시 반드시 사용. /manage-skills로 호출.
원요청 무결성과 세션 바인딩 하네스의 원문 해시체인, 완전 범위 추적, 서명 권한, 2회 Clean 결박, Claude Code/Codex 등록·동등성을 결정론으로 검증합니다. request-contract·session-inject 코어/어댑터·설정·스키마·review-pass를 수정한 뒤, Review/Post-test Review 및 커밋 전에 반드시 사용합니다.
등록된 모든 verify-* 스킬을 순차 실행해 통합 검증 보고서를 생성합니다. 기능 구현 후, PR 전, 코드 리뷰 시, issue-driven-development Review/Post-test Review 단계마다 반드시 사용. /verify-implementation으로 호출.
기존 제품의 경로·진입점·내비게이션·사용자 여정·운영 표면이 기능 추가 뒤에도 유지되는지 기준 버전과 보존 계약으로 검증합니다. 기존 프로젝트의 기능 추가·통합·리팩터링 후, planning/integration 리뷰와 release 전에 반드시 사용합니다.
Stage-gated multi-AI cross-validation review with optional REQ-ID traceability. 4 stages (planning, development, test, integration) with configurable reviewers, finding consensus, and convergence loop. Fully project-agnostic and distributable.
| name | manage-discord-sessions |
| description | Codex 또는 Claude로 실행되는 Discord 백그라운드 작업의 설정·상태·실시간 활동·재부팅 복구를 ADK 워크스페이스에서 관리합니다. |
Codex와 Claude가 함께 쓰는 관리 스킬입니다. 별도 제품 CLI나 naia-agent, naia-shell 없이 동일한 내부 스크립트로 로컬 상태를 읽습니다.
status, jobs, job, watch, history, latest 조회, 해시 검증 첨부 복구, 명시적 replyexec --json 및 Claude -p --output-format stream-json 실행 어댑터recovery_review로 표시하는 재부팅 복구!naia status, !naia jobs, !naia job <id>Discord 세션 상태 보여줘
현재 백그라운드 작업 보여줘
job <id>가 지금 뭘 하는지 보여줘
job <id>를 실시간으로 지켜봐
완료를 뒷받침하는 테스트 결과 보여줘
스킬은 내부적으로 다음 명령을 사용합니다.
scripts/manage-discord-sessions.sh status [--json]
scripts/manage-discord-sessions.sh jobs [--active|--failed] [--json]
scripts/manage-discord-sessions.sh job <job-id> [--events] [--json]
scripts/manage-discord-sessions.sh watch [--job <job-id>] [--jsonl]
scripts/manage-discord-sessions.sh history --channel <channel-id> [--author <user-id>] [--limit 20] [--json]
scripts/manage-discord-sessions.sh latest --channel <channel-id> [--author <user-id>] [--json]
scripts/manage-discord-sessions.sh attachment --channel <channel-id> --message <message-id> --attachment <attachment-id> --output <absolute-path> [--expected-sha256 <hex>]
scripts/manage-discord-sessions.sh reply --channel <channel-id> --content-file <소유자 전용 절대 경로> [--json]
scripts/manage-discord-sessions.sh service install
scripts/manage-discord-sessions.sh service status
scripts/manage-discord-sessions.sh service restart
watch는 로컬 SQLite 기록만 읽습니다. Discord REST 수신 폴링이 아닙니다.
history와 latest는 운영자가 명시적으로 한 번 실행하는 읽기 전용 조회입니다. read 역할과 유일한 운영 바인딩이 있어야 하며 수신 폴링으로 사용하지 않습니다. attachment는 정확한 메시지와 Discord CDN, 크기, 선택한 SHA-256을 검증한 뒤 소유자 전용 파일만 만듭니다. reply는 reply 역할과 유일한 운영 바인딩을 확인하고, 소유자 전용 파일의 내용을 멘션 없이 한 번 전송합니다. 결과가 unknown이면 자동 재전송하지 않습니다.
progressing: 최근 구조화된 활동 증거가 있음running_no_detail: 소유한 프로세스는 살아 있지만 백엔드가 세부 진행을 제공하지 않음waiting: 승인·대기열·재시도처럼 명확한 기다림suspected_stalled: 활동 없음 제한을 넘긴 경고이며, 설정된 감시기가 한 번 개입해 running 표기만 남지 않게 함unresponsive: 하드 제한이나 객관적인 프로세스 실패unknown: 증거가 낡거나 없거나 서로 충돌함not_applicable: 이미 끝난 작업이라 활동 상태를 적용하지 않음최근 출력이 있다고 결과가 옳은 것은 아닙니다. 요구사항·빌드·테스트·리뷰 증거와 완료 주장을 따로 보여줍니다. AI가 스스로 “테스트 통과”라고 말한 것만으로는 검증 완료가 되지 않습니다.
naia-settings/messenger-sessions/config.json
naia-settings/.sessions/messenger-sessions/runtime.sqlite3
실제 설정과 세션 상태는 Git에 올리지 않습니다. 설정에는 비밀값이 아니라 자격 증명 참조만 둡니다. Discord 토큰은 naia-settings/.keys/messenger-sessions/<credentialRef>에 권한 0600으로 두며, 설정 파일도 0600이어야 합니다. backend.selected를 codex 또는 claude로 선택하면 되고 naia-agent나 naia-shell은 필요하지 않습니다.
사람의 권한 설정이 바뀌면 runtime.permissionProfileEpoch도 바꾸고, Discord에서 사람이 없이 처리할 작업은 runtime.approvalPolicy를 never로 둡니다. 복구나 대기열 실행 때 이전 자식의 명령 옵션을 재사용하지 않고 현재 프로필로 새 자식을 만듭니다. 바뀐 무승인 프로필은 이전의 보호된 수정 작업도 새 자식으로 교체할 수 있지만, 바뀌지 않은 수정 작업 복구는 계속 검토가 필요합니다. noProgressInterventionSeconds는 소유한 자식이 무진행일 때 한 번 중단시키는 한계이고, operatorResponseSeconds는 Discord 채널에 안전한 접수 응답을 보내거나 recovery_review로 넘기는 기한입니다. 자식의 작업 위치는 반드시 절대 실제 디렉터리여야 하고 cwd와 Codex의 --cd로 함께 전달되므로 상대 경로나 상위 도구의 작업 위치 설정은 거부합니다.
서비스는 재부팅 뒤 터미널이나 과거 AI 세션 화면을 자동으로 열지 않습니다. 화면이 떠 있다는 사실은 실제 작업 상태의 증거가 아니기 때문입니다. 대신 다음 정보가 SQLite 안전 이벤트 기록에 남습니다.
status: 서비스가 실제로 살아 있는지, heartbeat가 신선한지, Gateway 재개 상태가 있는지jobs, job <id> --events: 작업 단계, 최근 안전 활동, 자식 프로세스 소유권, 전송 상태, 대기·멈춤 의심 이유completionAssessment: 요구사항·빌드·테스트·리뷰 증거. 활동 중이라는 것과 결과가 올바르다는 것을 분리해 보여줍니다.실시간 확인은 watch --job <id> 또는 Discord의 !naia 명령을 사용합니다. watch는 로컬 SQLite만 읽으며 Discord 수신 폴링이 아닙니다. systemd journal에는 안전한 서비스 사유 코드만 남고 프롬프트, 모델 원문 출력, 최종 답변, 토큰, 명령, 로컬 경로는 저장하지 않습니다.
service.startAt=login이면 로그인 뒤, boot이면 설치기가 사용자 linger를 활성화해 부팅 때 복구를 시작합니다. 프롬프트는 소유자 전용 로컬 복구 키로 인증 암호화한 암호문만 저장합니다. recovery.autoRetry=true일 때도 읽기 전용·계획 모드 작업만 같은 작업 ID의 새 실행으로 이어집니다. 쓰기 가능 작업, 자동 재시도 비활성화, 키·암호문 손상은 recovery_review가 됩니다. Discord 전송 여부가 불확실한 답변은 자동 재전송하지 않습니다.
service install은 설치 터미널의 PATH에서 선택한 Codex 또는 Claude 실행파일을 찾습니다. Linux는 사용자 systemd unit에 고정합니다. Windows는 소유자 전용 실행 파일과 제한된 ONLOGON 예약 작업을 설치하며, 로컬 정책이 예약 작업 생성을 거부하면 소유자 전용 숨김 시작프로그램으로 자동 대체합니다. service status, start, stop, restart, enable, disable은 실제 설치된 등록 방식을 검증한 뒤 제어합니다. naia.cmd도 함께 설치됩니다. backend.selected를 바꾼 뒤에는 단순 재시작이 아니라 service install을 다시 실행해야 새 실행 경로가 고정됩니다.
백엔드 완료 판정은 닫힌 방식입니다. 공급자가 결과를 unknown으로 표시하거나 명시적 성공 근거가 없으면 성공으로 올리지 않고 Discord에도 전달하지 않습니다.
검증 명령은 pnpm test:discord-sessions입니다. 상세 설계는 docs/design/discord-session-observability.md, 요구사항은 DSO-001~DSO-007이 정본입니다.