AgentDescent
웹사이트 및 인터랙티브 데모 ·
시작하기 ·
문서화(Documentation)
경사 하강법 (Gradient descent) — 하지만 매개변수(parameters)는 에이전트입니다. AgentDescent는 사용자의 자체 예제를 기반으로 프롬프트, 스킬, 에이전트 디렉토리, 에이전트 코드 및 호스트 플러그인을 진화시킵니다. N개의 워커가 병렬로(in parallel) 수정을 제안하고, 하나의 애그리게이터(aggregator)가 이를 버전 관리되는 아티팩트(artifact)로 병합하며, 별도로 보관된 게이트(held-out gate)가 무엇을 유지할지 결정합니다. 이를 Python에서 하나의 evolve() 호출로, CLI(Command Line Interface)에서, 또는 Claude Code, Codex, OpenCode, DeepSeek Harness, Grok Bot 내부에서 사용할 수 있으며, 동일한 엔진에서 지정된 알고리즘 중 어느 것이든 또는 23개의 발표된 방법 포트(published-method ports)를 교체하여 사용할 수 있습니다.
PyPI
tests
docs
python
license
설치(Install)
pip install "agentdescent[mcp]>=0.9.0"
agentdescent demo
agentdescent doctor
호스트/MCP 기본 루프는 Path A (doctor → plan → start → apply)입니다. 고급 MCP 도구에는 agentdescent mcp --advanced가 필요하며, docs/mcp-path-a.md를 참조하십시오.
[mcp]는 에이전트용 MCP 서버를 추가하며 Python ≥ 3.10을 필요로 합니다. 라이브러리 자체는 3.9를 지원하므로, 이때는 [mcp]를 제거하고 CLI로 구동할 수 있습니다. 연구 예제는 휠(wheel) 외부에 있습니다. python -m examples.run_demo 또는 모든 알고리즘 포트를 실행하려면, 저장소를 클론하고 설치 및 첫 실행을 따르십시오:
git clone https://github.com/ThinkFlowLab/agentdescent && cd agentdescent
pip install -e ".[dev,mcp]"
agentdescent demo는 규칙에 잘못된 CSV 열 이름을 지정하는 스킬을 구축합니다. 총합이 알려진 12개의 케이스와 에이전트로서의 로컬 프로그램을 사용하여 실제 루프를 실행하며 — 모델만 대체됩니다 — 다음 결과로 끝납니다:
held-out reward: 1.000 outcomes: {'committed': 1}
what it learned: rules.md -> 'COLUMN: amount'
60초 퀵스타트 (quickstart)
API 키나 의존성 없이 바로 실행할 수 있습니다. 전체 계약은 세 가지 함수로 구성됩니다: 작업을 실행하는 방법, 점수를 매기는 방법, 그리고 실패 시 제안할 내용입니다.
from agentdescent import Task, evolve
tasks = [Task(id=f"t{i}", prompt=f"item {i}") for i in range(12)]
...
실제 모델과 실제 데이터셋을 사용하여
자격 증명은 호출 시점에 환경 변수에서 읽어오며 — 코드에서는 절대 읽지 않습니다 — 기본 URL은 제공업체(provider)를 선택합니다 (모든 제공업체 →):
export OPENAI_BASE_URL=https://api.deepseek.com
export OPENAI_API_KEY=sk-...
from agentdescent import SingleSlot, evolve, openai_compatible, reflector, scorer, tasks_from
from agentdescent.dataloader import hf_rows
...
40개의 HotpotQA 항목(12개 테스트용)에서 이는 0.167에서 0.583으로 테스트 데이터 정확 일치율을 높였으며, *
agentdescent init ./my-skill --data cases.jsonl --out spec.json # cases: 라인별로 {"prompt": ..., "gold": ...} 형태의 케이스
agentdescent plan spec.json # 유효성 검사 및 가격 책정; 실제 실행은 없음
agentdescent evolve spec.json --detach
...
apply를 실행할 때까지는 아무것도 기록되지 않으며, 이때 먼저 백업이 이루어집니다.
모든 알고리즘 호출하기
명명된 모든 알고리즘은 동일한 엔진을 기반으로 하는 기본값 세트이며, CLI(Command Line Interface), 스펙(spec), MCP 또는 호스트 플러그인을 통해 이름으로 선택할 수 있습니다:
agentdescent algorithms list
agentdescent algorithms show gepa
agentdescent algorithms run gepa ./prompt.txt cases.jsonl --rounds 1 --workers 1
...
스펙 내에서는 `
충실도는 포트(port)별로 선언되며 각 프로젝트의 릴리스된 코드를 따릅니다. 유사체는 벤치마크 재현물이 아닙니다.
모든 스물세 가지 사례와 측정 결과 →
알고리즘 추가하기
- 하나의 PR에 이름이 지정된 카드 —
build(ctx, params) -> Overrides를 통해 정책 슬롯 (policy slots)과 evolve() 노브(knobs)를 채웁니다. agentdescent/algorithms/_TEMPLATE.py를 복사하고 등록한 다음, python -m tools.gen_algorithms_docs로 카탈로그를 재생성합니다. 이름 지정된 알고리즘 카드 등록하기 →
- 자체 패키지에서 — 포크(fork)가 필요 없습니다. 이를 진입점(entry point)으로 노출하면
agentdescent algorithms list가 이를 감지합니다:
[project.entry-points."agentdescent.algorithms"]
my_method = "my_pkg:ALGORITHM"
에이전트에서 사용하기
**플러그인(plugin)**과 동일한 엔진입니다: 공유된 스킬은 호스트에게 언제 이를 활용해야 하는지 가르치고, MCP 서버는 doctor / plan / start / status / show / apply / cancel / resume (그리고 알고리즘, 감사 및 아카이브 도구)를 노출하며, CLI가 이를 미러링하므로 에이전트에서 시작된 실행을 셸(shell)에서 검사할 수 있습니다.
| 호스트 | 설치 명령어 | 사용 방법 |
|---|
| Claude Code | agentdescent install claude-code | claude --plugin-dir ~/.agentdescent/plugins/claude-code |
| ... | | |
체크아웃 후, bash scripts/setup-hosts.sh를 실행하면 AgentDescent가 설치되고 발견되는 모든 에이전트 CLI에 연결됩니다. 그런 다음 에이전트 내부에서 "이 프롬프트를 이 예제들에 맞춰 개선해 줘"라고 말하면: doctor를 실행하고, 스펙을 작성하며, 시작하기 전에 호출 횟수를 인용하고, 사용자의 승인을 기다린 후, 분리되어(detached) 실행되고, 무언가를 되돌려 쓰기 전에 다시 질문합니다. 아직 사례가 없는 것은 문제가 아닙니다. 대신 먼저 확인하도록 8~20개를 초안 작성해 줍니다. | | |
kind는 text, skill_dir, skill_library (다중 파일 */SKILL.md 트리), agent_dir, agent_code, policy_slot — 또는 plugin: 호스트 플러그인 자체가 진화 가능하며, 각 롤아웃은 후크(hooks)와 권한이 고정되고 재귀 방지 장치(recursion guard)가 있는 호스트의 격리된 복사본에서 이루어집니다. 플래그십 라이브러리 데모: python -m examples.skill_library_evolution --dry-run. The plugin, step by step → · set it up and test it →
작동 방식 (How it works)
AgentDescent architecture: N workers roll out against ledger snapshots and emit
diffs with evidence cards into a buffer; a single aggregator thread runs the
five-stage merge pipeline and commits to a git-backed ledger; four pluggable
seams sit under the components they select; the L0 governance layer gates the
audit step.
순차적 자가 개선(Serial self-improvement)은 반복당 하나의 승인된 변경으로 제한되지만, 동시 편집을 병합하는 것은 그 한계를 넘어서려는 시도입니다. 이 비유는 디자인이 존재하는 정확한 지점에서 깨지는데: 그래디언트(gradients)는 더하지만, 디프(diffs)는 그렇지 않기 때문에, 집계(aggregation)는 평균화가 아니라 충돌 해결, 융합(fusion), 통계적 수용 및 트랜잭션 커밋입니다. 거버넌스 레이어(빨간색)는 의도적으로 시음(seam)이 아닙니다. 자가 수정 시스템은 자체 평가자(evaluator)를 대체할 수 없어야 합니다.
이 그림은 [tools/gen_architecture_figure.py]에 의해 TikZ로부터 재생성됩니다.
대체할 수 있는 것. 알고리즘을 담고 있는 두 개의 typing.Protocol 시음(seam)이 있습니다:
- 전략(the strategy) — 무엇이 진화하는가.
AppendRules (교훈; 제안은 거의 항상 융합됨), KeyedRules (카테고리별 하나의 항목), FileTree (디렉토리, 경로당 하나의 키), SingleSlot (하나의 값; 제안은 항상 모순됨) 또는 자체 세 가지 메서드 클래스입니다. 이의 키 공간(key space)이 동시 편집이 아예 융합될 수 있는지 여부를 결정합니다.
- 여덟 가지 정책 슬롯(eight policy slots) — 진화의 규칙:
selection, task_sampler, proposal, staleness, conflict, fusion, acceptance, promotion. 각 항목은 기본 배포된 규칙을 따르며, 드라이버는 무시하는 대신 자신이 준수할 수 없는 필드는 거부합니다. 파이프라인이 유지하지 않는 상태(state)가 필요한 메커니즘은 aggregator_factory 출구를 사용합니다.
How to fill a slot →
측정 항목
모든 행은 해당 결과를 생성한 설정을 명시합니다. 결과 페이지에서는 학습할 것이 남아있지 않았던 실행(run)에 대한 내용도 보고합니다.
| 측정 항목 | 설정 |
|---|
| An artifact held in one key, where a keyed union can never fuse | keyed union fuses 0 of 48 merges · reflective merge 42 of 48 | BBH dyck_languages, GLM-5.2, N=4, 4 seeds |
| ... | | |
| 품질은 설계가 지원할 수 있는 경우에만 주장됩니다: 비교를 통해 유의미성에 도달할 수 없는 경우에는 p-값(p-values) 대신 구간(intervals)을 사용하며, 이를 명시합니다. | | |
문서화
전체 문서: thinkflowlab.github.io/agentdescent.
인용, 범위 및 기여
GitHub의 이 리포지토리 인용(Cite this repository) 버튼(CITATION.cff)을 사용하십시오. 결과별 원시 데이터는 bench/results/에 있습니다.
이것은 프로덕션 시스템이 아닌 **연구 참고 구현(research reference implementation)**입니다. 독창성은 Git 기반 버전 관리 원장(ledger) 위에서 이루어지는 동시적이고, 신선도 제한적이며(staleness-bounded), 충돌 해결된 diff 레벨 병합이라는 좁은 공학적 합성물에 있으며, 그 처리량 전제는 커뮤니티 합의라기보다는 검증 가능한 가설입니다.
기여를 환영합니다: CONTRIBUTING.md. 이 스위트(suite)는 오프라인이며 결정론적(deterministic)이므로, pytest -q 실행에 API 키가 필요하지 않습니다.