Colaboração com IA

Colaborar de Forma Autônoma e Contínua

Sumário

Depois que uma ferramenta de IA estiver conectada (Conectar uma Ferramenta de IA), você pode tornar a colaboração contínua: com o skill de worker incluído, seu agente trabalha na pasta de dados por conta própria — sob demanda ou continuamente em segundo plano, para que vocês colaborem quase em tempo real.

Uma base de tarefas comum para você e seus agentes

O TandemLoop é as duas coisas: o seu sistema pessoal para gerenciar sua vida e seus projetos — e uma base de tarefas compartilhada, na qual você trabalha com os mais diversos agentes de IA. Como tudo fica em arquivos simples na pasta de dados, essa pasta é a fonte comum da verdade: você planeja e decide; um ou mais agentes leem o mesmo estado, fazem sugestões e cuidam do que lhes foi atribuído. Nenhum agente vem integrado, nenhum é exclusivo — você pode trocar ou combinar ferramentas, e todas continuam trabalhando sobre a mesma base.

O skill de worker

O skill de worker é um conjunto de instruções compacto que você passa para a sua ferramenta de IA. Ele descreve um ciclo de trabalho recorrente:

  • primeiro, recolher e pôr em prática as suas respostas às devoluções dele,
  • encontrar tarefas disponíveis atribuídas ao agente (assigned_to: ai) e cuidar delas por ordem de prioridade,
  • verificar se há novo feedback seu nas propostas pendentes (se ativadas) e revisá-las,
  • devolver os resultados para avaliação ou com uma pergunta a você.

Ele segue rigorosamente o contrato de trabalho do AGENTS.md: sem propostas, cria itens novos e altera o que já existe diretamente — de forma rastreável no histórico das suas tarefas —, mas só apaga a seu pedido e não conclui nem descarta as suas tarefas por conta própria; com propostas, sugere tudo o que é estrutural como proposta — o controle continua com você.

De Volta do Agente

Quem passa tarefas ao agente também as recebe de volta: se ele preparou algo, devolve a tarefa para avaliação; se precisa de uma decisão, informação ou material, faz uma pergunta. Cada devolução traz uma nota do agente — o que ele fez, onde está o resultado e o que você deve fazer, ou então a pergunta dele.

Onde você vê as devoluções:

  • Na barra lateral, abaixo da Caixa de Entrada, fica De Volta do Agente com o número de devoluções pendentes e, logo abaixo — assim que houver alguma —, separadas, Para Avaliação, Pergunta e Com o Agente. No iPhone, é a aba De Volta.
  • Onde quer que a tarefa apareça — em projetos, visualizações, quadro, tabela, calendário —, ela tem um símbolo próprio: um balão de fala com marca de seleção (para avaliação) ou com ponto de interrogação (pergunta). Um clique nele mostra a nota formatada, com links clicáveis, junto com as respostas possíveis.
  • Nos detalhes da tarefa, a devolução aparece logo no topo.

Como responder — direto na lista, no símbolo, nos detalhes ou no menu de contexto:

Resposta Efeito
Aceitar (em Para Avaliação) A tarefa fica concluída; fica registrado que o agente a concluiu e que você aceitou o resultado
Pedir Ajustes (em Para Avaliação) Volta ao agente com um breve comentário
Responder (em Pergunta) Sua resposta vai para o agente, e a tarefa volta para ele
Assumir Tarefa A tarefa é atribuída a você
Descartar Tarefa A tarefa é descartada

Toda resposta pode ser revertida com Desfazer no aviso que aparece embaixo. Cada resposta, com o comentário ou a resposta escrita, fica no histórico da tarefa; assim, a troca continua rastreável — quem disse o quê e quando. Na próxima execução, o agente reconhece sua resposta sem ambiguidade e cuida primeiro dos ajustes e das respostas. Nas visualizações, você pode filtrar pelo status Para Avaliação ou Pergunta, por @is_handback e pela sua resposta; no quadro, os dois aparecem como colunas próprias ao lado de Ativo.

Com o Agente: o agente roda fora do TandemLoop — o app não consegue iniciá-lo. Até ele retomar seus ajustes ou sua resposta, a tarefa fica em De Volta do Agente, na seção Com o Agente, com o tempo desde a sua resposta e o momento em que o agente trabalhou pela última vez (ele registra isso em _config/agent.yaml a cada execução). Nesse caso, inicie seu agente ou passe a ele a frase certa com Copiar Instruções. Assim que ele retoma a tarefa, ela some dali e você recebe uma notificação. Se o seu agente roda regularmente, por exemplo por meio de um agendamento, você não precisa fazer nada.

Como o agente faz a devolução está descrito no AGENTS.md. Lá está o formato do arquivo (status: needs-review ou needs-input e a nota como registro no histórico). Um agente consegue escrever e ler isso sem ferramentas adicionais — mesmo com o app fechado.

Instalação: copiar o texto e passar ao agente

Você instala o skill passando o texto dele para a sua ferramenta — sem download, sem arquivo de configuração.

  1. Aponte a ferramenta para a pasta de dados (veja Conectar uma Ferramenta de IA).
  2. Copie o texto do skill — inteiro, da seção O texto do skill para copiar, no fim deste capítulo.
  3. Passe-o para a ferramenta. Cole o texto na sua ferramenta de IA. A primeira linha do texto instrui a ferramenta a transformá-lo em um skill reutilizável chamado tandem-worker — então você não precisa explicar mais nada.
  4. Execute. Depois disso, você inicia uma rodada com /tandem-worker (ou a forma de chamada equivalente da sua ferramenta).

A instrução está no texto. Como a instrução “transforme isto em um skill” já está no topo do texto copiado, basta colá-lo inteiro uma vez. Ferramentas com sistema de skills próprio (por exemplo, Claude Code/Cowork, OpenClaw, Hermes Agent) o guardam de forma permanente.

Operação contínua: quase em tempo real

Em vez de iniciar cada rodada manualmente, você pode executar o skill repetidamente. Quanto menor o intervalo, mais a colaboração se aproxima do tempo real: você cria uma tarefa ou escreve um feedback em uma proposta e, pouco depois, seu agente reage. O caminho exato depende da ferramenta:

Ferramenta Operação contínua (exemplo)
Claude Code / Cowork Comando de loop com intervalo, por exemplo, /loop 10m /tandem-worker
Codex CLI execução autônoma pelo modo /goal ou uma execução --full-auto que repete o skill
OpenClaw tarefa Cron agendada que dispara o skill no intervalo
Hermes Agent já roda continuamente (24/7) — basta incluir o skill no agendamento dele
Genérico uma entrada Cron ou um pequeno script que chama sua ferramenta periodicamente com /tandem-worker

A sintaxe exata e a disponibilidade desses mecanismos de loop dependem de cada ferramenta, não do TandemLoop — em caso de dúvida, consulte a documentação dela.

Não deixe vários agentes escreverem ao mesmo tempo. Quando várias rodadas ou vários agentes editam em paralelo a mesma pasta de dados — principalmente se ela é sincronizada pela nuvem —, podem surgir cópias de conflito ou edições duplicadas. Deixe apenas um agente escrever de cada vez e não escolha um intervalo menor que a duração de uma rodada típica. Veja também A Pasta de Dados e o Formato dos Arquivos.

Conectar agentes diferentes

O caminho é o mesmo para qualquer ferramenta agêntica: dar acesso à pasta de dados, indicar o AGENTS.md e passar o skill de worker. Dois exemplos além dos citados no capítulo anterior:

  • OpenClaw — um agente pessoal de código aberto, que lê e escreve arquivos locais, tem um sistema de skills próprio e executa tarefas agendadas por Cron. Você o aponta para sua pasta de dados e passa o skill de worker.
  • Hermes Agent — um agente de código aberto que roda continuamente, com acesso a arquivos locais e um conceito próprio de skills. Ele pode cuidar da pasta de dados o tempo todo.

Como todos usam a mesma pasta de dados e o mesmo contrato de trabalho (AGENTS.md), você pode misturar ou trocar agentes — desde que apenas um escreva de cada vez, a base de tarefas comum continua consistente.

O texto do skill para copiar

Copie o texto a seguir por completo e passe-o para a sua ferramenta de IA. (Idêntico ao arquivo de modelo incluído docs/agent-skills/tandem-worker.md.)

# /tandem-worker—Autonomous work cycle for TandemLoop

> **To the AI tool receiving this text:** Turn the following into a reusable skill (or a
> saved instruction / slash command) named `tandem-worker`. Run it whenever I say
> `/tandem-worker`—once or periodically in a loop. Requirement: you have read and
> write access to my TandemLoop vault folder.

One pass of an autonomous work cycle for a TandemLoop vault. You first collect the
human's answers to your handbacks, scan the vault for assigned, available tasks, check
open proposals for new feedback, work through tasks and hand results and questions back
to the human—always within the working agreement in `AGENTS.md`.

---

## Required reading

Read these files **once per session** (not on every pass). They are the binding source
of truth; this skill only describes the procedure.

| File | Provides |
|------|----------|
| `AGENTS.md` (vault root) | Working agreement: allowed/forbidden actions, directory structure |
| `_system/docs/data-model.md` | Fields, enums, required fields per entity |
| `_system/docs/proposal-system.md` | Proposal format, all action types, reference rules (only with proposals turned on) |
| `_system/docs/update-rules.md` | Write permissions, decision tree |

---

## Core principle

Tandem: the human sets the direction, the AI provides the power. Control always stays
with the human. Whether proposals are turned on is stated in `AGENTS.md`. This results in
three channels:

- **Allowed directly:** maintain the content of tasks with `assigned_to: ai` (title, body,
  `status`, date fields, `waiting_for`, `tags`, `delegation`, `repeat`, custom
  attributes). With proposals off, also create new things wherever they belong and
  change and move existing things (tasks, projects, milestones, areas, folders, views;
  create tags)—with a log entry on every changed task of the human. With proposals on,
  only new tasks in `_inbox/`. In both cases the exceptions in `AGENTS.md` apply
  (attribute definitions, themes, reminders at the human's request).
- **Only on request or as a proposal:** with proposals off, deleting, completing or
  dropping the human's tasks and changing specs—without a request, clarify it with a
  question (`needs-input`) on one of your own tasks; with proposals on, everything beyond
  the above **as a proposal** in `_proposals/`.
- **Communication & feedback:** through the **handback** (`status: needs-review` or
  `needs-input` + a handback note in the log), the **proposal discussion** and the
  **conversation log in the task body**—no separate message files, no workarounds via
  `waiting`, tags or `waiting_for`.

Never perform the forbidden actions listed in `AGENTS.md` (including `_system/`,
`_archive/`, `_conflicts/`, app settings in `_config/`, schema, restructuring directories)—not even as a
proposal.

---

## Phase 1: Orientation

First record your run: write `_config/agent.yaml` with exactly one line
`last_run: YYYY-MM-DDTHH:mm:ss` (current local time, no quotes). The app uses it to show
the human when you last worked.

### 1a) Collect the human's answers (before any new work)

- **Returns:** all tasks with `assigned_to: ai`, `status: active` and
  `handback_reply: revise` or `handback_reply: answered`. The newest `entry:human` entry
  holds the comment (`**Revise:** …`) or the answer (`**Answer:** …`; German vault:
  `**Nacharbeit:**` or `**Antwort:**`). Delete the
  `handback_reply` line right away when you pick the task up again—until then the app
  shows the task as "With the Agent". → Highest priority in phase 2.
- `handback_reply: accepted`, `taken-over` or `dropped`: nothing to do (approved, taken
  over, or dropped). Tasks in `needs-review`/`needs-input` are waiting for the human—leave
  them alone.
- Read **open proposals** in `_proposals/` (only with proposals turned on). On `status: revision_needed` or a new
  discussion entry from the human: incorporate the feedback, **revise the existing
  proposal in place** (adjust actions/title, update `modified`, add a new discussion
  entry with an explanation). Do not create a new proposal unless the human explicitly
  asks for a split. → Highest priority in phase 2.
- Also treat **assigned active tasks** (`assigned_to: ai`, `status: active`, no
  `handback_reply`) where the human commented in the body without a handback (newest
  entry is `entry:human`) as returns.

### 1b) Determine available tasks

A task is available when **all** conditions are met:

1. **Task:** `assigned_to: ai`, `status: active`, `waiting_for: null`, `defer_date` not in the future
   (tasks in `needs-review`/`needs-input` are never available—they are with the human)
2. **Project** (if any): `status: active`
3. **Milestone** (if any): `status: active`
4. **Sequence:** with `project_type: sequential`, formally only the first active task

Also scan `_inbox/` for tasks with `assigned_to: ai`.

**Think from the project goal, not from the task list.** Read all tasks of a project and
ask: "What has to happen next so this project reaches its goal (`success_criteria`)?"
That can mean: keep working, adjust the order (`sequence_order`), add missing tasks, or
merge redundant ones / mark them `dropped`. The task list is a tool; the project goal is
the truth. With proposals off, create missing tasks and reorder existing ones directly;
drop the human's redundant tasks only at their request (ask first). With proposals on, such adjustments
go through a proposal.

---

## Phase 2: Prioritization

Order of the available tasks:

1. **Returns** with feedback (from 1a)—always first
2. **Overdue**—`due_date` in the past
3. **Today**—`do_date` = today
4. **Delegation**—`do` before `draft` before `ask`
5. **Sequence**—lower `sequence_order` first

Choose by **complexity budget**, not by a fixed limit:

| Complexity | Examples | Share of budget |
|------------|----------|-----------------|
| Light | Fix a field, short research, vault maintenance | ~10% |
| Medium | Analysis, draft concept, compare options | ~30% |
| Heavy | Extensive concept, multi-step research, code feature | ~50% |

**Goal: 3–5 tasks per pass** (e.g., 1 heavy + 2–3 light, or 2 medium + 2 light).
Returns count as one task and do not block the pass.

**Review brake:** if **5 or more** of your tasks are already in `needs-review`, create no
new drafts (`draft`) in this pass—work on returns, `do` tasks and vault upkeep. The human
should not get more reviews than they can handle.

---

## Phase 3: Execution

For each task (or a related group of tasks in the same project):

1. **Load context:** task file, project file, milestone if any, and related material from
   the project's `reference_folder` (if set).
2. **Solve the task** according to its type:

| Task type | Approach |
|-----------|----------|
| Concept / strategy / research / analysis | Save the result as a file in the project's `reference_folder` (or, if none is set, summarize it in the task body) |
| Vault work | Carry it out directly on the assigned task (within the allowed fields) |
| Code | Own branch (`ai/<feature>`), work and commit locally there—never on `main`, no push without instruction |

**Obstacles are tasks.** Missing access, an awkward file format, information that is hard
to find—these are not limitations to note but subtasks to solve: write a script, use an
alternative source, change the approach. "Can't be done" is not an answer. The only
acceptable answers are: **"Done."** or **"I need X from the human to continue."**—the
latter as a question (`needs-input`, see phase 4).

> **Optional (depends on the tool):** If your AI tool supports parallel sub-agents with
> their own context, you can act as a "conductor": start one sub-agent per independent
> task with a complete briefing and let them work in parallel. This is an optimization,
> not a requirement—the cycle works just as well sequentially.

---

## Phase 4: Completing each task

Immediately after finishing a task (do not batch)—using TandemLoop's native mechanisms:

| Delegation | Completion |
|------------|------------|
| `do` | Task → `status: completed` (+ `completed_date`, `completed_by: ai`). Log entry in the body. Hand it back for review instead only if the result is risky/irreversible or explicitly requested. If the task has `repeat:`, the app creates the next occurrence—never create it yourself. |
| `draft` | Save the result; **hand the task back for review**: `status: needs-review` + handback note (`**For review:** …`). Never `completed` yourself. |
| `ask` | **Question**: `status: needs-input` + handback note (`**Question:** …`) with the concrete question, options numbered. |
| blocked (any mode) | **Question**: `status: needs-input` + handback note saying what you need. |

The handback note is a normal log entry (`entry:ai`): what you did, where the result is
(as a link), what the human should do or the question. In a German vault it starts with
`**Zur Prüfung:**` or `**Rückfrage:**`. Delete an existing
`handback_reply` line when handing back. Exact format and example: `AGENTS.md`,
"Handing a Task Back to the Human".

Update `modified` on every change. If completing the task needs something **new** or a
**restructuring** (follow-up task, project, milestone, tag, moving a task …), do it
directly when proposals are off (log entry on affected tasks of the human)—as a
**proposal** when they are on. Never **delete** without an explicit request.

**Conversation log in the task body** (format exactly as in `AGENTS.md` / `_system/docs/`):
Insert a new entry before the relations block, with the entry marker
`<!-- entry:ai:YYYY-MM-DDTHH:mm:ss -->`, the heading as given in `AGENTS.md` (English
vault: `## AI agent — YYYY-MM-DD`, German vault: `## KI-Agent — D.M.YYYY`) and a short
summary; link created artifacts and affected entities with wiki links.

---

## Phase 5: Next-action check

After execution, check for each affected project: **Does it still have a clear next
action?**

| Situation | Action |
|-----------|--------|
| A next active task exists | Fine—keep working or next pass |
| A task in `waiting`, `needs-review`, `needs-input` or an open proposal exists | Counts as a next action—the project is not stuck |
| No active task left | Proactively create a follow-up task (proposals off: directly in the project; proposals on: in the inbox or via a proposal) or note it in the project log |
| Project looks finished | "Complete project?" for a decision—as a proposal, or with proposals off as a question (`needs-input`) on one of your own tasks |

**No project may be left hanging without a next action.**

---

## Phase 6: Proactive

If capacity remains after the assigned tasks: **act instead of asking**, within the
working agreement.

- **Obviously right** → do it directly (if allowed) or as a proposal
- **Direction decision needed** → hand it back for review (`needs-review`) or as a proposal
- **Affects the human's life or external relationships** → ask (`needs-input`)

Proactively created entities carry `created_by: ai`. Make larger actions traceable in the
task/project log.

---

## Limits

Within the vault and the code repositories, the agent has wide freedom. Hard limits:

- **External communication**—no emails, messages or posts without instruction
- **`git push`**—only on explicit instruction (local commits and branches are free)
- **Deleting, completing or dropping the human's tasks, changing specs**—only on explicit
  request; restructuring as a proposal with proposals on, traceable with proposals off
  (log entry, summary)
- **Forbidden areas**—`_system/`, `_archive/`, `_conflicts/`, app settings in `_config/`,
  schema, directory structure (see `AGENTS.md`)
- **Private content**—personal notes/reflections remain reserved for the human

---

## Code projects: branch workflow

When a task involves code:

1. **Always a separate branch**—`ai/<feature-name>`
2. **Local commits are free**—no push without instruction
3. **Signal review**—hand the task back for review (`status: needs-review`), handback note with branch, changes and what to check
4. **The human decides on the merge**