Observe 29 min

Observe the Run

Mereproduksi patch coding-agent yang tidak bisa dilacak, lalu menambahkan Anvia observers dan pipeline events.

Failure pattern

Patch sampai ke review, tetapi tidak ada yang bisa merekonstruksi run. File mana yang dibaca? Command mana yang gagal sebelum patch? Check mana yang diskip? Tool output mana yang menjadi evidence?

Reproduce the failure

const result = await codingPipeline.run(task);
console.log(result.summary);

Summary ada, tetapi path-nya hilang.

Successful Anvia pattern

Pasang Anvia observer pada agent dan pipeline observer pada workflow.

import { AgentBuilder, createObserver } from "@anvia/core";

const observer = createObserver({
  startRun(args) {
    const runId = crypto.randomUUID();
    runStore.start({ runId, prompt: args.prompt, history: args.history });

    return {
      startTool(toolArgs) {
        runStore.toolStarted({
          runId,
          toolName: toolArgs.toolName,
          args: toolArgs.args,
        });

        return {
          end(endArgs) {
            runStore.toolEnded({
              runId,
              toolName: endArgs.toolName,
              result: endArgs.result,
              skipped: endArgs.skipped,
            });
          },
        };
      },
      end(endArgs) {
        runStore.end({ runId, output: endArgs.output, usage: endArgs.usage });
      },
    };
  },
});

const observedAgent = new AgentBuilder("repo-coding-agent", model)
  .observe(observer)
  .build();

Pipeline stages juga menyimpan event:

await codingPipeline.run(task, {
  observer: {
    onEvent(event) {
      runStore.pipelineEvent(event);
    },
  },
});

Why it succeeds

Run record menangkap process evidence: prompt, stages, tool calls, command results, skipped checks, dan final output. Review dimulai dari fakta, bukan ingatan.

Success check

Run record harus menjawab behavior yang active, file yang dibaca, check yang gagal sebelum patch, check yang pass setelah patch, check yang diskip, dan risk yang tersisa.