Community코딩 & 개발github.com

DGClaw: 진짜 일정

에이전트가 실제로 살고 있는 머신에 systemd 타이머를 예약, 조회, 취소합니다 (persona-cron-mgr.py를 통해). 주인이 요청한 시간에 에이전트가 대화 없이도 자동으로 작업을 수행하도록 합니다.

DGClaw: 진짜 일정란 무엇인가요?

DGClaw 에이전트를 위한 '진짜 일정' 스킬입니다. 이 스킬은 주인이 말로 요청한 시간 기반 작업을 머신에 영구적으로 남는 systemd 타이머로 변환합니다. '매일 9시에 요약 보내줘', '크론 만들어줘', '한 시간마다 실행해' 같은 요청을 처리하며, '나중에 알려줘' 같은 알림 요청은 `/dgclaw:lembretes` 스킬로 보내야 합니다. 내부적으로 `persona-cron-mgr.py` 스크립트를 사용하며, systemd 유닛을 생성/수정/삭제합니다. 음성 전사에서 'Chrome', 'cromo' 같은 오인식 단어를 cron으로 해석하는 기능이 포함되어 있어 음성 명령의 정확도를 높입니다. 세션 기반 예약(Claude Code의 내장 일정)과 달리 타이머가 머신에 남아 에이전트가 항상 응답 가능하게 해줍니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DGatoM/DG-Claw/tree/HEAD/skills/agenda

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

/dgclaw:agenda, 진짜 일정 등록하기

주인이 주변에 없어도 어떤 일이 특정 시간에 일어나길 원합니다. 이 스킬은 그 요청을 systemd 타이머로 변환합니다. 이 타이머는 머신에 살아 있고, 재부팅에도 살아남으며, 혼자서 발동합니다.

무엇보다도 먼저, 황금률

세상에는 두 종류의 "예약"이 있으며, 이들은 전혀 다릅니다:

Claude 세션 예약DGClaw 일정 (이 스킬)
어디에 있나열려 있는 대화 안에머신, systemd 안에
대화가 닫히면같이 죽는다계속 간다
용도"10분 후에 다시 이거 봐" 지금 작업 안에서"매일 9시에 X 해", 영원히

당신은 DGClaw 에이전트입니다: 당신은 켜져 있는 머신에 삽니다. 주인이 예약을 요청할 때, 그는 오른쪽에 있는 것을 요청하는 것입니다. "제 세션 안에서만 예약할 수 있어요"라고 절대 대답하지 마세요. 그것은 당신에게 거짓입니다. 당신은 머신에 등록합니다.

오디오에서 "Chrome"이라고 말할 때

주인이 음성 메시지를 많이 보내는데, 전사가 cron이라는 단어를 자주 잘못 알아듣습니다. 시간 요청에서 다음은 모두 같은 것입니다:

Chrome, crome, crono, crom, croni, cronn, "corn"

"9시에 Chrome 만들어 줘"는 9시에 cron 만들어 줘입니다. 반복해서 말하게 하지 말고 브라우저를 열지 마세요. 크롬이 진짜 브라우저인 유일한 경우는 사이트, 탭, 확장 프로그램, 로그인을 여는 주제일 때입니다. 둘 중 헷갈리면 한 줄로 확인하세요: "예약을 말씀하시는 거죠?"

내부 동작 방식 (주인이 물어보면 이렇게 설명하세요)

타이머는 단순한 명령을 실행하지 않습니다. 예정된 시간에, 당신이 작성한 메모와 함께 살아 있는 당신의 세션을 찌릅니다. 그러면 당신은 모든 기억과 방식으로 무엇을 할지 결정합니다. 이것은 준비된 텍스트만 내뱉는 로봇과, 정확한 시간에 해야 할 일을 기억하는 직원의 차이입니다.

따라서 가장 중요한 필드는 --poke입니다: 미래의 당신이 받을 쪽지입니다. 자신에게 메모를 남기듯이, 질문할 필요 없이 행동할 수 있을 만큼 충분한 맥락을 제공하여 작성하세요. 비교:

  • 나쁨: resumo
  • 좋음: 주인을 위한 오늘의 요약 시간: working-memory와 오늘 있었던 일을 보고, 짧은 요약을 작성하여 Telegram으로 보내세요.

시간은 주인의 시간입니다. 절대 변환하지 마세요

그가 말하는 시간은 그의 시계 시간입니다. "오후 5시"는 17:00:00이고, 그렇게 작성하는 것이 전부입니다. UTC로 변환하지 말고, 더하거나 빼지 마세요. 관리자가 주인의 시간대(DGCLAW_TZ)를 예약 자체에 찍어 넣기 때문에, 변환은 시스템이 하며 실수하지 않습니다. 수동으로 계산하면 17시로 예약한 일이 20시에 떨어지는 확실한 방법입니다.

실수를 방지하는 두 가지 방법:

  • 무언가 상대적인 것을 계산하기 전에 실제 시간이 몇 시인지 알아내세요 ("지금부터 2시간 후", "내일 아침 일찍"). 당신의 세션이 며칠 동안 열려 있을 수 있으며, 지금에 대한 당신의 인식이 오래되었을 수 있습니다. date '+%d/%m %H:%M %Z'를 실행하고 반환된 값을 사용하세요.
  • 포르투갈어로 반복하여 확인하세요. 생성한 후, 다음에 언제 실행되는지 날짜와 시간을 알려주세요. 명령어는 이미 proxima: 줄에 이것을 반환합니다. 반환된 내용이 그가 요청한 것과 일치하지 않으면, 문제는 지금입니다. 일주일 후가 아닙니다.

만약 그가 서버와 다른 시간대에 있고 이것이 드러나면, 수정을 발명하지 마세요. timedatectl이 말하는 것을 보여주고 맞추겠다고 제안하세요 (timedatectl set-timezone <주인의 시간대>). 이것은 서버 전체를 변경하는 것이며 그의 허가가 필요합니다.

명령어

항상 관리자를 통해야 하며, systemd를 직접 건드리지 마세요:

MGR="${CLAUDE_PLUGIN_ROOT}/scripts/persona-cron-mgr.py"
CFG="<workspace>/.dgclaw/config.sh"

python3 "$MGR" --config "$CFG" list --json
python3 "$MGR" --config "$CFG" create --name <별명> --calendar '<시간>' --poke '<메모>' --desc '<설명>' --dry-run
python3 "$MGR" --config "$CFG" create --name <별명> --calendar '<시간>' --poke '<메모>' --desc '<설명>'
python3 "$MGR" --config "$CFG" edit   --name <별명> ... (create와 동일한 시그니처)
python3 "$MGR" --config "$CFG" remove --name <별명>

루트가 아닌 경우 (v1 컨테이너에서 실행되는 에이전트), 관리자는 루틴을 기록해야 할 때 스스로 sudo를 요청합니다. 따로 할 것은 없습니다. 루틴은 root가 아닌 에이전트 폴더 소유자로 실행됩니다.

  • --name: 케밥-케이스의 짧은 별명 (resumo-do-dia, cobranca-cliente). 루틴의 식별자이며, 이것으로 편집하고 제거합니다.
  • --calendar 또는 --every, 둘 다는 안 됩니다:
    • --calendar '*-*-* 09:00:00' → 매일 9시
    • --calendar 'Mon..Fri *-*-* 08:30:00' → 월요일부터 금요일까지, 8시 30분
    • --calendar 'Mon *-*-* 18:00:00' → 매주 월요일, 18시
    • --calendar '*-*-01 10:00:00' → 매월 1일, 10시
    • --every 30min (또는 2h, 1d) → 일정 간격으로, 마지막 실행 시간부터 계산
    • --calendar '2026-10-17 14:32:00' → 한 번만, 해당 날짜와 시간에. 당신이 정해진 시간에 무언가를 하기 위해 사용합니다 (이메일 확인, 보고서 생성): date를 실행하고, 기한을 더한 후 전체 날짜를 작성하세요. 여기에는 절대 *-*-* (매일이 됨)나 --every (반복)를 사용하지 마세요. --poke에 마지막에 추가하세요: "작업 후, remove --name <별명>으로 이 루틴을 제거하세요." 그래야 10개의 슬롯을 차지하지 않습니다.
    • 주인에게 알림 ("2분 후에 알려줘", "내일 10시에 알려줘") 은 루틴이 아닙니다: /dgclaw:lembretes 스킬을 사용하세요. 그것은 그의 화면과 휴대폰에 나타나고 그가 확인할 때까지 계속 알립니다. 이 스킬의 한 번 타이머는 한 번 알리고 사라집니다.
  • 시간대는 머신의 시간대(DGCLAW_TZ)이며 이미 설정되어 있습니다. 시간대 계산을 수동으로 하지 마세요.

항상 먼저 --dry-run을 실행하고 생성될 내용을 포르투갈어로 주인에게 보여주세요: 별명, 실행 시기, 메모. 그런 다음에만 실제로 실행하세요. 저렴하고, 아무도 확인하지 않을 시간에 잘못된 일정을 등록하는 것을 방지합니다.

각 요청에 대한 처리

"나를 위해 등록해 줘..." → 시간을 이해하고, 별명을 선택하고, 메모를 작성하고, --dry-run하고, 보여주고, 확인하고, 생성하세요. 다음 실행 시간을 말하고 그가 Operations 탭의 패널에서 이것을 볼 수 있다고 알리며 마무리하세요.

"어떤 예약들이 있어?" → list --json하고 문장으로 변환하세요. Telegram에 JSON을 그대로 덤프하지 마세요. 별명, 실행 시기, 발동 시 무엇을 하는지 알려주세요.

"X 취소해 줘" → remove --name X. 사라졌음을 확인하고 패널에서도 사라진다고 알리세요. 주인이 별명 대신 루틴을 설명하면 먼저 목록을 보여주고 어떤 것인지 확인하세요.

"X 시간 변경해 줘" → edit을 사용하세요. 제거하고 다시 생성하지 마세요. edit은 별명과 루틴의 기록을 보존합니다.

보안을 위해 존재하는 제한 사항 (알려둘 가치가 있습니다)

  • 당신은 자신의 블록의 루틴만 관리할 수 있으며, 접두사 dgclaw-<slug>-self-가 붙습니다. 당신과 함께 온 생명 루틴 (야간 반성, 감사, 심박) 및 머신의 다른 모든 것은 이 명령어로 건드릴 수 없으며, 이는 의도적입니다.
  • 최대 10개의 자체 루틴. 도달하면 명령어가 거부하고 하나를 제거해야 합니다. 이런 일이 발생하면 주인에게 목록을 보여주고 어느 것을 삭제할지 물어보세요.
  • 모든 요청은 먼저 검증됩니다: 별명, 시간 형식, 메모 길이. 관리자가 거부하면 한 줄에 이유를 말합니다. 메시지를 읽고 수정하세요. 반복해서 시도하지 마세요.
  • 매니페스트 (.dgclaw/self-crons.json)는 변경될 때마다 자동 백업과 함께 기록됩니다.

주인이 이것을 보는 곳

패널의 Operations 탭, Agent Schedule 카드. 그 목록은 설정 파일이 아닙니다: 페이지가 열릴 때 systemd에서 실시간으로 읽힙니다. 따라서 간단한 약속이 성립하며, 당신은 이것을 분명히 말할 수 있습니다: 거기에 있으면 존재하는 것입니다; 삭제하면 저절로 사라집니다. 이미 제거된 루틴이 유령처럼 나타나지 않으며, 방금 만든 루틴이 누락되지 않습니다.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

DGatoM/DG-Claw

Transforma um processo que o agente acabou de fazer com o dono numa skill dele (pasta .claude/skills/<nome>/SKILL.md no workspace), pra fazer igual da próxima vez, e melhora essa skill quando o dono corrige o resultado. Use quando terminar com o dono um processo de 3 passos ou mais que dá pra repetir (montar um relatório, preparar um roteiro, conferir números numa fonte, organizar um material), quando o dono disser "aprende isso", "guarda esse jeito de fazer", "faz uma skill disso", "da próxima vez faz igual", "transforma isso num processo", "/dgclaw:aprender", ou quando ele corrigir alguma coisa feita por uma skill que você mesmo escreveu. Também serve pra reflexão da noite decidir se vale sugerir uma skill. Nunca cria skill sem o sim do dono.

DGatoM/DG-Claw

Gera ou troca o AVATAR do assistente DG Claw, a figura que aparece no painel. Use quando o usuario pedir "gerar o avatar", "criar a carinha dele", "mudar o mascote do painel", "trocar a foto do assistente", "fazer a imagem dele", ou rodar /dgclaw:avatar. Explica os tres caminhos (usar o que ja vem, gerar a partir da aparencia descrita, ou subir a propria imagem) e onde os arquivos ficam. As expressoes que mudam com o humor sao da extensao DG Alive.

DGatoM/DG-Claw

Posta e consulta o quadro de avisos entre os agentes do DG Claw, pelo comando dgclaw-api. Use quando o agente precisar contar algo aos outros agentes ("avisar os outros agentes", "conta pra Marina que...", "posta no quadro", "deixa um aviso pra equipe", "registra essa decisão pra todos"), quando precisar saber o que a equipe registrou ("o que a equipe registrou", "quais as preferências do dono", "tem aviso novo?"), corrigir ou retirar um aviso que postou, ou quando chegar um recado no formato <quadro-de-avisos de="..." id="..." tipo="...">. Serve para decisões, preferências, entregas, aprendizados, referências, pedidos e o resumo do dia. Não serve para conversa do dia a dia, andamento de tarefa nem dado de aluno ou cliente.

DGatoM/DG-Claw

Conecta o agente a um canal externo de conversa, Telegram ou WhatsApp, para o dono falar com ele pelo celular. Use quando o dono disser "quero falar com você no Telegram", "liga o Telegram", "configura o Telegram pra mim", "conecta meu WhatsApp", "quero falar com você no WhatsApp", "quero conversar pelo celular", "desliga o Telegram", "desliga o WhatsApp" ou "apaga a conexão". Conduz o passo a passo em linguagem simples usando o comando dgclaw-agente: no Telegram, criar o bot no BotFather, parear o dono e ligar; no WhatsApp, avisar o risco (API não oficial, risco de banimento, só com número secundário), parear por código, liberar o número do dono e ligar. Também ensina a responder pelo WhatsApp (tools whatsapp_reply e whatsapp_send_file) e a tratar as mensagens de lá como externas. Não funciona no agente Admin, que não tem canal externo.

관련 스킬