<p align="center">
<a href="https://joinstash.ai"><img src="https://raw.githubusercontent.com/Fergana-Labs/stash/HEAD/docs/assets/logo.svg" alt="Stash" width="320" /></a>
</p>
<h3 align="center">에이전트가 경험으로부터 학습하도록 돕습니다.</h3>
<p align="center">
에이전트는 작업할 때마다 성공적인 접근 방식, <br>
실패한 시도, 그리고 인간의 수정 등 가치 있는 경험을 생성합니다. Stash는 이러한 기록을 포착하여 그 교훈들을 미래 실행에 사용할 수 있도록 만듭니다.
</p>
<p align="center">
<a href="https://github.com/Fergana-Labs/stash/actions/workflows/test.yml"><img src="https://github.com/Fergana-Labs/stash/actions/workflows/test.yml/badge.svg?branch=main" alt="CI" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
<a href="https://joinstash.ai"><img src="https://img.shields.io/badge/Website-joinstash.ai-F97316" alt="Website" /></a>
<a href="https://discord.gg/PVFdcQx2u3"><img src="https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord&logoColor=white" alt="Discord" /></a>
</p>
이 저장소는 Python SDK, REST API, MCP, CLI를 통해 접근 가능한 오픈 소스 기반(trace collection, persistent knowledge, reusable skills)을 제공합니다. 이는 기존 에이전트 및 모델과 함께 작동합니다.
flowchart LR
A[Agent runs and human corrections] --> B[Capture sessions via hooks or API]
B --> C[Curate durable knowledge]
...
Stash의 더 광범위한 작업은 복잡한 프로덕션 트레이스에서 신뢰할 수 있는 피드백 신호를 추출하고, 이를 활용하여 프롬프트(prompts), 스킬(skills), 궁극적으로 모델 가중치(model weights)를 개선하는 데 중점을 둡니다. reward-model product docs에서는 트레이스 검토, reward-model 학습, GEPA를 사용한 스킬 최적화에 대해 다룹니다. 구현은 backend/services/rm/ 및 rm_worker/에 포함되어 있습니다. 우리의 연구는 프로덕션 트레이스로부터 추출된 피드백의 신뢰성을 개선하는 데 중점을 둡니다.
리워드 모델 실험 기능은 롤아웃 이후 생성된 계정에 대해 활성화됩니다. 기존 계정은 현재 경험을 유지합니다. 접근은 UI와 API 모두에서 강제되며, 롤아웃 가이드를 참조하세요.
작동하는 리워드 모델 (Reward models in action)
MCP를 통해 리워드 함수 생성. stash_reward_function_create에 이름, 지침(instructions), 루브릭(rubric)을 제공한 다음, stash_reward_function_score를 사용하여 작업을 즉시 평가할 수 있습니다. 이 함수는 Evals에 나타나며 MCP를 통해 읽거나 편집할 수 있습니다. MCP를 통한 리워드 함수를 참조하세요.
프롬프트 지속적 개선. Optimization 탭은 MCP를 통해 개인 리워드 모델을 향후 에이전트 실행에 연결합니다. 이는 지침을 제안하고, 실제 작업을 기반으로 현재 프롬프트와 후보 프롬프트를 비교하며, 선택된 비즈니스 메트릭과 함께 보상을 추적합니다. 설정, 승진 기준(promotion criteria), 일시 중지/롤백 및 프로토타입 제한에 대해서는 지속적인 프롬프트 최적화를 참조하세요.
트레이스 내 피드백으로 학습. Stash는 승인, 실망감, 수정 사항을 포함한 검토자 댓글과 사용자 반응으로부터 선호 쌍(preference pairs)을 도출합니다. 분류기(classifier)는 각 판단을 응답에 할당하고 원본 인용구(source quote)를 유지하며, 불분명한 반응은 학습에서 제외됩니다. 응답 하이라이팅을 통해 댓글을 추가할 수 있습니다. UI에는 별도의 자동 모드(Auto mode)나 평점 제어 기능이 없으며, 기존의 명시적 평점은 API를 통해 제공될 수 있습니다. 학습을 위해서는 최소 두 개의 근거 기반 비교(grounded comparisons)가 필요합니다. 사용자 반응은 사용 가능한 경우에 사용되며, AI 평가자(AI assessor)는 수동 주석이나 반응 없이도 응답 품질을 평가합니다.
아래의 제품 데모는 환불 지원 에이전트가 검토자 피드백을 거쳐 재사용 가능한 스킬로 발전하는 과정을 보여줍니다. 이 스크린샷들은 데모 데이터가 포함된 이전 인터페이스를 보여주며, 현재의 제어 기능은 아래에 설명되어 있습니다.
1. 트레이스 검토하기(Review a trace). 응답을 강조 표시하고 어떤 부분이 변경되어야 하는지 설명합니다.
대화에 이미 존재하는 피드백은 훈련 중에 자동으로 추출됩니다.
<!-- Frame from www/public/docs/demo/annotate.mp4 at 10 seconds. -->
<p align="center">
<img src="https://raw.githubusercontent.com/Fergana-Labs/stash/HEAD/docs/assets/reward-trace-feedback.png" alt="Refund-support trace with a highlighted refusal and reviewer feedback explaining how to handle a damaged order" width="900" />
</p>
2. 트레이스로부터 보상 모델(reward model) 훈련하기. 트레이스를 선택하고 **'새로운 보상 모델 생성(Create new reward model)'**을 선택합니다. 작업자(worker)가 지지되는 선호도(supported preferences)를 추출하고, 그 출처를 기록하며, 모델을 훈련시킵니다. AI가 생성한 비교는 근거(grounding) 및 선호도 품질에 대한 별도의 검토를 받습니다. '학습 보기(View learning)' 기능은 사용자 피드백과 AI 판단을 구별하고, 근거가 되는 응답이나 인용구를 보여주며, 각 발견 사항이 훈련에 포함되었는지 기록합니다. AI 판단은 측정된 고객 만족도가 아니라 모델의 선호도입니다.
<!-- Frame from www/public/docs/demo/train.mp4 at 3 seconds. -->
<p align="center">
<img src="https://raw.githubusercontent.com/Fergana-Labs/stash/HEAD/docs/assets/reward-model-training.png" alt="Six annotated traces selected for reward-model training, with three positive and three negative labels" width="900" />
</p>
3. 보상 신호를 스킬로 변환하기(Turn the reward signal into a skill). 훈련된 모델에서 **'스킬 보기(View skill)'**를 선택합니다. 이 기능은 기존 실행을 열거나, GEPA, 선택한 트레이스 및 해당 피드백을 사용하여 새로운 실행을 시작합니다. 에이전트를 위해 결과물인 SKILL.md를 다운로드하세요.
<!-- Frame from www/public/docs/demo/skill.mp4 at 20 seconds. -->
<p align="center">
<img src="https://raw.githubusercontent.com/Fergana-Labs/stash/HEAD/docs/assets/reward-generated-skill.png" alt="Generated refund-requests skill showing candidate scores, reusable instructions, and a Download SKILL.md button" width="900" />
</p>
Stash 사용해 보기 · 문서 읽기(Read the docs)
CLI 설정, 로컬 개발 및 자체 호스팅의 경우, 이 리포지토리 실행하기를 참조하세요.
작동 방식 (How it works)
- 경험 포착 (Capture experience). 코딩 에이전트용 후크(Hooks)는 세션 녹화가 활성화될 때 프롬프트, 도구 호출(tool calls), 응답을 기록합니다. SDK 또는 API를 사용하여 자체 에이전트에서 이벤트를 전송할 수 있습니다.
- 지속 가능한 교훈 추출 (Extract durable lessons). 예약된 큐레이터(curator)가 새로운 세션과 소스 자료를 읽고, 사용자의 Memory 위키에 연결된 페이지를 업데이트합니다. 이 지식은 원래 세션이 끝난 후에도 계속 사용할 수 있습니다.
- 교훈 재사용 가능하게 만들기 (Make lessons reusable). 에이전트는 CLI, MCP, API 또는 가상 파일 시스템을 통해 해당 지식을 검색하고 읽습니다. 사용자 및 에이전트는 관련 지침과 파일을 Skill이라는 폴더(내부에
SKILL.md가 포함됨)로 패키징할 수 있습니다.
- 미래 실행으로 가져가기 (Carry them into future runs).
stash skills install 명령어로 에이전트에 스킬을 설치합니다. 설치된 스킬은 세션 시작 시 자동으로 업데이트되므로, 공유 지침의 변경 사항이 기본 모델(underlying model)의 가중치(weights)를 변경하지 않고도 다음 실행에 반영될 수 있습니다.
예시: 수정사항이 재사용 가능한 지침으로 변환되는 경우
예시 워크플로우:
| 단계 (Stage) | 발생하는 일 (What happens) |
|---|
| 추적 (Trace) | 에이전트가 데이터베이스 마이그레이션(database migration)을 제안합니다. 검토자는 이 작업이 기존 고객 데이터를 폐기할 것이라고 지적합니다. |
| ... | |
출력물은 다른 에이전트가 읽고, 사용하고, 수정할 수 있는 검사 가능한 지식 및 지침입니다. 이것들이 결과를 개선하는지는 후속 작업에서 확인해야 합니다.
내부 실험에서 우리는 Stash를 사용하여 장시간 실행되는 Claude Code 인스턴스의 **49% 속도 향상(speedup)**을 측정했습니다. 설정 및 결과는 해당 실험을 참조하세요.