tagged
#effect
Name spans for humans, query them by attribute Observing an agent Efferent keeps the span tree small, puts trajectory vitals on the run, gives streams and settled calls identical telemetry, and stamps the resolved model into durable history. Observability is built in; where it goes is a layer Observing an agent Spans, metrics, and logs are Effect built-ins, not a vendor SDK threaded through the core; one layer at the edge decides what gets exported and where. Retry is not a policy Building a coding agent Efferent retries only failures that can move, refuses multi-hour Retry-After sleeps, rejects empty 200s, and stops replaying a stream the moment content escapes. The model role, not the model id — and why 'code' earns its own tier Building a coding agent Smith routes refining, implementation, and one-shot helpers through three role-scoped views of one live settings store; the agent code never learns a provider name. SQLite is the easy part; durability is the feature How an agent remembers Efferent starts with one local file, then earns trust with versioned migrations, owner-only WAL files, decoded salvage reads, transactional forks, and pruning that really reclaims space. Subscription OAuth is the hard half of multi-provider auth An Anthropic subscription token changes the HTTP request, the first system block, refresh persistence, and the login race — it is not an API key with a different prefix. Pay for the index, not the book: extending an agent with markdown on disk Building a coding agent Smith exposes skill names up front, loads bodies on demand, lets workspaces shadow bundled procedures, and graduates corroborated memory into the same mechanism. The whole permission model is one folder Building a coding agent Smith confines file tools to the workspace, runs Bash with the workspace as its only writable mount, protects harness state twice, and fails closed when bubblewrap is unavailable. Error messages are prompt engineering now Building a coding agent In Efferent, tool failures correct the current turn and gate findings brief the next attempt. The placement, shape, and recovery verb matter more than the exception text. The context window is a resource you engineer, not a buffer you fill How an agent remembers Efferent folds context at two different boundaries, preserves a safe tail, and deterministically reattaches the rules a lossy summary must never be trusted to remember. Movement is observed, never claimed The harness said "0 files touched" while the coder rewrote main.zig, and the judge swore the deliverable did not exist — a post-mortem of claim channels that lie structurally, and the oracles that replaced them. The transcript is the memory How an agent remembers The model remembers nothing between calls. The useful engineering is in the log: atomic positions, decoded reads, non-destructive folds, and transactional branches. A quality bar is a workspace artifact, not a prompt Building a coding agent Smith profiles a repository in conversation, dry-runs the blast radius, vendors the chosen rules into the project, and locks legacy debt behind a line-sensitive ratchet. A check that already passes cannot measure the work Building a coding agent The spec agent's acceptance checks run the moment they're proposed — any that pass on the untouched workspace bounce the draft back, because a check that starts green would accept a no-op run. An agent loop is a while loop with good manners Building a coding agent One agent turn, dissected: exits, breakers, and recovery paths are the actual engineering — in a loop whose own codebase bans the while statement. AI applications are Effect-shaped Effect, from zero Flaky IO, string boundaries, provider churn, fan-out, cancellation that stops billing — the defining problems of LLM apps are the ones effect systems were built for. Effect from zero: the beginner's guide I wanted Effect, from zero Programs as values, errors you can see, and batteries included — Effect.ts from nothing, with standalone examples and a map of what to ignore at first.