Communitygithub.com

fade-away

Uma camada de memória durável para conversas de IA — mantém diários, rastreia tarefas e constrói uma base de conhecimento com curadoria humana em um cofre Obsidian em Markdown puro. Um skill de rastreamento de sessão para Claude Code e Codex.

O que é fade-away?

O fade-away é um skill especializado para agentes de IA (Claude Code, Codex) que implementa um sistema de memória persistente e estruturada. Ele funciona criando e mantendo automaticamente um fluxo de diário de sessão → wiki de tópicos → índice semanal → base de conhecimento, tudo armazenado em um cofre Obsidian no formato Markdown puro. A utilidade principal do fade-away é eliminar a necessidade de reexplicar contexto ao alternar entre tarefas, pois o agente registra cada progresso em um diário com carimbo de data/hora, vincula entradas a tópicos, atualiza automaticamente índices e promove conteúdo reutilizável para a seção de conhecimento do cofre. O skill opera em duas plataformas: como um arquivo de configuração CLAUDE.md para Claude Code e como um script de setup para Codex. Seu funcionamento é baseado em uma máquina de estados que rastreia a sessão atual (tarefa ligada, data/hora da entrada, etc.) e executa gatilhos em cada rodada da conversa: salvar progresso, verificar mudança de tópico, promover conhecimento, e gerar relatórios de saúde do cofre. O comportamento é altamente configurável via arquivos de referência no diretório references/ do skill, carregados sob demanda para manter o caminho crítico enxuto.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add Aresfangxx/fade-away-skill

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que fade-away faz?

Mantenha uma camada de memória leve de log -> wiki de tópicos -> índice -> MOC semanal -> base de conhecimento, permitindo que o usuário alterne tarefas e construa uma base de conhecimento pessoal para LLMs sem precisar reexplicar o contexto.

Contrato Operacional

Este skill opera durante toda a conversa, não apenas no primeiro turno. Antes de cada resposta do assistente, verifique se o turno dispara: início de sessão, salvamento por turno, mudança de tópico, registro manual, promoção de tópico, semanal/dashboard/lint, ou promoção de conhecimento. A regra mais comumente esquecida é o salvamento por turno: todo turno substancial do assistente anexa uma linha (HH:MM) <progresso> à entrada ativa do diário.

Mantenha o caminho crítico pequeno. Coloque mecânicas de baixa frequência em references/ e carregue-as apenas quando o gatilho correspondente for acionado.

Caminhos

<VAULT_ROOT> é o cofre Obsidian que o fade-away mantém. Resolva-o uma vez por sessão, nesta ordem:

  1. O campo Vault root declarado no AGENTS.md / CLAUDE.md do projeto (escrito pelo instalador bootstrap, scripts/bootstrap_vault.py).
  2. Se nenhum campo existir, trate o diretório de trabalho/projeto atual como a raiz do cofre.

Sempre expanda <VAULT_ROOT> para o caminho absoluto antes de ler ou escrever:

  • Diário: <VAULT_ROOT>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md onde <YYYY-MM> é o mês da própria data e <YYYY-Wnn> é a semana ISO daquela data.
  • Índice semanal: <VAULT_ROOT>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md onde <YYYY-MM> é o mês que contém o domingo da semana.
  • Índice de tarefas: <VAULT_ROOT>/00 Tasks/_Index.md
  • Páginas de tópico: <VAULT_ROOT>/00 Tasks/<nome-do-topico>.md
  • Páginas de conhecimento: <VAULT_ROOT>/02 Knowledge/<dominio>/<pagina>.md
  • Referências: diretório references/ deste skill

Se 00 Tasks/ ou _Index.md estiver faltando, pule a lógica de índice de tarefas e tópicos para a sessão. Não crie 00 Tasks/ automaticamente no meio da sessão. O registro do diário continua.

Arquivos de nível superior como 备忘.md podem viver diretamente sob 03 Journal/; não os mova.

Regra de Fuso Horário

Todas as datas e horários registrados por este skill DEVEM usar um fuso consistente, chamado vault-time. Resolva o vault-time a partir do campo Time zone no AGENTS.md / CLAUDE.md do projeto; se nenhum estiver definido, use o fuso local da máquina. O instalador bootstrap usa como padrão Asia/Hong_Kong, portanto cofres não configurados se comportam como Asia/Hong_Kong / GMT+8 / UTC+8.

Use vault-time para nomes de arquivos do diário, caminhos pai, cabeçalhos, linhas de progresso, frontmatter de tópicos, timestamps do _Index.md e inferência do índice semanal.

Verificação preferencial via shell (substitua pelo fuso configurado):

TZ=Asia/Hong_Kong date

Confie no vault-time em detrimento de dicas de fuso do ambiente. Se o fuso do ambiente conflitar com o vault-time, derive o nome do arquivo do diário, a semana ISO e HH:MM de uma leitura fresca do vault-time. Para detalhes de anexação/concorrência, leia references/journal-write-protocol.md.

Estado da Sessão

Rastreie internamente:

  • current_entry_start: horário HH:MM da entrada ativa.
  • current_entry_date: data YYYY-MM-DD da entrada ativa.
  • current_entry_title: título curto em chinês da tarefa atual.
  • bound_topic: nome do arquivo do tópico sem .md, ou None.
  • bind_skipped: True apenas após o usuário optar por não vincular.
  • task_auto_bind_checked / task_auto_bind_skipped: redefinidos para cada nova entrada de diário.
  • knowledge_candidate_prompted / knowledge_candidate_skipped: redefinidos para cada nova entrada de diário.
  • knowledge_context_checked: True após a requisição atual do usuário passar pela Porta de Recuperação de Conhecimento, ou quando a porta é intencionalmente ignorada.
  • tracking_disabled: True apenas se o usuário desativar o rastreamento para esta sessão.

Início da Conversa

  1. Leia <VAULT_ROOT>/00 Tasks/_Index.md se existir. Analise as linhas do corpo da tabela como [[topico]] | timestamp | proximo-passo; trate arquivos ausentes como índice vazio.

  2. Verifique economicamente se há uma sessão simultânea no mesmo tópico. Leia o final do diário de hoje no vault-time, se existir. Se a última linha de progresso estiver dentro de 15 minutos vault-time e sua entrada plausivelmente sobrepuser a primeira mensagem do usuário, exiba:

    ⚠️ 另一会话 <HH:MM> 刚写过 [[<topico>]],可能在并行做同一件事。我先扫一眼最新进展再回。
    

    Em seguida, leia a entrada recente para que esta resposta não contradiga o trabalho paralelo. Se não houver entrada recente sobreposta, pule silenciosamente.

  3. Execute a Porta de Recuperação de Conhecimento para qualquer requisição substancial antes de confiar apenas em _Index.md, diário de hoje ou página de tópico correspondente. Leia references/knowledge-retrieval-trigger.md quando a requisição for sobre um projeto/domínio/pessoa/método que possa ter contexto durável em <VAULT_ROOT>/02 Knowledge/, ou quando o usuário pedir contexto, análise, decisões, estratégia, continuação, revisão, estilo de escrita, workflow reutilizável ou trabalho mais antigo. Use roteamento baseado em inventário primeiro: liste a árvore Knowledge ativa, derive pastas/projetos atuais dela, então corresponda nomes de arquivo, H1/título, aliases, tags, status: canonical, páginas de navegação e páginas fonte da verdade antes de qualquer busca ampla no corpo. Pule apenas saudações aguardando confirmação, relatórios apenas de dashboard/lint, contabilidade de diário pura, consultas utilitárias atômicas e casos onde nenhum hit relevante de Knowledge existe após esta passagem de metadados primeiro.

  4. Despache com base na primeira mensagem do usuário, nesta ordem:

    • Intenção de bootstrap/setup (install fade-away, setup, bootstrap, 初始化, 第一次使用, 开源部署 ou um _Index.md ausente combinado com um pedido do usuário para inicializar): leia references/bootstrap-vault.md. Bootstrap é um caminho de configuração único; pergunte pela raiz do cofre se não estiver claro e nunca crie arquivos a menos que o usuário confirme.
    • Intenção de verificação de contexto/instrução (AGENTS, CLAUDE, 上下文, context, 经验继承, 规则漂移, estrutura do projeto, manutenção de skill/vault/workflow, ou uma fronteira de cwd/projeto nova): leia references/context-check.md. Relate apenas quando desvio for encontrado ou o usuário pedir explicitamente; não escreva arquivos de instrução a menos que o usuário confirme o patch específico.
    • Intenção de lint de memória (lint, 体检, health check, 检查知识库, 检查任务索引, 看看哪些适合变成 wiki ou similar): leia references/lint-vault-memory.md; produza um relatório primeiro e não escreva correções ou páginas de conhecimento a menos que o usuário confirme.
    • Intenção de promoção de conhecimento (沉淀成知识, 写进 knowledge, 变成 wiki, 归档成知识页 ou similar): leia references/promote-to-knowledge.md.
    • Intenção de índice semanal (周索引, 周报, weekly index, weekly summary, 本周总结 ou similar): leia references/render-weekly-index.md. Abra uma entrada de diário apenas se o módulo escrever ou atualizar um índice semanal.
    • Intenção de dashboard (看下任务, 看板, dashboard, 总览 ou similar): leia references/render-dashboard.md, apenas renderize e não abra uma entrada de diário ainda.
    • Correspondência clara de tópico existente: leia a página do tópico silenciosamente, defina bound_topic, depois abra uma entrada de diário.
    • Saudação vaga (hi, 你好, 在吗, 开始干活了 etc.): se _Index.md tiver linhas, emita ⏮️ 上次:<tarefa>,下一步是 <proximo-passo>。继续这个还是新任务? e aguarde a resposta. Vincule à primeira linha apenas se o usuário confirmar.
    • Nova tarefa substancial: não mencione tarefas antigas; deixe bound_topic = None.

Abrir Entrada de Diário

Abra uma entrada de diário apenas quando o trabalho realmente começar. Calcule o caminho diário vault-time como 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md, onde <YYYY-MM> é o mês da própria data e <YYYY-Wnn> é a semana ISO. Crie pastas de mês/semana ausentes com mkdir -p.

Se o arquivo diário estiver ausente, crie-o a partir do template em references/journal-write-protocol.md. Garanta que exista ## 🕐 任务时间线, depois anexe um cabeçalho no final dessa seção:

  • Não vinculado: ### HH:MM ▶️ <título curto em chinês>
  • Vinculado: ### HH:MM ▶️ <título curto em chinês> → [[00 Tasks/<bound_topic>]]

Armazene current_entry_start, current_entry_date e current_entry_title. Redefina flags de tarefa, candidato a conhecimento e recuperação de conhecimento para a nova entrada.

Salvamento por Turno

Após cada turno do assistente com saída substancial, anexe exatamente uma linha de progresso dentro da entrada de diário atual:

(HH:MM) <progresso em uma frase>

Anexe ao final do corpo da entrada ativa, imediatamente antes do próximo cabeçalho de linha do tempo ### ou EOF. Não reescreva linhas de progresso anteriores. Pule o salvamento se o turno for apenas uma pergunta de esclarecimento ou tracking_disabled = True.

Antes de escrever, leia references/journal-write-protocol.md quando precisar de posicionamento exato da anexação, rebasamento de escrita concorrente, tratamento de fronteira de vault-time, sintaxe de linha de pitfall, ou o template do diário.

Verificações Pós-Salvamento

Execute estas verificações após o salvamento por turno:

  1. Promoção explícita: se a saída visível contiver um marcador explícito ➡️ 下一步 ou seção ## ➡️ 下一步, atualize a camada de tópico/índice. Se bound_topic estiver definido, leia references/topic-update-protocol.md; caso contrário, se bind_skipped = False, leia references/promote-to-wiki.md.
  2. Atualização automática de tópico: quando bound_topic estiver definido e nenhum próximo passo explícito apareceu, leia references/topic-update-protocol.md se a entrada ativa puder atingir os limites de obsolescência existentes. Mantenha o comportamento atual de atualização automática; não converta em um prompt de confirmação a menos que o usuário peça.
  3. Vinculação automática de tarefa: quando a entrada ativa não estiver vinculada e não tiver um ➡️ 下一步 explícito, leia references/task-candidate-trigger.md. Crie/vincule um tópico automaticamente para sessões com aspecto de tarefa; pule apenas Q&A triviais, saudações, relatórios apenas de dashboard/lint, esclarecimento puro ou sessões sem natureza de tarefa.
  4. Candidato a conhecimento: quando conhecimento reutilizável pode ter surgido e o usuário não pediu promoção, leia references/knowledge-candidate-trigger.md. Não crie ou atualize 02 Knowledge/ automaticamente.

Mudança de Tópico no Meio da Sessão

Se o usuário disser 继续做 X, 回到 X ou pedir para alternar enquanto uma entrada já estiver aberta:

  1. Corresponda X contra _Index.md de forma conservadora.
  2. Se não houver correspondência clara, faça uma pergunta curta de esclarecimento.
  3. Se a correspondência for clara e diferente de bound_topic, pergunte: 切到 [[X]]?我会给当前 entry 追加一行切换记录,然后打开新的 X entry。
  4. Após confirmação, anexe (HH:MM) 切出当前任务,转到 [[00 Tasks/X]]。, leia a página do tópico, defina bound_topic = X e abra uma nova entrada de diário vinculada.
  5. Se o usuário recusar, mantenha a vinculação existente.

Não alterne tópicos silenciosamente no meio da sessão.

Solicitação de Registro Manual

Se o usuário disser 记录一下, 记一下刚才的进展 ou similar, adicione uma linha de progresso extra à entrada atual resumindo o progresso desde o salvamento anterior. Não abra uma nova entrada nem feche a entrada atual a menos que o usuário peça explicitamente para alternar tarefas.

Módulos

Carregue workflows de baixa frequência apenas sob demanda:

  • references/journal-write-protocol.md: criação de diário, posicionamento de anexação, tratamento de fronteira de vault-time, rebasamento de escrita concorrente, sintaxe de linha de pitfall e template do diário.
  • references/bootstrap-vault.md: workflow de configuração única para o cofre Obsidian de um novo usuário; cria a estrutura de diretórios/templates/índices e pontos de entrada de instrução mínimos do fade-away apenas após confirmação.
  • references/context-check.md: verificação de início a frio ou mudança de fronteira para superfícies de instrução/contexto obsoletas como AGENTS.md, CLAUDE.md, notas de estrutura de projeto e herança de Knowledge; relate desvio sem escrever até confirmação.
  • references/task-candidate-trigger.md: vincular automaticamente entradas de tarefa substanciais não vinculadas a 00 Tasks; pule sessões triviais ou sem tarefa.
  • references/topic-update-protocol.md: atualizar páginas de tópico vinculadas, atualizar _Index.md e executar o comportamento atual de Atualização Automática de Tópico.
  • references/promote-to-wiki.md: vincular uma entrada de diário não vinculada a uma página de tópico e atualizar _Index.md após um ➡️ 下一步 explícito ou gatilho de vinculação automática de tarefa.
  • references/render-dashboard.md: renderizar um dashboard de tarefas somente leitura a partir de _Index.md.
  • references/render-weekly-index.md: gerar ou atualizar um MOC semanal sob demanda em 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md.
  • references/lint-vault-memory.md: renderizar um relatório de saúde somente leitura para as camadas de tarefa, diário, índice semanal e conhecimento.
  • references/knowledge-retrieval-trigger.md: antes do trabalho substancial, inventariar a árvore 02 Knowledge/ ativa, classificar candidatos a partir de metadados e ler um pequeno número de páginas relevantes para que contexto durável mais antigo, métodos e fatos de projeto possam influenciar a resposta.
  • references/knowledge-candidate-trigger.md: propor material de diário reutilizável para 02 Knowledge/ sem escrever até confirmação.
  • references/promote-to-knowledge.md: criar ou atualizar páginas curadas sob 02 Knowledge/ após confirmação.

Regras de Formatação

  • Formato de hora: HH:MM em 24 horas usando o fuso vault-time configurado.
  • Título do diário: curto, descritivo em chinês; evite títulos genéricos como 任务1.
  • Nome do arquivo do tópico: kebab-case, sem espaços, extensão .md apenas no disco.
  • Wikilink do tópico no diário: [[00 Tasks/<topico>]].
  • Formato da linha do índice: | [[<topico>]] | YYYY-MM-DD HH:MM | <proximo-passo escapado> |.
  • Diretórios legados task-tracker foram removidos; se o usuário perguntar pelo rastreador antigo, explique que fade-away o substituiu.

Casos Extremos

  • Usuário desativa (这次不用记录): defina tracking_disabled = True; pule todas as escritas para a sessão, mas a leitura de _Index.md para contexto é permitida.
  • Cruzando meia-noite: use meia-noite vault-time. Após a meia-noite vault-time, abra uma entrada de continuação no diário do novo dia vault-time e continue os salvamentos por turno lá.
  • Turno apenas de dashboard: renderize o dashboard e aguarde; não abra uma entrada de diário até que o usuário comece o trabalho real.
  • Página de tópico ausente para uma correspondência de índice: diga que a linha do tópico existe mas a página está faltando, então pergunte se deve recriá-la ou continuar não vinculado.

Habilidades Relacionadas