Sessões
Uma sessão é uma ramificação do Git e uma sandbox onde o agente trabalha.
Uma sessão é uma unidade de trabalho do agente. O Beeuni cria uma ramificação do Git e provisiona um sandbox para ela. O ID da sessão, o nome da ramificação e o ID do sandbox são o mesmo valor.
Status
Na prática, uma sessão assume um de 4 estados.
| Status | Significado |
|---|---|
provisioning |
O Beeuni cria a ramificação e solicita o sandbox. |
running |
O sandbox está ativo e acessível. |
stopped |
A sessão está pausada, por você ou pela parada automática por inatividade. |
failed |
O provisionamento falhou. |
O banco de dados define mais 3 valores (queued, branching, completed). O Beeuni não os grava em uma sessão atualmente.
Parar, retomar e parada automática por inatividade
Você pode parar uma sessão. Retomar reativa o mesmo sandbox, com o mesmo sistema de arquivos e a mesma identidade de runtime. Apenas os processos em execução e a memória são redefinidos. A conversa do harness padrão continua vinculada à sessão.
O Beeuni também para uma sessão inativa por você:
- Após 15 minutos de inatividade, em uma sessão normal ou execução de gatilho.
- Após 2 minutos de inatividade, em uma sessão de trabalho iniciada por outra sessão.
Uma rodada ativa do agente impede a parada. A verificação de manutenção é executada a cada 5 minutos. Portanto, uma parada automática normal ocorre aproximadamente 15 a 20 minutos após a rodada no terminal.
Uma rodada que aguarda uma pessoa não realiza nenhum trabalho: o agente fez uma pergunta ou pede permissão para executar uma ferramenta. Essa rodada mantém o computador ativo por no máximo 2 horas após o Beeuni detectar a espera pela primeira vez. Em uma execução de gatilho ou agendamento, ninguém recebe a solicitação, e o limite é de 30 minutos. Em seguida, o Beeuni encerra a rodada e para o computador. Envie uma mensagem para continuar. Uma chamada de modelo ou a página da sessão aberta conta como atividade e mantém o computador ativo como de costume.
Uma página de sessão que você está usando mantém a sessão ativa. Ela conta como em uso enquanto a guia está visível e você clicou, digitou, rolou ou interagiu com ela nos últimos 10 minutos, e somente quando você pode iniciar sessões no projeto. Uma guia deixada aberta sem nenhuma interação deixa de contar após 10 minutos, então a sessão para aproximadamente 15 a 20 minutos depois. Uma guia aberta por um visualizador somente leitura nunca mantém a sessão ativa. Usar apenas a página mantém uma sessão ativa por no máximo 2 horas após a última rodada do agente; uma nova mensagem inicia uma rodada e reinicia esse limite.
O que a parada e a exclusão preservam
Parar e retomar preservam a identidade e o sistema de arquivos do sandbox. Excluir destrói o sandbox. O Git é o único registro duradouro: o trabalho que o agente confirmar e enviar será preservado; todo o resto, não.
Marcadores
Um marcador classifica uma sessão: bug, customer: eu, worker. Abra o menu ⋯ de uma sessão e escolha Edit labels. O filtro Labels na lista de sessões mostra apenas as sessões que contêm todos os marcadores selecionados. Os marcadores são textos livres, de 1 a 64 caracteres, com no máximo 20 por sessão.
Agentes e scripts também definem marcadores: beeuni sessions new --label worker, beeuni sessions update --label needs-review (dentro de uma sessão, sem um ID, aplica o marcador a essa sessão) ou labels na API e no SDK. Uma sessão também contém um objeto metadata de texto livre para suas próprias chaves — consulte Sessões do SDK.
Runtime
Uma sessão executa um harness, harness padrão ou harness experimental. Consulte Harnesses. O Beeuni armazena o agente e o modelo selecionados quando a sessão é iniciada. Uma sessão em execução mantém seu harness até ser reiniciada ou retomada.
Acesso à sessão
Uma sessão é privada para a pessoa que a criou. O proprietário abre Session access e escolhe uma das 3 opções.
| Opção | Quem pode abrir a sessão |
|---|---|
| Only you | Somente o proprietário. Esta é a opção padrão. |
| Specific people | O proprietário, além dos membros e grupos escolhidos por ele. |
| Whole project | Todos os membros do projeto. |
Todos que têm acesso podem ler a conversa e continuá-la.
Uma sessão compartilhada usa chaves compartilhadas. Depois de compartilhada, uma sessão usa apenas chaves de provedores compartilhadas com todo o projeto, nunca as chaves pessoais de alguém ou a conexão do ChatGPT. Se o modelo usava suas próprias chaves, o compartilhamento o muda para as chaves do projeto daquele provedor. Se o projeto não compartilhar nenhuma chave que execute o modelo, o compartilhamento será recusado e a sessão continuará privada. Consulte Chaves de provedores e acesso de membros.
Somente o proprietário pode alterar isso. Um gerente de projeto que não criou a sessão pode abri-la quando ela for compartilhada com ele, além de pará-la, reiniciá-la ou excluí-la. Ele não pode alterar quem mais pode abri-la. Compartilhar uma sessão com um gerente não lhe transfere a lista de acesso.
Um tipo de sessão não tem proprietário humano: as sessões criadas por um gatilho, que são executadas com a identidade do agente do gatilho. Os gerentes de projeto administram essas sessões. Defina a política para todas elas no próprio gatilho, em Session access — salvar ali também atualiza as sessões que o gatilho já criou.
Administradores podem abrir todas as sessões
O proprietário de uma conta pode permitir que proprietários e administradores da conta abram todas as sessões da conta, inclusive as que os membros mantêm privadas. Ative a opção em Account → Settings → Security → Admins can open every session. Ela vem desativada por padrão.
- Somente o proprietário da conta pode alterar isso. Um administrador vê a opção, mas não pode ativá-la, então nenhum administrador pode conceder acesso a si mesmo ao trabalho de todos.
- Os administradores encontram essas sessões na página Sessions do projeto. A barra lateral continua mostrando apenas as sessões que você iniciou ou que foram compartilhadas com você.
- O acesso é completo. Um administrador pode abrir, ler e continuar a sessão, assim como uma sessão compartilhada com todo o projeto.
- Os membros podem ver isso. Enquanto a opção estiver ativada, a caixa de diálogo Session access informa que proprietários e administradores podem abrir todas as sessões.
- Tudo é auditado. Cada alteração é registrada como
iam.session_oversight.enableouiam.session_oversight.disable, e cada sessão que um administrador abre por meio desse recurso é registrada comoproject.admin_oversight_session_read(no máximo uma vez por administrador e sessão a cada hora). - Os tokens de agente e de sandbox nunca recebem esse acesso, mesmo quando iniciados por um administrador.
Encontrar uma sessão pelo proprietário ou pelo acesso
A página Sessions do projeto mostra o proprietário e o acesso de cada sessão na respectiva linha: o avatar e o nome do proprietário (You para as suas sessões), seguidos de um ícone que indica quem pode abri-la: um cadeado para Only the owner, pessoas para Specific people e um globo para Whole project.
Abra Filter na página Sessions para restringir a lista:
- Owner — uma entrada por pessoa, com uma contagem.
- Access — Only the owner, Specific people ou Whole project.
- Grouping → Owner — uma seção por pessoa, com as suas primeiro.
Os filtros combinam com Status, Source e a pesquisa. Reset limpa todos.
Compartilhar uma prévia
Você pode compartilhar a prévia ao vivo de uma sessão por meio de um link público, em modo somente leitura ou interativo. A criação desse link cabe ao proprietário da sessão, pelo mesmo motivo: o link não exige autenticação, então qualquer pessoa que o tenha pode ler a sessão sem entrar. Um gerente de projeto pode listar e revogar os links de uma sessão sem ser seu proprietário — revogar sempre apenas remove o acesso.
Para obter a enumeração completa de status, as variáveis de ambiente injetadas e os endpoints do daemon, consulte Runtime. Para saber como uma sessão seleciona seu agente, consulte Agentes. Para sessões iniciadas por um agendamento ou webhook, consulte Gatilhos. Para aplicar o trabalho da sessão à ramificação padrão, consulte Solicitações de alteração.