Point at any LLM agent codebase. Harness Evolver will autonomously improve it — prompts, routing, tools, architecture — using multi-agent evolution with LangSmith as the evaluation backend.
FAQ
harness-evolver is a Claude Code plugin with 9 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes dev-dry-run, dev-release, dev-validate. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add raphaelchristi/harness-evolver> /plugin install harness-evolver@harness-evolver-marketplace
Point at any LLM agent codebase. Harness Evolver will autonomously improve it — prompts, routing, tools, architecture — using multi-agent evolution with LangSmith as the evaluation backend.
/plugin marketplace add raphaelchristi/harness-evolver-marketplace
/plugin install harness-evolver
npx harness-evolver@latest
Works with Claude Code, Cursor, Codex, and Windsurf.
cd my-llm-project
export LANGSMITH_API_KEY="lsv2_pt_..."
claude
/harness:setup # explores project, configures LangSmith
/harness:health # check dataset quality (auto-corrects issues)
/harness:evolve # runs the optimization loop
/harness:status # check progress (rich ASCII chart)
/harness:deploy # tag, push, finalize
Tested on a RAG agent (Agno framework, Gemini 3.1 Flash Lite, light mode):
xychart-beta
title "agno-deepknowledge: 0.575 → 1.000 (+74%)"
x-axis ["base", "v001", "v002", "v003", "v004", "v005", "v006", "v007"]
y-axis "Correctness" 0 --> 1
line [0.575, 0.575, 0.950, 0.950, 0.950, 0.950, 0.950, 1.0]
bar [0.575, 0.333, 0.950, 0.720, 0.875, 0.680, 0.880, 1.0]
| Iter | Score | Merged? | What the proposer did |
|---|---|---|---|
| baseline | 0.575 | — | Original agent — hallucinations, broken tool calls, no retry logic |
| v001 | 0.333 | Yes | Anti-hallucination prompt (100% correct when API responded, but 60% hit rate limits) |
| v002 | 0.950 | Yes | Breakthrough: inlined 17-line KB into prompt, eliminated vector search entirely. 5.7x faster, zero rate limits |
| v003 | 0.720 | No | Attempted hybrid retrieval — regressed, rejected by constraint gate |
| v004 | 0.875 | No | Response completeness fix — improved one case but regressed others |
| v005 | 0.680 | No | Reduced tool calls — broke edge cases, rejected |
| v006 | 0.880 | Yes | Evolution memory insight: combined v001's anti-hallucination with one-shot example from archive |
| v007 | 1.000 | Yes | One-shot example injection + rubric-aligned responses — perfect on held-out |
The line shows best score (only goes up — regressions aren't merged). The bars show each candidate's raw score. 4 merged, 3 rejected by gate checks. Not every iteration improves — that's the point.
| LangSmith-Native | No custom scripts. Uses LangSmith Datasets, Experiments, and LLM-as-judge. Everything visible in the LangSmith UI. |
| Real Code Evolution | Proposers modify actual code in isolated git worktrees. Winners merge automatically. |
| Self-Organizing Proposers | Two-wave spawning, dynamic lenses from failure data, archive branching from losing candidates. Self-abstention when redundant. |
| Rubric-Based Evaluation | LLM-as-judge with justification-before-score, rubrics, few-shot calibration, pairwise comparison. |
| Smart Gating | Constraint gates, efficiency gate (cost/latency pre-merge), regression guards, Pareto selection, holdout enforcement, rate-limit early abort, stagnation detection. |
/harness:evolve
|
+- 1. Preflight (validate state + dataset health + baseline scoring)
+- 2. Analyze (trace insights + failure clusters + strategy synthesis)
+- 3. Propose (spawn N proposers in git worktrees, two-wave)
+- 4. Evaluate (canary → run target → auto-spawn LLM-as-judge → rate-limit abort)
+- 5. Select (held-out comparison → Pareto front → efficiency gate → constraint gate → merge)
+- 6. Learn (archive candidates + regression guards + evolution memory)
+- 7. Gate (plateau → target check → critic/architect → continue or stop)
Detailed loop with all sub-steps
| Agent | Role |
|---|---|
| Proposer | Self-organizing — investigates a data-driven lens, decides own approach, may abstain |
| Evaluator | LLM-as-judge — rubric-aware scoring via langsmith-cli, few-shot calibration |
| Architect | ULTRAPLAN mode — deep topology analysis with Opus model |
| Critic | Active — detects evaluator gaming, implements stricter evaluators |
| Consolidator | Cross-iteration memory — anchored summarization, garbage collection |
| TestGen | Generates test inputs with rubrics + adversarial injection |
LANGSMITH_API_KEYDependencies installed automatically by the plugin hook or npx installer.
LangSmith traces any AI framework: LangChain/LangGraph (auto), OpenAI/Anthropic SDK (wrap_*, 2 lines), CrewAI/AutoGen (OpenTelemetry), any Python (@traceable).
For full observability into what each proposer does during evolution (every file read, edit, and commit), install the LangSmith tracing plugin:
/plugin marketplace add langchain-ai/langsmith-claude-code-plugins
/plugin install langsmith-tracing@langsmith-claude-code-plugins
With both plugins installed, the evolution loop traces to LangSmith as a hierarchy: iteration → proposers → tool calls.
MIT
.claude/
.claude-plugin/
marketplace.json
plugin.json
skills/
dev-dry-run/
SKILL.md
dev-release/
SKILL.md
dev-validate/
SKILL.md
.github/
ISSUE_TEMPLATE/
bug_report.md
feature_request.md
.gitignore
.npmignore
.worktreeinclude
agents/
harness-architect.md
harness-consolidator.md
harness-critic.md
harness-evaluator.md
harness-proposer.md
harness-testgen.md
assets/
banner.jpg
bin/
install.js
CHANGELOG.md
CLAUDE.md
CODE_OF_CONDUCT.md
docs/
ARCHITECTURE.md
FEATURES.md
superpowers/
plans/
2026-04-02-claude-code-inspired-roadmap.md
2026-04-02-dataset-health.md
2026-04-02-dynamic-lenses.md
2026-04-02-evolution-chart.md
2026-04-02-hermes-improvements.md
2026-04-02-report-bugfixes.md
2026-04-03-evolution-modes.md
2026-04-03-langsmith-evolution-tracing.md
2026-04-03-reference-improvements.md
2026-04-03-verdict-improvements.md
specs/
2026-03-31-v3-langsmith-native-design.md
2026-04-02-dataset-health-design.md
2026-04-02-dynamic-lenses-design.md
2026-04-03-evolution-modes-design.md
hooks/
hooks.json
session-start.sh
LICENSE
package.json
playground/
.env.example
rag-agent/
agent.py
knowledge.json
README.md
test_inputs.json
react-agent/
agent.py
README.md
test_inputs.json
README.md
requirements.txt
simple-qa/
agent.py
README.md
test_inputs.json
README.md
skills/
certify/
SKILL.md
deploy/
SKILL.md
evolve/
SKILL.md
health/
SKILL.md
setup/
SKILL.md
status/
SKILL.md
tests/
test_tools.py
tools/
_common.py
add_evaluator.py
adversarial_inject.py
analyze_architecture.py
archive_search.py
archive.py
cleanup_worktrees.py
consolidate.py
constraint_check.py
dataset_health.py
evolution_chart.py
extract_contracts.py
iteration_gate.py
log_iteration.py
mine_sessions.py
preflight.py
promote_learnings.py
read_results.py
regression_tracker.py
resource_registry.py
run_eval.py
secret_filter.py
seed_from_traces.py
setup.py
synthesize_strategy.py
trace_insights.py
update_config.py
validate_state.py© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic