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:
- O campo
Vault rootdeclarado noAGENTS.md/CLAUDE.mddo projeto (escrito pelo instalador bootstrap,scripts/bootstrap_vault.py). - 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.mdonde<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 周索引.mdonde<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árioHH:MMda entrada ativa.current_entry_date: dataYYYY-MM-DDda entrada ativa.current_entry_title: título curto em chinês da tarefa atual.bound_topic: nome do arquivo do tópico sem.md, ouNone.bind_skipped:Trueapenas 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:Trueapós a requisição atual do usuário passar pela Porta de Recuperação de Conhecimento, ou quando a porta é intencionalmente ignorada.tracking_disabled:Trueapenas se o usuário desativar o rastreamento para esta sessão.
Início da Conversa
-
Leia
<VAULT_ROOT>/00 Tasks/_Index.mdse existir. Analise as linhas do corpo da tabela como[[topico]] | timestamp | proximo-passo; trate arquivos ausentes como índice vazio. -
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.
-
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. Leiareferences/knowledge-retrieval-trigger.mdquando 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. -
Despache com base na primeira mensagem do usuário, nesta ordem:
- Intenção de bootstrap/setup (
install fade-away,setup,bootstrap,初始化,第一次使用,开源部署ou um_Index.mdausente combinado com um pedido do usuário para inicializar): leiareferences/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): leiareferences/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,检查知识库,检查任务索引,看看哪些适合变成 wikiou similar): leiareferences/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): leiareferences/promote-to-knowledge.md. - Intenção de índice semanal (
周索引,周报,weekly index,weekly summary,本周总结ou similar): leiareferences/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): leiareferences/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.mdtiver 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.
- Intenção de bootstrap/setup (
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:
- 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. Sebound_topicestiver definido, leiareferences/topic-update-protocol.md; caso contrário, sebind_skipped = False, leiareferences/promote-to-wiki.md. - Atualização automática de tópico: quando
bound_topicestiver definido e nenhum próximo passo explícito apareceu, leiareferences/topic-update-protocol.mdse 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. - Vinculação automática de tarefa: quando a entrada ativa não estiver vinculada e não tiver um
➡️ 下一步explícito, leiareferences/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. - 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 atualize02 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:
- Corresponda
Xcontra_Index.mdde forma conservadora. - Se não houver correspondência clara, faça uma pergunta curta de esclarecimento.
- Se a correspondência for clara e diferente de
bound_topic, pergunte:切到 [[X]]?我会给当前 entry 追加一行切换记录,然后打开新的 X entry。 - Após confirmação, anexe
(HH:MM) 切出当前任务,转到 [[00 Tasks/X]]。, leia a página do tópico, definabound_topic = Xe abra uma nova entrada de diário vinculada. - 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 comoAGENTS.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 a00 Tasks; pule sessões triviais ou sem tarefa.references/topic-update-protocol.md: atualizar páginas de tópico vinculadas, atualizar_Index.mde 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.mdapó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 em03 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 árvore02 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 para02 Knowledge/sem escrever até confirmação.references/promote-to-knowledge.md: criar ou atualizar páginas curadas sob02 Knowledge/após confirmação.
Regras de Formatação
- Formato de hora:
HH:MMem 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
.mdapenas 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-trackerforam removidos; se o usuário perguntar pelo rastreador antigo, explique quefade-awayo substituiu.
Casos Extremos
- Usuário desativa (
这次不用记录): definatracking_disabled = True; pule todas as escritas para a sessão, mas a leitura de_Index.mdpara 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.