A Sailhouse é uma plataforma de infraestrutura orientada a eventos para desenvolvedores, centrada no "Plano de Controle do Agente". A plataforma foi projetada para ajudar os desenvolvedores a criar e liberar de forma rápida e confiável agentes de IA e aplicativos assíncronos de todos os tipos. Embora o desenvolvimento tradicional de inteligência geralmente exija estruturas de orquestração complexas ou filas de mensagens, o Sailhouse oferece uma solução mais leve. Ele orquestra a colaboração entre várias inteligências ou serviços por meio de um modelo orientado por eventos que permite que os desenvolvedores definam fluxos de trabalho dinâmicos. Seja uma tarefa programada que precisa ser executada no prazo ou um fluxo de trabalho complexo que exige que várias etapas sejam processadas em paralelo, o Sailhouse fornece as ferramentas para isso. A plataforma oferece suporte à implementação nos principais serviços de nuvem, como AWS, GCP, Vercel etc., e é independente de linguagens de programação específicas, de modo que os desenvolvedores podem usar sua própria pilha de tecnologia familiar para o desenvolvimento.

Lista de funções
- acionador de tempoSuporte à configuração de eventos cronometrados e tarefas programadas Cron, que podem acionar automaticamente tarefas em um momento específico no futuro ou em um ciclo fixo.
- Grupos de esperaPermite combinar várias tarefas paralelas (Fan-out) e aguardar a conclusão de todas as tarefas antes de acionar um novo evento (Fan-in), o que é adequado para lidar com fluxos de trabalho complexos de várias etapas.
- Compatibilidade entre plataformasO Sailhouse não limita o ambiente no qual o código pode ser executado, seja nos principais fornecedores de nuvem, como AWS, Azure, GCP, ou em plataformas sem servidor, como Vercel, Netlify etc., ele funciona bem.
- Modo flexível de recepção de eventosModos "Push" e "Pull" são suportados. Os desenvolvedores podem configurar um endpoint HTTP para receber eventos push ou escrever um worker para extrair ativamente eventos da fila.
- Filtragem de eventosRegras de filtragem: permitem que regras de filtragem sejam definidas no momento da assinatura para receber apenas eventos qualificados e evitar o processamento de mensagens irrelevantes.
- limite de velocidadeTaxa de processamento de eventos: Você pode controlar a taxa de processamento de eventos para evitar que os serviços downstream sejam interrompidos devido à sobrecarga de tráfego.
Usando a Ajuda
O Sailhouse foi projetado com a ideia de simplificar o desenvolvimento de aplicativos orientados a eventos, permitindo que os desenvolvedores se concentrem na lógica comercial sem precisar se preocupar com a complexa infraestrutura subjacente. A seção a seguir descreve em detalhes como usar os principais recursos do Sailhouse.
Conceitos básicos
É importante entender três conceitos básicos antes de usá-los:
- EventosDescrição: um evento é um registro de algo que aconteceu no sistema, como "o usuário concluiu o pagamento" ou "precisa processar um arquivo". Normalmente, ele contém dados que descrevem o evento.
- TópicosTemas: Os temas são canais categorizados para eventos. Os produtores publicam tipos específicos de eventos nos tópicos correspondentes. Por exemplo, todos os eventos sobre revisão de código podem ser postados em um tópico chamado
code-reviewTema. - AssinaturasAssinaturas: As assinaturas são a forma como os consumidores consomem eventos. Os consumidores recebem eventos nos quais estão interessados, assinando um ou mais tópicos.
Instalação e configuração
O Sailhouse interage com o aplicativo do usuário principalmente por meio de seu SDK fornecido oficialmente.
- Registrar uma contaPrimeiro, é necessário registrar uma conta no site oficial da Sailhouse e fazer login no Console.
- Criação de aplicativosNo console, você precisa criar um aplicativo (App). Após a criação, o sistema gera uma chave de API exclusiva (API Key), que é a credencial para o seu aplicativo se comunicar com o serviço Sailhouse.
- Instalação do SDKO Sailhouse fornece SDKs correspondentes para diferentes linguagens de programação. Veja o JavaScript/TypeScript, por exemplo, e você pode usar o npm ou o yarn para instalar:
npm install @sailhouse/client
Operações básicas: envio e recebimento de eventos
1. publicar um evento
O envio de eventos é bastante simples. Primeiro, inicialize o cliente Sailhouse em seu código e, em seguida, chame a funçãopublishMétodos.
Código de amostra (JavaScript).
import { Sailhouse } from '@sailhouse/client';
// 使用你在控制台获取的API密钥初始化客户端
const sailhouse = new Sailhouse({ apiKey: 'YOUR_API_KEY' });
async function publishReviewTask() {
await sailhouse.publish({
topic: 'security-review', // 指定要发布到的主题
data: { // 附带的数据
commitId: 'a1b2c3d4',
repo: 'my-project'
}
});
console.log('安全审查任务事件已发送。');
}
publishReviewTask();
2. eventos de recebimento
O Sailhouse oferece duas maneiras de receber eventos: Push e Pull.
Método 1: Assinatura por push
Essa é a maneira mais simples de fazer isso. Você só precisa fornecer um endpoint de API HTTP(S) público (também conhecido como Webhook). Quando um novo evento for publicado em um tópico que você assina, o Sailhouse enviará imediatamente o evento como uma solicitação HTTP POST para esse seu endpoint.
- fluxo de trabalho:
- Crie uma rota de API em seu projeto, por exemplo
/api/webhooks/sailhouse. - Crie uma assinatura no console do Sailhouse, selecione o modo "Push" e preencha o URL do endpoint da API.
- Seu endpoint de API receberá dados JSON em um formato semelhante ao seguinte:
{ "id": "event_id_string", "topic": "security-review", "data": { "commitId": "a1b2c3d4", "repo": "my-project" } } - Seu código no lado do servidor recebe a solicitação e analisa o
datae executar a lógica comercial apropriada.
- Crie uma rota de API em seu projeto, por exemplo
Modo 2: Assinatura pull
Se o seu serviço estiver localizado atrás de um firewall ou não tiver um IP público fixo, o modo pull é uma opção melhor. Seu aplicativo (geralmente chamado de Worker) solicitará ativamente eventos do Sailhouse.
- fluxo de trabalho:
- Crie uma assinatura no console do Sailhouse e selecione o modo "Pull".
- Em seu código do Worker, use a função
pullpara obter o evento. O SDK cuida de detalhes como polling longo para simplificar o desenvolvimento.
Código de amostra (JavaScript Worker):: 1.1.1.1.1.1.1
import { Sailhouse } from '@sailhouse/client';
const sailhouse = new Sailhouse({ apiKey: 'YOUR_API_KEY' });
async function processEvents() {
console.log('Worker启动,开始拉取事件...');
// 循环拉取指定订阅的事件
for await (const event of sailhouse.pull({ subscription: 'security-review-worker' })) {
try {
console.log('收到事件:', event.data);
// 在这里执行你的业务逻辑
// ...
// 任务处理完成后,确认事件已被成功处理
await event.ack();
} catch (error) {
console.error('处理事件失败:', error);
// 如果处理失败,可以选择让事件重新入队
await event.nack();
}
}
}
processEvents();
Recursos avançados: uso de grupos de espera
Grupos de espera é um recurso do Sailhouse para coordenar várias tarefas paralelas. Esse recurso é útil quando você precisa ter certeza de que um grupo de tarefas foi concluído antes de passar para a próxima etapa.
Por exemplo, uma solicitação de mesclagem de código precisa passar pelos processos de Revisão de segurança e Revisão de estilo de código. Você pode usarsailhouse.waitpara orquestrar esse fluxo de trabalho.
Código de amostra (JavaScript).
import { Sailhouse } from '@sailhouse/client';
const sailhouse = new Sailhouse({ apiKey: 'YOUR_API_KEY' });
async function startCodeReviewWorkflow() {
// `wait`方法会做两件事:
// 1. 立即将两个审查任务事件分别发送到'security-review'和'style-review'主题。
// 2. 创建一个监听器,等待这两个任务都完成后,自动向'code-review-complete'主题发送一个新事件。
await sailhouse.wait(
'code-review-complete', // 当所有任务完成后,向此主题发送事件
[
{
topic: 'security-review', // 第一个任务
data: { commitId: 'a1b2c3d4', repo: 'my-project' },
},
{
topic: 'style-review', // 第二个任务
data: { commitId: 'a1b2c3d4', repo: 'my-project' },
},
]
);
console.log('代码审查工作流已启动。');
}
startCodeReviewWorkflow();
Dessa forma, você não precisa escrever sua própria lógica complexa de gerenciamento de estado para acompanhar o progresso de várias tarefas paralelas.
cenário do aplicativo
- Orquestração de fluxo de trabalho corporal com inteligência de IA
Por exemplo, uma tarefa de "geração automatizada de relatórios" pode incluir: inteligência de coleta de dados, inteligência de análise de dados, inteligência de geração de gráficos e inteligência de redação de textos. Por exemplo, uma tarefa de "geração automatizada de relatórios" pode incluir: inteligência de coleta de dados, inteligência de análise de dados, inteligência de geração de gráficos e inteligência de redação de textos, e o Sailhouse pode usar a função de grupo de espera para garantir que todas as tarefas anteriores sejam concluídas antes de acionar as tarefas subsequentes e, finalmente, agregar todos os resultados. - Processamento assíncrono de tarefas em segundo plano
Nos aplicativos da Web, determinadas operações (por exemplo, envio de e-mails, transcodificação de vídeo, geração de relatórios de dados) consomem muito tempo e não devem ser executadas de forma síncrona com as solicitações dos usuários. Os desenvolvedores podem publicar essas tarefas como eventos no Sailhouse, que são assinados e processados de forma assíncrona pelo serviço Worker em segundo plano. Isso pode melhorar significativamente a capacidade de resposta do aplicativo e a experiência do usuário. - Sincronização de tarefas e dados planejados
Para tarefas que precisam ser executadas regularmente, como fazer o backup do banco de dados nas primeiras horas do dia, sincronizar dados de uma API de terceiros uma vez por hora ou enviar e-mails de marketing para assinantes em uma data específica, você pode usar o recurso Cron Scheduled Tasks ou Timed Events do Sailhouse. Os desenvolvedores simplesmente definem o período de execução e o conteúdo da tarefa, e o Sailhouse garantirá que a tarefa seja acionada na hora certa.
QA
- O que a Sailhouse quer dizer com "plano de controle"?
No contexto do Sailhouse, o "plano de controle" refere-se a uma camada de infraestrutura que orquestra e gerencia componentes distribuídos (ou seja, inteligências ou serviços). Ele não se intromete em seu código comercial, nem é uma "estrutura" cujas regras você deve seguir. Em vez disso, ele fornece um conjunto de ferramentas (por exemplo, roteamento de eventos, temporizadores, orquestração de fluxo de trabalho) que permite que seus serviços individuais se comuniquem e colaborem entre si, e você só precisa se concentrar na lógica de cada serviço em si. - Quais linguagens de programação e plataformas de nuvem são compatíveis com o Sailhouse?
O Sailhouse foi projetado para ser independente de linguagem e plataforma. Em sua essência, ele interage por meio de uma API HTTP ou SDK, portanto, teoricamente, qualquer linguagem capaz de enviar solicitações HTTP pode usá-lo. SDKs oficiais para as principais linguagens serão fornecidos para simplificar o desenvolvimento. Em termos de implantação, suas inteligências ou serviços podem ser executados em qualquer lugar, incluindo grandes plataformas de nuvem, como AWS, GCP, Azure, plataformas sem servidor, como Vercel, Netlify, e até mesmo máquinas de desenvolvimento local. - Qual é a diferença entre os modelos de assinatura Push e Pull e como devo escolher?
Essa abordagem é de baixa latência, simples de implementar e adequada para serviços com IPs públicos fixos (por exemplo, APIs implantadas em servidores ou funções sem servidor). O modo pull é aquele em que seu aplicativo solicita ativamente eventos do Sailhouse. Essa abordagem é mais flexível e é adequada para serviços executados em um ambiente de intranet, ambiente de desenvolvimento ou serviços que não se sentem confortáveis em expor portas públicas. Se o seu serviço tiver capacidade de processamento limitada, o modo pull também permite que você controle a taxa de consumo de eventos com base na sua própria carga.































