Harden 27 min

Harden the Handoff

Mereproduksi end state coding-agent yang kabur, lalu menyimpan memory, run records, dan clean handoff artifact dengan Anvia.

Failure pattern

Session berakhir dengan patch, partial evidence, generated files, satu skipped test, dan catatan “mostly ready.” Engineer atau agent berikutnya harus merekonstruksi state.

Reproduce the failure

await agent.prompt("Continue the bug fix and summarize where we are.").send();

Jika state hanya hidup di chat, verified facts, rejected paths, dan unresolved checks mudah hilang.

Successful Anvia pattern

Gunakan Anvia memory untuk durable coding sessions, lalu wajibkan structured handoff artifact.

import type { MemoryAppendInput, MemoryContext, MemoryStore, Message } from "@anvia/core";

class RepoMemoryStore implements MemoryStore {
  async load(context: MemoryContext): Promise<Message[]> {
    return repoRunDb.loadMessages(context.sessionId);
  }

  async append(input: MemoryAppendInput): Promise<void> {
    await repoRunDb.appendMessages(input.context.sessionId, input.messages);
  }

  async clear(context: MemoryContext): Promise<void> {
    await repoRunDb.clearMessages(context.sessionId);
  }
}

const agent = new AgentBuilder("repo-coding-agent", model)
  .memory(new RepoMemoryStore(), { savePolicy: "turn" })
  .build();

await agent
  .session("issue_482_invite_acceptance", { userId: "engineer_17" })
  .prompt("Continue from the last verified finding.")
  .send();

Lalu buat handoff structured:

const Handoff = z.object({
  currentState: z.array(z.string()),
  changedFiles: z.array(z.string()),
  verifiedEvidence: z.array(z.string()),
  skippedChecks: z.array(z.string()),
  knownRisks: z.array(z.string()),
  nextAction: z.string(),
  approvalStatus: z.enum(["draft", "ready_for_review", "approved_by_human"]),
});

Why it succeeds

Memory membantu agent melanjutkan. Handoff membantu manusia dan future agent mempercayai state. Keduanya menyelesaikan masalah berbeda, jadi coding harness membutuhkan keduanya.

Success check

Handoff yang baik menyebut apa yang berubah, apa yang verified, apa yang belum selesai, check yang diskip, risk tersisa, next action, dan apakah human approval sudah terjadi.