Community程式設計與開發github.com

DGatoM/DG-Claw

為 AI 智能體在其所在的真實機器上(透過 systemd 計時器與 persona-cron-mgr.py)建立、列出與刪除真正的排程任務,讓智能體即使無人對話也能在指定時間自動執行。每當主人要求排程、定時或重複智能體工作時(如「每天九點傳摘要給我」、「建立 cron」、「建立排程」、「每小時執行這個」、「你有哪些 cron」、「取消那個排程」)都應使用此技能。當音訊轉錄中出現 CHROME、CROME、CRONO、CROM 或 CRONI 等類似 cron 的詞語時同樣適用。用於「提醒主人」(如「提醒我…」、「下午三點通知我」)的請求並非例行任務:應使用「提醒」技能,該技能會持續提醒直到確認。絕對不要使用 Claude Code 的會話排程功能:那個會隨會話結束而消失,這個則是永久留在機器上。

DG-Claw 是什麼?

這項技能專為 DG Claw 智能體設計,讓它能在其運行的機器上建立持久化的 systemd 計時器排程任務。不同於 Claude Code 的會話級排程(會話結束即消失),此技能透過底層的 systemd 計時器確保任務在機器重啟後依然存在,並在指定時間自動觸發智能體執行任務。它支援建立、列出、編輯和刪除排程,可設定每日、每週、每月或一次性定時任務,並提供乾執行(dry-run)模式以避免失誤。排程觸發時不是直接執行命令,而是向智能體的活動會話發送一條「提示訊息」,讓智能體帶著完整的上下文和記憶來處理任務,而非機械式地輸出固定文字。此外,它內建了對音訊轉錄錯誤(例如將「cron」誤轉為「Chrome」)的智慧處理,並嚴格限制每個智能體最多 10 個自訂排程,以確保系統穩定性。

相容平台✓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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

/dgclaw:agenda, marcar compromisso de verdade

O dono quer que alguma coisa aconteça num horário, sem ele estar por perto. Esta skill transforma esse pedido num timer do systemd, que vive na máquina, sobrevive a reinício e dispara sozinho.

A regra de ouro, antes de qualquer coisa

Existem dois "agendamentos" no mundo, e eles não se parecem em nada:

O agendamento da sessão do ClaudeA agenda do DG Claw (esta skill)
onde vivedentro da conversa abertana máquina, no systemd
quando a conversa fechamorre juntocontinua
serve pra"daqui a 10 minutos volte nisso" dentro do trabalho de agora"todo dia às 9h faça X", pra sempre

Você é um agente DG Claw: você mora numa máquina que fica ligada. Quando o dono pede um agendamento, ele está pedindo o da direita. Nunca responda que "só consigo agendar dentro da minha sessão": isso é falso pra você. Você marca na máquina.

Quando o áudio disser "Chrome"

O dono manda muita mensagem de voz, e a transcrição erra a palavra cron com frequência. Num pedido de horário, todas estas são a mesma coisa:

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

"Cria um Chrome pra mim das 9h" é cria um cron das 9h. Não peça pra ele repetir e não vá abrir navegador. A única leitura em que Chrome é navegador mesmo é quando o assunto é abrir site, aba, extensão ou login. Na dúvida entre as duas, confirme numa linha só: "você quer dizer um agendamento, certo?".

Como funciona por dentro (diga isso ao dono se ele perguntar)

O timer não executa comando solto. Na hora marcada, ele cutuca a sua sessão viva com um recado escrito por você, e aí você decide o que fazer, com toda a sua memória e o seu jeito. É a diferença entre um robô que dispara texto pronto e um funcionário que na hora certa se lembra do que tinha pra fazer.

Por isso o campo mais importante é o --poke: é o bilhete que o seu "eu do futuro" vai receber. Escreva como quem deixa recado pra si mesmo, com contexto suficiente pra agir sem precisar perguntar nada. Compare:

  • ruim: resumo
  • bom: Hora do resumo do dia para o dono: olhe a working-memory e o que aconteceu hoje, monte um resumo curto e mande pelo Telegram.

Hora é a hora do dono. Nunca converta

A hora que ele fala é a hora do relógio dele. "Cinco da tarde" é 17:00:00, escrito assim, e ponto. Não converta pra UTC, não some nem subtraia nada. O gerenciador carimba o fuso do dono (DGCLAW_TZ) no próprio agendamento, então quem faz a conversão é o sistema, que não erra. Fazer a conta na mão é o jeito conhecido de marcar 17h e o compromisso cair às 20h.

Duas coisas que ajudam a não escorregar:

  • Descubra que horas são de verdade antes de calcular qualquer coisa relativa ("daqui a duas horas", "amanhã cedo"). A sua sessão pode estar aberta há dias, e a sua noção de agora está velha. Rode date '+%d/%m %H:%M %Z' e use o que voltou.
  • Confirme repetindo em português. Depois de criar, diga a ele quando roda a próxima vez, com dia e hora. O comando já devolve isso na linha proxima:. Se o que voltou não bater com o que ele pediu, o problema é agora, não daqui a uma semana.

Se ele estiver num fuso diferente do servidor e isso aparecer, não invente correção: mostre o que timedatectl diz e ofereça acertar (timedatectl set-timezone <fuso do dono>), que é mexida no servidor inteiro e precisa da autorização dele.

O comando

Sempre pelo gerenciador, nunca mexendo em systemd na mão:

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 <apelido> --calendar '<horário>' --poke '<recado>' --desc '<o que é>' --dry-run
python3 "$MGR" --config "$CFG" create --name <apelido> --calendar '<horário>' --poke '<recado>' --desc '<o que é>'
python3 "$MGR" --config "$CFG" edit   --name <apelido> ... (mesma assinatura do create)
python3 "$MGR" --config "$CFG" remove --name <apelido>

Se você não é root (o agente que roda no container da v1), o gerenciador pede sudo sozinho quando precisa gravar a rotina. Não precisa fazer nada. A rotina roda como o dono da pasta do agente, não como root.

  • --name: apelido curto em kebab-case (resumo-do-dia, cobranca-cliente). É a identidade da rotina: é por ele que se edita e se remove.
  • --calendar ou --every, nunca os dois:
    • --calendar '*-*-* 09:00:00' → todo dia às 9h
    • --calendar 'Mon..Fri *-*-* 08:30:00' → de segunda a sexta, 8h30
    • --calendar 'Mon *-*-* 18:00:00' → toda segunda, 18h
    • --calendar '*-*-01 10:00:00' → todo dia 1º do mês, 10h
    • --every 30min (ou 2h, 1d) → de tempos em tempos, contado a partir da última vez
    • --calendar '2026-10-17 14:32:00' → uma vez só, nesse dia e hora. Serve para VOCÊ fazer algo num horário marcado (conferir um e-mail, gerar um relatório): rode date, some o prazo e escreva a data COMPLETA. Nunca use *-*-* aqui (vira todo dia) nem --every (repete). No --poke, acrescente ao final: "Depois de fazer, remova esta rotina com remove --name .", para ela não ficar ocupando uma das 10 vagas.
    • Avisar o dono ("me lembra daqui a 2 minutos", "amanhã às 10h me avisa") não é rotina: use a skill /dgclaw:lembretes. Ela aparece na tela e no celular dele e insiste até ele confirmar. O timer de uma vez só desta skill avisa uma vez e some.
  • O fuso é o da máquina (DGCLAW_TZ), já configurado. Não faça conta de fuso na mão.

Rode sempre com --dry-run primeiro e mostre ao dono o que vai ser criado, em português: o apelido, quando roda e o recado. Só depois rode de verdade. É barato, e evita marcar compromisso errado num horário que ninguém vai conferir.

O que fazer em cada pedido

"Marca pra mim..." → entenda o horário, escolha o apelido, escreva o recado, --dry-run, mostre, confirme, crie. Feche dizendo quando roda a próxima vez e que ele pode ver isso no painel, na aba Operações.

"Quais agendamentos você tem?" → list --json e traduza pra frases. Não despeje JSON no Telegram. Diga o apelido, quando roda e o que ele faz quando dispara.

"Cancela o X" → remove --name X. Confirme que sumiu e avise que ele some do painel também. Se o dono descrever a rotina em vez de dar o apelido, liste antes e confirme qual é.

"Muda o horário do X" → edit, não remove-e-cria. O edit preserva o apelido e o histórico da rotina.

Limites que existem por segurança (e valem ser ditos)

  • Você só governa as rotinas do seu bloco, com o prefixo dgclaw-<slug>-self-. As rotinas de vida que vieram com você (reflexão noturna, auditoria, batimento, pulso) e qualquer outra coisa da máquina são intocáveis por este comando, e isso é proposital.
  • Teto de 10 rotinas próprias. Atingiu, o comando recusa e você precisa remover uma antes. Se isso acontecer, mostre a lista ao dono e pergunte qual sai.
  • Todo pedido é validado antes: apelido, formato de horário e tamanho do recado. Se o gerenciador recusar, ele diz o motivo em uma linha. Leia a mensagem e conserte, não insista.
  • O manifesto (.dgclaw/self-crons.json) é gravado com backup automático a cada mudança.

Onde o dono vê isso

No painel, aba Operações, cartão Agenda do agente. Aquela lista não é um arquivo de configuração: ela é lida do systemd na hora em que a página abre. Então vale a promessa simples, e você pode dizer isso a ele com todas as letras: se está lá, existe; se você apagar, some de lá sozinho. Nunca vai aparecer rotina fantasma que já foi removida, nem faltar uma que você acabou de criar.

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.

相關技能