本文以英文发布。
Practical notes: Agent Harnesses — Intuitively and Exhaustively Explained
Operable walkthrough of Practical notes: Agent Harnesses — Intuitively and Exhaustively Explained: contracts, checks, and drop-in code slots for teams shipping this pattern.
Use this as an operator-facing rebuild of the ideas in “Agent Harnesses — Intuitively and Exhaustively Explained”: clear stages, ordered code slots, and recovery notes that survive a handoff. The Overview stage works best when treated as a measurable surface. Capture one golden transcript, one failure case, and the rollback note before expanding scope. Keep configuration outside application code. Environment files, secret stores, and feature flags belong in one place operators can audit without reading the whole graph.
Building a Fundamental Understanding
For the Building a Fundamental Understanding stage, define the inputs, the owner of the step, and the exit criteria before changing code. Operators should be able to re-run the step from a known checkpoint without guessing hidden state. Document the happy path and the recovery path together. Retries, human gates, and dead-letter handling are part of the product, not later polish. Authenticate at the gateway and re-authorize at the data plane. A bearer token alone is not a tenancy boundary.
Review: LLMs
For the Review LLMs stage, define the inputs, the owner of the step, and the exit criteria before changing code. Operators should be able to re-run the step from a known checkpoint without guessing hidden state. Prefer small, testable units over sprawling scripts. When a step fails, the failure should point at a single responsibility rather than a tangled pipeline. Prefer structured outputs with schema validation over free-form prose when the next step is code or a tool call.
Review: Agents
For the Review Agents stage, define the inputs, the owner of the step, and the exit criteria before changing code. Operators should be able to re-run the step from a known checkpoint without guessing hidden state. Treat this stage as a contract between inputs and validated outputs. Name the artifacts, define success checks, and refuse silent partial completion. Authenticate at the gateway and re-authorize at the data plane. A bearer token alone is not a tenancy boundary. For the Review Agents stage, define the inputs, the owner of the step, and the exit criteria before changing code. Operators should be able to re-run the step from a known checkpoint without guessing hidden state. Keep configuration outside application code. Environment files, secret stores, and feature flags belong in one place operators can audit without reading the whole graph.
Review: Chain of Thought and Tool Use
When working through the Review Chain of Thought stage, write down the contract first: required inputs, success signal, and what happens on partial failure. That checklist keeps later code changes honest. Document the happy path and the recovery path together. Retries, human gates, and dead-letter handling are part of the product, not later polish. Log tool name, args hash, latency, and outcome for every call. Debugging agent loops without that trail wastes hours.
Review: Skills
When working through the Review Skills stage, write down the contract first: required inputs, success signal, and what happens on partial failure. That checklist keeps later code changes honest. Prefer small, testable units over sprawling scripts. When a step fails, the failure should point at a single responsibility rather than a tangled pipeline. Log tool name, args hash, latency, and outcome for every call. Debugging agent loops without that trail wastes hours.
my-skill/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable code
├── references/ # Optional: documentation
├── assets/ # Optional: templates, resources
└── ... # Any additional files or directories
The Fundamental Idea of a Harness
When working through the The Fundamental Idea of stage, write down the contract first: required inputs, success signal, and what happens on partial failure. That checklist keeps later code changes honest. Treat this stage as a contract between inputs and validated outputs. Name the artifacts, define success checks, and refuse silent partial completion. Log tool name, args hash, latency, and outcome for every call. Debugging agent loops without that trail wastes hours. When working through the The Fundamental Idea of stage, write down the contract first: required inputs, success signal, and what happens on partial failure. That checklist keeps later code changes honest. Keep configuration outside application code. Environment files, secret stores, and feature flags belong in one place operators can audit without reading the whole graph.
The Agent Harnesses Standard
The The Agent Harnesses Standard stage works best when treated as a measurable surface. Capture one golden transcript, one failure case, and the rollback note before expanding scope. Document the happy path and the recovery path together. Retries, human gates, and dead-letter handling are part of the product, not later polish. Expose tools with narrow schemas and explicit side-effect labels. Hosts need to know which calls mutate state before they auto-approve.
my-harness/
├── HARNESS.md # Required: metadata + instructions
├── skills/ # Optional: a set of skills
└── references/ # Optional: a set of reference documents
Defining HARNESS.md
The Defining HARNESS md stage works best when treated as a measurable surface. Capture one golden transcript, one failure case, and the rollback note before expanding scope. Prefer small, testable units over sprawling scripts. When a step fails, the failure should point at a single responsibility rather than a tangled pipeline. Expose tools with narrow schemas and explicit side-effect labels. Hosts need to know which calls mutate state before they auto-approve.
---
name: <name of the harness>
description: <description of what the harness is for>
---
<body>
Defining the Skills Directory
The Defining the Skills Directory stage works best when treated as a measurable surface. Capture one golden transcript, one failure case, and the rollback note before expanding scope. Treat this stage as a contract between inputs and validated outputs. Name the artifacts, define success checks, and refuse silent partial completion. Expose tools with narrow schemas and explicit side-effect labels. Hosts need to know which calls mutate state before they auto-approve. The Defining the Skills Directory stage works best when treated as a measurable surface. Capture one golden transcript, one failure case, and the rollback note before expanding scope. Keep configuration outside application code. Environment files, secret stores, and feature flags belong in one place operators can audit without reading the whole graph.
my-skill/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable code
├── references/ # Optional: documentation
├── assets/ # Optional: templates, resources
└── ... # Any additional files or directories
my-harness/
├── HARNESS.md
├── skills/
| ├── my-skill-1/
| | ├── SKILL.md
| | ├── scripts/
| | ├── references/
| | ├── assets/
| | └── ...
| └── my-skill-2/
| ├── SKILL.md
| ├── scripts/
| ├── references/
| ├── assets/
| └── ...
└── references/
Defining the References Directory
For the Defining the References Directory stage, define the inputs, the owner of the step, and the exit criteria before changing code. Operators should be able to re-run the step from a known checkpoint without guessing hidden state. Document the happy path and the recovery path together. Retries, human gates, and dead-letter handling are part of the product, not later polish. Authenticate at the gateway and re-authorize at the data plane. A bearer token alone is not a tenancy boundary.
my-mraketing-harness/
├── HARNESS.md
├── skills/
| ├── create-blog-post/
| | ├── SKILL.md
| | └── ...
| ├── generate-images/
| | ├── SKILL.md
| | └── ...
| └── scan-social/
| ├── SKILL.md
| └── ...
└── references/
my-mraketing-harness/
├── HARNESS.md
├── skills/
| ├── create-blog-post/
| | ├── SKILL.md
| | └── ...
| ├── generate-images/
| | ├── SKILL.md
| | └── ...
| └── scan-social/
| ├── SKILL.md
| └── ...
└── references/
├── style-guide.md
└── brand-priorities.md
---
description: a style guide for the marketing website, which covers the creation
of all visual assets and standard typography rules
---
<body>
Structuring Large Harnesses
For the Structuring Large Harnesses stage, define the inputs, the owner of the step, and the exit criteria before changing code. Operators should be able to re-run the step from a known checkpoint without guessing hidden state. Prefer small, testable units over sprawling scripts. When a step fails, the failure should point at a single responsibility rather than a tangled pipeline. Authenticate at the gateway and re-authorize at the data plane. A bearer token alone is not a tenancy boundary.
my-harness/
├── HARNESS.md
├── skills/
| ├── skill1/
| ├── skill2/
| ├── skill3/
| └── ...
└── references/
├── reference1
├── reference2
├── reference3
└── ...
my-harness/
├── HARNESS.md
├── skills/
│ ├── software-development/
│ │ ├── SKILLS.md
│ │ ├── skill1/
│ │ │ └── SKILL.md
│ │ └── skill2/
│ │ └── SKILL.md
│ ├── market-analysis/
│ │ ├── SKILLS.md
│ │ └── skill3/
│ │ └── SKILL.md
│ └── social-media/
│ ├── SKILLS.md
│ ├── skill4/
│ │ └── SKILL.md
│ └── skill5/
│ └── SKILL.md
└── references/
├── brand-assets/
│ ├── REFERENCES.md
│ ├── reference1.md
│ └── reference2.md
├── software-infrastructure/
│ ├── REFERENCES.md
│ ├── reference3.md
│ └── reference4.md
└── product-information/
├── REFERENCES.md
└── reference5.md
...
└── references/
└── data-sources/
├── REFERENCES.md
├── relational/
│ ├── REFERENCES.md
│ └── schema-overview.md
└── warehouse/
├── REFERENCES.md
└── dataset-catalog.md
Operational checklist
When working through the Operational checklist stage, write down the contract first: required inputs, success signal, and what happens on partial failure. That checklist keeps later code changes honest.
Record timings and token or query cost next to functional results. Cost visibility early prevents surprise bills when the path moves from demo to shared environments.
Log tool name, args hash, latency, and outcome for every call. Debugging agent loops without that trail wastes hours.
Keep graph state flat and typed. Nested blobs hide which node wrote which field and break resume after interrupts.
Add a smoke test that exercises the critical path in CI with fixtures, not live paid APIs, whenever budgets allow.
Prefer small, testable units over sprawling scripts. When a step fails, the failure should point at a single responsibility rather than a tangled pipeline.
Before promoting the stack, freeze versions, capture a golden transcript for the critical path, and confirm rollback steps. Shared environments need rate limits, tenancy checks, and a clear owner for secret rotation. Prefer boring reliability over clever one-off demos.
Batch note for 52aa6b4e7ebd: keep provider keys out of the repo, set a per-session token ceiling, and store transcripts next to the eval fixtures so later model swaps stay comparable.