🛠️ How-To: Ponte Knodge.eu para Obsidian

🛠️ How-To: Ponte Knodge.eu para Obsidian

Este guia descreve como configurar a Obsidian como uma interface profissional para o seu portal de conhecimento Knodge.eu. Com esta configuração, pode carregar notas diretamente e solicitar análises de IA (tais como revisões ou resumos de especialistas) com o toque de um botão [cite: API.md].


#1 Preparativos em Knodge.eu

Antes de ligar a Obsidian, os acessos à API devem estar disponíveis em Knodge.eu:

** Chaves API:** Necessita de duas chaves do seu painel de controlo do portal:
1. Chat API key: Para consultas e análises (api-chat).
2. Chave API de carregamento: Uma chave com direitos de editor ou gestor para carregamentos de documentos.
Slug do portal: Este é o identificador do seu portal no URL (por exemplo, my-knowledge-hub).
Instruções: Certifique-se de que ficheiros como instruction_expert.md ou instruction_summary.md já estão carregados no seu portal para que as palavras-chave (#expert, #summary) funcionem [citar: _instruction_expert.md, _instruction_summary.md].


2ª configuração na Obsidian

Usamos o popular plugin Templater para executar o script JavaScript.

Passo 1: Instalar plugins

  1. abre as Configurações na Obsidian.
  2. vai a Community Plugins e desliga o "Safe Mode".
  3. procura Templater e instala/ativa-o.

Passo 2: Criar o guião

Crie uma nova nota (por exemplo, na pasta Templates/Knodge-Bridge.md) e insira o seguinte código:

<%*
/* Knodge.eu Unified Bridge / Compatível com SCP (Upload & Chat)
   Personalizado para uploads de domínios e mensagens de agentes.
*/

// CONFIGURAÇÃO
const CHAT_API_KEY = "6393c04f..."; // A sua chave de chat
const UPLOAD_API_KEY = "cb7106f5..."; // A sua chave de carregamento
const DOMAIN_ID = "efdb0c9f..."; // Da sua definição de API
const PORTAL_SLUG = "faq"; // O seu identificador de portal
const BASE_URL = "https://knodge.eu/api";

const activeView = app.workspace.getActiveViewOfType(obsidian.MarkdownView);
se (!activeView) {
    novo aviso ("Não foi encontrada nenhuma nota ativa.");
    return;
}

const content = activeView.editor.getValue();
const fileName = `${activeView.file.basename}.md`;

// DIÁLOGO DE SELECÇÃO
const mode = await tp.system.suggester(
    ["📤 Carregar documento para o domínio", "💬 Solicitar agente de IA (Mensagens)"],
    ["upload", "chat"]
);

se (modo === "carregamento") {
    // 1ª LÓGICA DE CARREGAMENTO (baseada no domínio)
    const formData = new FormData();
    const blob = new Blob([content], { type: 'text/markdown' });
    formData.append('file', blob, fileName);

    new Notice("Upload to domain in progress...");
    try {
        const res = await fetch(`${BASE_URL}/domains/${DOMAIN_ID}/documents`, {
            método: "POST",
            headers: {
                "X-API-Key": UPLOAD_API_KEY // Cabeçalho do pedido
            },
            body: formData
        });

        Se (res.ok) new Notice("✅ Documento guardado com sucesso no domínio!");
        else new Notice("❌ Erro durante o carregamento.");
    } catch (e) {
        new Notice("❌ Erro de rede durante o carregamento.");
    }

} else if (mode === "chat") {
    // 2ª LÓGICA DE CHAT (ponto final das mensagens do agente)
    novo Aviso ("É solicitado um agente de IA...");
    
    try {
        const res = await fetch(`${BASE_URL}/portal/${PORTAL_SLUG}/agent/messages`, {
            método: "POST",
            cabeçalhos: {
                "Content-Type": "application/json",
                "X-API-Key": CHAT_API_KEY //
            },
            corpo: JSON.stringify({
                messages: [{ role: "user", content: content }], // Corpo compatível com SCP
                stream: false, // Streaming desativado para integração da Obsidian
                locale: "de"
            })
        });

        const data = await res.json();
        
        // Pressuposto: a resposta é devolvida no campo 'response' ou 'message'
        const aiMessage = data.response || (data.messages && data.messages[0].content);

        if (aiMessage) {
            const insertion = `\n\n---\n### 🤖 Resposta do agente\n${aiMessage}`;
            activeView.editor.replaceRange(insertion, { line: activeView.editor.lineCount(), ch: 0 });
            novo Aviso("✅ Resposta recebida.");
        } else {
            new Notice("❌ Nenhuma resposta válida do agente.");
        }
    } catch (e) {
        new Notice("❌ Erro com o pedido do agente.");
    }
}
%>

3. utilização no quotidiano

Nota de análise (#Palavras-chave)

Escreva os seus pensamentos em Obsidian. Se quiser uma análise específica, basta adicionar uma palavra-chave:

  • #expert: Para uma análise técnica aprofundada [cite: _instruction_expert.md].
  • #summary: Para obter um resumo estruturado [cite: _instruction_summary.md].
  • #quiz: Para gerar perguntas de teste para o seu texto [cite: _instruction_quiz.md].

Em seguida, prima a tecla de atalho para Templater (ou chame o modelo), selecione "🎓 Request AI analysis" e o Knodge inserirá a resposta diretamente abaixo do seu texto [cite: API.md].

Guardar nota como conhecimento

Selecione "📤 Carregar nota" para mover permanentemente o documento atual para o seu portal Knodge. Este conhecimento fica então imediatamente disponível para todas as futuras consultas RAG (também através do OpenClaw).


Porque é que isto funciona

Instruções dinâmicas: Uma vez que Knodge controla as #Keywords no lado do servidor através dos ficheiros _instruction_*.md, nunca é necessário alterar o script na Obsidian quando se adicionam novas habilidades de IA [cite: API.md, _instruction_expert.md].
Contexto pessoal: Através do sistema de onboarding automático, Knodge reconhece o seu estilo a partir do ficheiro _user_{userId}.md e adapta as respostas na Obsidian às suas preferências [cite: _instruction_onboarding.md].

Ex.
_instruction_expert.md

# Modelo de instrução do modo especialista

## Objetivo
Esta instrução ativa um modo de análise de especialista com conhecimentos mais profundos, detalhes técnicos e análise abrangente.

---

## DE - Alemão

Ativar o modo especialista para análises aprofundadas.

**Caraterísticas do modo especialista:**

1 **Análise profunda**
   - Vá para além das respostas superficiais
   - Analisar causas e ligações
   - Considerar o contexto e as nuances

2 **Detalhes técnicos**
   - Utilizar terminologia especializada (com explicações)
   - Mostrar fontes de dados e provas
   - Discutir a metodologia

3. **Visão crítica**
   - Iluminar diferentes perspectivas
   - Identificar limitações e incertezas
   - Distinguir factos de interpretações

4 **Recursos adicionais**
   - Referir-se a documentos relevantes no portal
   - Sugerir perguntas adicionais
   - Identificar lacunas no conhecimento

**Formato das respostas dos especialistas:**

🎓 ANÁLISE DE PERITOS

📋 Mensagem-chave:
[Resumo conciso da principal conclusão]

🔍 Análise pormenorizada:
[Explicação aprofundada com termos técnicos]

📊 Dados e provas:
[Números, estudos e fontes relevantes dos documentos]

⚠️ Limitações:
[O que é incerto? O que está em falta?]

💭 Perspetivas diferentes:
[Pontos de vista ou interpretações alternativas]

📚 Mais informações:
[Documentos relevantes no portal]
[Perguntas aprofundadas]

🤔 Questões em aberto:
[O que mais deve ser investigado?]


**Comportamento:**
- Responder com mais pormenor do que no modo normal
- Utilize linguagem técnica, mas explique-a
- Ser preciso na citação das fontes
- Distinguir claramente entre conhecimentos comprovados e suposições

---

## PT - Inglês

Ativar o modo especialista para uma análise aprofundada.

**Propriedades do modo especialista:**

1. **Análise profunda**
   - Ir além das respostas de nível superficial
   - Analisar causas e ligações
   - Considerar o contexto e as nuances

2. **Detalhes técnicos**
   - Utilizar terminologia técnica (com explicações)
   - Mostrar fontes de dados e provas
   - Discutir a metodologia

3. **Exame crítico**
   - Iluminar diferentes perspectivas
   - Identificar limitações e incertezas
   - Distinguir factos de interpretações

4. **Recursos adicionais**
   - Referir documentos relevantes do portal
   - Sugerir perguntas de seguimento
   - Identificar lacunas de conhecimento

---

## FR - Francês

Active o modo especialista para uma análise aprofundada.

**Propriedades do modo especialista:**
1. análise adequada
2. pormenores técnicos
3. exame crítico
4. recursos complementares

---

## ES - Español

Ativa o modo experto para análises em profundidade.

**Propiedades del modo experto:**
1. análise profunda
2. pormenores técnicos
3. exame crítico
4. recursos adicionais

---

## IT - Italiano

Ativar o modo de espera para uma análise adequada.

**Propriedade do modo de espera
1. analysis approfondita
2. pormenores técnicos
3. Análise crítica
4. Riscos associados

---

## PT - Português

Você ativa o modo especialista para análise aprofundada.

**Propriedades do modo especialista:**
1. análise profunda
2. detalhes técnicos
3. exame crítico
4. recursos adicionais

---

## Utilização

Os utilizadores activam com `#expert` na sua mensagem. Exemplo: `#expert Analisar os efeitos de X em Y`