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.