Dificuldade: Iniciante | Duração: 30 Minutos | Ganhos: Compreender o sistema de colaboração de quatro funções do OpenMOSS e construir sua própria equipe de IA
Público-Alvo
Você já usa o OpenClaw e sentiu o poder de um Agente único — ele pode conversar, escrever código e executar tarefas. Mas você também deve ter notado: assim que a tarefa se torna complexa ou exige colaboração em várias etapas, um Agente individual pode facilmente ficar travado em algum ponto e "morrer" ali, esperando que você o impulsione.
O OpenMOSS visa resolver exatamente esse problema. Sua ideia é simples: não deixe que um único Agente carregue tudo sozinho; em vez disso, instale uma estrutura organizacional na IA. O Planejador desmembra as demandas, o Executor faz o trabalho, o Revisor controla a qualidade e o Patrulheiro monitora tudo — quatro funções, cada uma com suas responsabilidades, operando de forma autônoma através de despertadores agendados para formar uma equipe de IA em ciclo fechado.
O OpenMOSS em si é um middleware; ele não se preocupa com o negócio específico, mas sim com o agendamento e a colaboração. Quaisquer Skills que você configurar para ele, ele poderá colaborar automaticamente para concluir a tarefa.
Este artigo é ideal para:
- Quem já usa o OpenClaw e quer experimentar a colaboração Multi-Agent.
- Quem precisa que a IA funcione de forma contínua e automática, sem supervisão humana.
- Quem deseja construir pipelines de produção de conteúdo, operações automatizadas (AIOps), revisão de código e outros fluxos de trabalho.
Dependências Principais e Ambiente
| Dependência | Requisito de Versão | Descrição |
|---|---|---|
| Python | >= 3.10 | Ambiente de execução do backend OpenMOSS |
| Node.js | >= 18 | Necessário apenas para build do frontend; dispensável se houver diretório static/ |
| OpenClaw | Versão recente | Cada Agente é uma instância OpenClaw, o portador de execução do Agente |
| OpenMOSS | Versão mais recente | Middleware FastAPI + banco de dados SQLite |
| API Key | Necessária | API Key para o Agente chamar o LLM (recomenda-se Claude ou GPT) |
TIP
O OpenMOSS não executa modelos de IA por si só; ele é apenas um centro de agendamento. Quem realmente executa as tarefas são as instâncias de Agentes rodando no OpenClaw, e cada Agente precisa de uma LLM API Key. Quanto maior a capacidade do modelo (maior a janela de contexto), melhor o efeito do OpenMOSS; recomenda-se GPT-5.3-Codex ou Claude 4 ou superior.
WARNING
O uso de Multi-Agents multiplicará o consumo da sua cota de modelo. Configure limites de interface e taxas de forma razoável para evitar custos extras excessivos.
Repositório GitHub: https://github.com/uluckyXH/OpenMOSS
Estrutura Completa do Projeto
OpenMOSS/
├── app/ # Backend FastAPI
│ ├── main.py # Entrada: registro de rotas, middleware, serviço estático SPA
│ ├── config.py # Carregamento de configuração
│ ├── database.py # Inicialização do banco (SQLAlchemy)
│ ├── models/ # Modelos de dados (10 tabelas)
│ ├── routers/ # Rotas da API
│ ├── services/ # Camada de lógica de negócio
│ └── schemas/ # Modelos de serialização Pydantic
├── webui/ # Código-fonte do frontend Vue 3 (precisa de build)
├── static/ # Artefatos de build do frontend (servidos pelo backend)
├── prompts/ # Templates de prompts para funções de Agentes
│ ├── templates/ # Templates base das funções
│ ├── agents/ # Exemplos de prompts de Agentes
│ └── tool/ # Prompts para chamadas de ferramentas
├── skills/ # Definições de Skills do Agente OpenClaw
│ ├── task-cli.py # Script de chamada de API comum a todas as Skills
│ ├── task-planner-skill/ # Skill do Planejador
│ ├── task-executor-skill/ # Skill do Executor
│ ├── task-reviewer-skill/ # Skill do Revisor
│ ├── task-patrol-skill/ # Skill do Patrulheiro
│ └── dist/ # Pacotes .zip de Skills compiladas
├── config.example.yaml # Template de arquivo de configuração
├── requirements.txt # Dependências Python
├── Dockerfile
└── docker-compose.yml
Passo a Passo
Passo 1: Clonar o Projeto e Instalar Dependências
# Clonar o projeto
git clone https://github.com/uluckyXH/OpenMOSS.git openmoss
cd openmoss
# Instalar dependências Python
pip install -r requirements.txt
Se não houver o diretório static/ no seu repositório (frontend não buildado), você precisará buildar o frontend:
cd webui
npm install
npm run build
# Copiar os artefatos para o diretório static/
rm -rf ../static/*
cp -r dist/* ../static/
cd ..
Passo 2: Configurar o config.yaml
Na primeira inicialização, o OpenMOSS gerará automaticamente o config.yaml a partir do config.example.yaml. Recomenda-se copiar o template e modificar:
cp config.example.yaml config.yaml
Em seguida, edite o config.yaml. Os seguintes campos devem ser configurados:
# Senha do administrador (criptografada automaticamente após o primeiro login)
admin:
password: "sua-senha-segura-aqui"
# Token de registro do Agente (necessário ao registrar Agentes, recomenda-se gerar aleatoriamente)
agent:
registration_token: "seu-token-aleatorio-aqui"
allow_registration: true
# Diretório de trabalho (onde os produtos dos Agentes serão armazenados)
workspace:
root: "/home/seu-usuario/TaskWork"
# Endereço externo do serviço (endereço que o Agente acessa ao se conectar)
server:
external_url: "http://seu-ip-do-servidor:6565"
WARNING
O registration_token equivale ao ingresso do Agente; ele deve ser fornecido no ato do registro. Use uma string aleatória, não o valor padrão.
Passo 3: Iniciar o Serviço e Concluir o Assistente de Inicialização
python -m uvicorn app.main:app --host 0.0.0.0 --port 6565
A primeira inicialização fará automaticamente:
- Gerar o
config.yaml(se não existir) - Inicializar o banco de dados SQLite (
data/tasks.db) - Montar o frontend (se o diretório
static/existir)
Abra o navegador em http://localhost:6565. Você será redirecionado para o assistente que o guiará para:
- Definir a senha do administrador
- Configurar o nome do projeto
- Gerar o token de registro de Agentes
- Configurar canais de notificação (opcional)
Ao concluir, os endereços do serviço serão exibidos:
| Endereço | Descrição |
|---|---|
http://localhost:6565 | Painel de Controle WebUI |
http://localhost:6565/docs | Documentação da API Swagger |
http://localhost:6565/api/health | Interface de Check-up de Saúde |
Passo 4: Login na WebUI e Familiarização com o Painel
Após a inicialização, faça login com a conta de administrador. Você verá as seguintes páginas:
| Página | Função |
|---|---|
| Dashboard | Visão geral do sistema, destaques estatísticos, gráficos de tendência |
| Gestão de Tarefas | Lista de tarefas, divisão de módulos, gestão de subtarefas |
| Agentes | Lista de Agentes, status, carga de trabalho, registros de atividade |
| Fluxo de Atividade | Exibição em tempo real das chamadas de API de todos os Agentes |
| Ranking de Pontos | Ranking de desempenho dos Agentes, histórico de pontos |
| Registros de Revisão | Lista de registros de auditoria, filtros, detalhes |
| Gestão de Prompts | Visualizar e gerenciar prompts de funções e regras globais |
| Configurações do Sistema | Gestão de configurações, alteração de senha, notificações |
A lista de Agentes estará vazia no início — ainda não registramos nenhum Agente. Começaremos a criá-los no Passo 5.
Passo 5: Criar os Quatro Agentes e Registrá-los no OpenClaw
As quatro funções do OpenMOSS correspondem a responsabilidades distintas:
| Função | Responsabilidade | Instância OpenClaw correspondente |
|---|---|---|
| planner (Planejador) | Desmembrar demandas, criar módulos/subtarefas, atribuir tarefas | Uma instância OpenClaw |
| executor (Executor) | Reivindicar subtarefas, escrever código, entregar resultados | Múltiplas instâncias OpenClaw |
| reviewer (Revisor) | Revisar qualidade, pontuar, aprovar ou rejeitar para retrabalho | Uma instância OpenClaw |
| patrol (Patrulheiro) | Monitorar o sistema, detectar anomalias, marcar bloqueios | Uma instância OpenClaw |
Cada Agente é essencialmente uma instância executando o OpenClaw. Usaremos a criação do planner como exemplo; o processo para as outras três funções é idêntico.
Opção 1: Registro via WebUI (Recomendado)
- Na página de Agentes da WebUI, clique em "Registrar Agente".
- Preencha as informações básicas:
Função: planner
Nome: OpenMOSS-Planner
Token de Registro: (Preencha com o agent.registration_token do config.yaml)
- Após o envio, a WebUI retornará:
- API Key do Agente (salve-a, ela aparece apenas uma vez)
- Endereços de download do SKILL.md e task-cli.py do Agente
- Guia de integração (comandos de registro, método de configuração)
Opção 2: Registro via API
curl -X POST http://localhost:6565/api/agents/register \
-H "X-Registration-Token: seu-token-de-registro" \
-H "Content-Type: application/json" \
-d '{
"name": "OpenMOSS-Planner",
"role": "planner"
}'
O retorno conterá a API Key, o comando de registro e as URLs de Skills:
{
"api_key": "om_xxxxxxxxxxxxxxxxxxxx",
"skill_cli_url": "http://localhost:6565/skills/task-cli.py",
"skill_url": "http://localhost:6565/skills/task-planner-skill/SKILL.md",
"register_command": "openclaw agents add ..."
}
Registre os outros três Agentes da mesma forma:
executor → task-executor-skill
reviewer → task-reviewer-skill
patrol → task-patrol-skill
Passo 6: Configurar as Skills do Agente
Após o registro bem-sucedido, cada Agente receberá dois arquivos cruciais:
task-cli.py— Script de chamada de API do OpenMOSS compartilhado entre as funções.SKILL.md— Definição de Skill exclusiva para aquela função.
Coloque-os em um diretório legível pelo OpenClaw (geralmente junto com o prompt do Agente):
# Supondo o diretório de configuração do Agente OpenClaw
mkdir -p ~/.openclaw/agents/openmoss-planner/skills
# Baixar arquivos de Skill
curl -o ~/.openclaw/agents/openmoss-planner/skills/task-cli.py \
http://localhost:6565/skills/task-cli.py
curl -o ~/.openclaw/agents/openmoss-planner/skills/SKILL.md \
http://localhost:6565/skills/task-planner-skill/SKILL.md
TIP
Arquivos de Skill suportam atualização a quente (hot-update). Se você modificar SKILL.md ou task-cli.py, o Agente lerá a versão mais recente ao despertar, sem necessidade de reiniciar o OpenMOSS.
Em seguida, na configuração do Agente no OpenClaw, adicione o caminho do SKILL.md ao Prompt ou à configuração de Skills para que o Agente saiba quais APIs do OpenMOSS ele pode chamar.
Passo 7: Configurar o Cron para Despertar e Fazer o Agente "Trabalhar"
Esta é a maior diferença entre o OpenMOSS e um Agente comum: o Agente não espera você enviar uma mensagem para agir; ele bate o ponto como um funcionário.
Na configuração do Agente no OpenClaw, defina tarefas cron para cada Agente:
planner (Planejador) — Verifica novas tarefas a cada 30 minutos:
{
"cron": "*/30 * * * *",
"task": "Verificar a fila de tarefas do OpenMOSS; se houver novas tarefas não planejadas, executar o fluxo de planejamento"
}
executor (Executor) — Verifica tarefas pendentes a cada 15 minutos:
{
"cron": "*/15 * * * *",
"task": "Verificar a fila de subtarefas do OpenMOSS, reivindicar e executar"
}
reviewer (Revisor) — Verifica entregas para revisão a cada 20 minutos:
{
"cron": "*/20 * * * *",
"task": "Verificar a fila de revisão do OpenMOSS, processar entregas pendentes"
}
patrol (Patrulheiro) — Inspeciona o estado do sistema a cada 10 minutos:
{
"cron": "*/10 * * * *",
"task": "Verificar o estado do sistema OpenMOSS, marcar tarefas bloqueadas e alertar sobre anomalias imediatamente"
}
O fluxo de trabalho do Agente ao ser despertado é fixo:
- Chama a API do OpenMOSS para obter o status atual.
- Executa a operação correspondente à sua função.
- Grava o resultado de volta no OpenMOSS.
- Entra em modo de hibernação, aguardando o próximo despertar.
Todo o processo não requer intervenção humana.
Passo 8: Emitir a Primeira Tarefa e Validar o Ciclo de Colaboração
Na página de "Gestão de Tarefas" da WebUI, clique em "Criar Tarefa" e preencha:
Nome da Tarefa: Tradução e Publicação Automática de Notícias de IA
Objetivo: Coletar notícias de IA/Tecnologia/Digital da internet chinesa, traduzi-las para o inglês e publicá-las
Quando o Planejador (planner) for despertado pelo cron, ele irá:
- Receber a tarefa e dividi-la em módulos (Coleta → Tradução → Revisão → Publicação).
- Criar subtarefas (sub-tasks) para cada módulo.
- Definir critérios de aceitação para cada subtarefa.
Quando o Executor (executor) for despertado, ele irá:
- Reivindicar a primeira subtarefa pendente da fila.
- Executar o trabalho (busca online, tradução de conteúdo).
- Enviar a entrega para a fila de revisão.
Quando o Revisor (reviewer) for despertado, ele irá:
- Obter as entregas pendentes de revisão.
- Pontuar com base nos critérios de aceitação.
- Se aprovado, marcar a subtarefa como concluída; se rejeitado, devolver ao Executor para retrabalho.
O Patrulheiro (patrol) monitora continuamente o sistema:
- Se uma subtarefa não tiver progresso além do limite, ele marca automaticamente como
blocked. - Se detectar um aumento anômalo na taxa de rejeição, envia um alerta.
- Se detectar que um Executor entrou em loop infinito, notifica o administrador.
Você pode acompanhar toda a dinâmica de trabalho dos Agentes em tempo real na página "Fluxo de Atividade" da WebUI.
Passo 9: Configurar Canais de Notificação
O OpenMOSS suporta notificações automáticas para eventos críticos. Configure os canais no config.yaml:
notification:
enabled: true
channels:
- "ID-do-Grupo-Lark" # É necessário adicionar o Agente ao grupo e mencioná-lo para obter o chat_id
- "user:ou_xxx" # open_id do usuário Lark
events:
- task_completed # Subtarefa concluída
- review_rejected # Revisão rejeitada (retrabalho)
- all_done # Todas as subtarefas concluídas
- patrol_alert # Anomalia detectada pela patrulha
O Agente lerá as configurações de notificação da interface GET /config/notification e usará suas próprias capacidades (e-mail, Lark, etc.) para enviar as notificações.
NOTE
O OpenMOSS em si não implementa o envio de notificações; ele apenas informa o alvo da notificação ao Agente. O Agente deve possuir a Skill de notificação correspondente (como a Skill de mensagem Lark) para realizar o envio.
Solução de Problemas Comuns
1. Falha no registro do Agente (registration_token incompatível)
Sintoma: O registro do Agente retorna erro 403 ou "invalid token".
A causa mais comum é a inconsistência do registration_token. Verifique dois pontos:
- O valor de
agent.registration_tokennoconfig.yamldo OpenMOSS. - O valor de
X-Registration-Tokenno Header da requisição de registro do Agente.
Ambos devem ser idênticos, incluindo espaços e maiúsculas. Se você alterou o config.yaml, lembre-se de reiniciar o serviço OpenMOSS.
2. O cron não desperta o Agente
Sintoma: O Agente não inicia o trabalho automaticamente e não há logs de erro no console.
Ordem de verificação:
- Confirme se a configuração cron no OpenClaw está correta — a expressão cron é válida? A descrição da tarefa está clara?
- Confirme se a instância OpenClaw está rodando — o processo OpenClaw correspondente ao Agente está ativo?
- Verifique se a API Key do Agente é válida — veja se o status na página de Agentes da WebUI é "active".
Você pode usar a página de Agentes na WebUI para ver a hora da última atividade de um Agente específico e julgar se ele está sendo despertado.
3. Subtarefa rejeitada repetidamente, entrando em loop
Sintoma: A entrega do executor é constantemente rejeitada pelo revisor, e a mesma subtarefa é refeita sem parar.
Isso geralmente indica que o executor tem uma interpretação errada dos critérios de aceitação ou que os próprios critérios estão mal definidos.
Solução:
- Veja os registros de rejeição na WebUI para ler a justificativa do revisor.
- Ajuste os critérios de aceitação que o planeador escreveu ao criar a subtarefa, tornando-os mais específicos e quantificáveis.
- Se for insuficiência de capacidade do executor, tente mudar para um modelo mais potente (atualize a API Key do LLM no Agente OpenClaw).
4. Patrulha (patrol) sem resposta
Sintoma: Existem tarefas bloqueadas no sistema, mas o patrulheiro não as marcou nem enviou alertas.
Verificação:
- A instância OpenClaw do Agente patrol está rodando?
- O intervalo do cron do patrol é muito longo? (Configurar
*/10é muito mais sensível que*/60). - O
notificationestá ativado noconfig.yamle os canais estão corretos? - O Agente patrol possui a Skill de envio de notificações (Lark/E-mail)?
5. API Key expirada ou permissões insuficientes
Sintoma: O Agente para de trabalhar repentinamente, aparecendo erros 401 ou 403 nos logs.
A API Key do Agente (começando com om_xxx) é a credencial interna do OpenMOSS, não é a mesma do LLM. Se houver erro de autenticação do LLM nos logs, o problema é com a API Key do provedor de IA (cota esgotada, revogação, etc.).
Solução: Atualize a API Key do LLM na configuração do Agente OpenClaw e reinicie a instância do Agente.
6. Múltiplos executores reivindicando a mesma tarefa
Sintoma: Dois executores começam a fazer a mesma subtarefa, gerando trabalho duplicado.
A fila de tarefas do OpenMOSS possui proteção de atomicidade; teoricamente, isso não deveria ocorrer. Se acontecer, pode ser:
- Intervalos cron dos executores muito curtos, fazendo-os acordar quase simultaneamente.
- Atraso na atualização do status da tarefa, fazendo o executor ler dados antigos.
Solução: Aumente o intervalo cron dos executores (ex: de */5 para */15) para dar tempo suficiente para a atualização do status após cada processamento.
Leituras Complementares / Direções Avançadas
1. Personalização de Prompts de Funções
O diretório prompts/ contém templates para cada função. Você pode modificá-los para criar uma personalidade de Agente que atenda às suas necessidades específicas:
# Editar prompt do Planejador
vim prompts/agents/planner-agent-prompt.md
# Editar prompt do Executor
vim prompts/agents/executor-agent-prompt.md
Após a alteração, o Agente lerá a nova versão no próximo despertar.
2. Integração com Skill do WordPress para Publicação Automática
O diretório skills/wordpress-skill/ oferece a capacidade de publicação em WordPress. Usado com um executor, permite que o Agente publique automaticamente artigos traduzidos sem intervenção humana.
É necessário configurar a URL do site WordPress e a API Key:
# Ver instruções de configuração da Skill do WordPress
cat skills/wordpress-skill/SKILL.md
3. Ajuste do Sistema de Pontos e Desempenho
O OpenMOSS possui um mecanismo de pontos nativo. A pontuação do revisor afeta diretamente o ranking de desempenho do executor. Você pode conferir a qualidade da produção na página de Ranking de Pontos na WebUI.
Para tornar o sistema mais rigoroso ou flexível, basta modificar a descrição dos critérios de pontuação no prompt do revisor.
4. Integração com Skill Grok Search para Busca Online
O diretório skills/grok-search-runtime/ fornece a capacidade de busca Grok. Com esta Skill, o Executor pode capturar notícias em tempo real para traduzir e publicar — este é o fluxo principal do caso real 1M Reviews.
5. Migração para PostgreSQL / MySQL
Por padrão, o OpenMOSS usa SQLite, ideal para equipes de pequeno e médio porte. Para maior suporte a concorrência, mude para PostgreSQL ou MySQL:
# config.yaml
database:
type: postgresql # ou mysql
path: "" # deixe vazio se usar a string de conexão abaixo
connection_string: "postgresql://usuario:senha@localhost:5432/openmoss"
6. Implantação com Docker
O projeto oferece Dockerfile e docker-compose.yml para implantar todo o ambiente com um comando:
# Iniciar todos os serviços
docker-compose up -d
# Ver logs
docker-compose logs -f
Isso empacotará o OpenMOSS, o banco de dados e o frontend, ideal para validação rápida ou migração para servidor.
7. Construa seu Próprio Pipeline de Produção de Conteúdo
Referenciando o caso real da 1M Reviews, o pipeline completo é:
- planner divide a tarefa: Coleta → Tradução → Revisão → Publicação.
- executor (Coleta) captura notícias via Grok Search Skill.
- executor (Tradução) chama API de tradução para reescrever o conteúdo.
- reviewer revisa a qualidade e o formato do conteúdo.
- executor (Publicação) chama a Skill do WordPress para publicar no site.
- patrol monitora o estado de execução e alerta sobre anomalias.
Todo o fluxo opera de forma autônoma; você só define o objetivo no início e valida o resultado no final.