Skip to content

Commit a6b39d5

Browse files
committed
Rebrand AutoResearch to AutoLabOS
1 parent fae648f commit a6b39d5

35 files changed

Lines changed: 4036 additions & 260 deletions

README.ko.md

Lines changed: 115 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,9 @@ node dist/cli/main.js web
130130
- `api`: PDF를 Responses API로 직접 전달해 분석 (`OPENAI_API_KEY` 필요)
131131
6. provider 또는 PDF 분석 모드가 `api`이면 setup wizard와 `/settings`에서 모델을 고를 수 있습니다.
132132
- 현재 내장 카탈로그: `gpt-5.4`, `gpt-5`, `gpt-5-mini`, `gpt-4.1`, `gpt-4o`, `gpt-4o-mini`
133-
7. `/model`현재 기본 provider를 따릅니다.
134-
- Codex provider: Codex 모델 선택기
135-
- OpenAI API provider: OpenAI API 모델 선택기
133+
7. `/model`먼저 사용할 백엔드를 고른 뒤, 그 백엔드에 맞는 슬롯/모델을 선택합니다.
134+
- Codex CLI backend: Codex 모델 선택기
135+
- OpenAI API backend: OpenAI API 모델 선택기
136136
8. 실행 시 AutoResearch는 `process.env` 또는 `.env``SEMANTIC_SCHOLAR_API_KEY`, `OPENAI_API_KEY`를 읽습니다.
137137

138138
## Web Ops UI
@@ -154,48 +154,88 @@ node dist/cli/main.js web
154154
3. 아직 설정되지 않았다면 onboarding을 완료합니다.
155155
4. run을 만들거나 선택한 뒤 워크플로 카드나 컴포저로 실행을 제어합니다.
156156

157-
## 워크플로 한눈에 보기
157+
## 노드와 에이전트 구조
158158

159-
```mermaid
160-
flowchart LR
161-
Start["run 생성 또는 재개"] --> A
159+
AutoResearch에는 이름이 비슷해서 헷갈리기 쉬운 두 레이어가 있습니다.
162160

163-
subgraph Phase1["1. 수집 단계"]
164-
A["collect_papers<br/>query + 필터 + Semantic Scholar + PDF/BibTeX 보강"]
165-
end
161+
- 오케스트레이션 레이어: `/agent ...`가 대상으로 삼는 8개 그래프 노드입니다. 코드에서는 `AgentId`가 현재 `GraphNodeId`의 alias입니다.
162+
- 역할 레이어: 각 노드 내부 프롬프트, 이벤트, 세션 매니저에서 쓰는 `agentRole` 정체성입니다. 예를 들면 `implementer`, `runner`, `paper_writer`가 여기에 속합니다.
166163

167-
subgraph Phase2["2. 근거와 가설 단계"]
168-
B["analyze_papers<br/>요약 + 근거 추출 + 분석 매니페스트"]
169-
C["generate_hypotheses<br/>후보 아이디어 + 근거 + 중간 아티팩트"]
170-
end
164+
### 노드와 역할 매핑
171165

172-
subgraph Phase3["3. 설계와 실행 단계"]
173-
D["design_experiments<br/>계획 + 지표 + 제약 + 평가 메모"]
174-
E["implement_experiments<br/>로컬 ACI 기반 파일 + 명령 + 테스트"]
175-
F["run_experiments<br/>실행 로그 + 산출물 + 목표 지표"]
166+
```mermaid
167+
flowchart TB
168+
subgraph Orchestration["오케스트레이션 레이어 (`/agent` 대상)"]
169+
O["AgentOrchestrator"]
170+
N1["collect_papers"]
171+
N2["analyze_papers"]
172+
N3["generate_hypotheses"]
173+
N4["design_experiments"]
174+
N5["implement_experiments"]
175+
N6["run_experiments"]
176+
N7["analyze_results"]
177+
N8["write_paper"]
178+
179+
O --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> N8
176180
end
177181
178-
subgraph Phase4["4. 결과 종합 단계"]
179-
G["analyze_results<br/>비교 + 목표 평가 + 요약"]
180-
H["write_paper<br/>main.tex + references.bib + evidence_links.json"]
182+
subgraph Roles["역할 레이어 (`agentRole`)"]
183+
R1["collector_curator"]
184+
R2["reader_evidence_extractor"]
185+
R3["hypothesis_agent"]
186+
R4["experiment_designer"]
187+
R5["implementer"]
188+
R6["runner"]
189+
R7["analyst_statistician"]
190+
R8["paper_writer"]
191+
R9["reviewer"]
181192
end
182193
183-
A --> B --> C --> D --> E --> F --> G --> H
184-
185-
Control["런타임 제어<br/>승인 게이트 + 예산 + retry / jump + checkpoint 재개"]
186-
Memory["run 메모리<br/>컨텍스트 + 에피소드 + 노드 아티팩트"]
194+
N1 -. 주 역할 .-> R1
195+
N2 -. 주 역할 .-> R2
196+
N3 -. 주 역할 .-> R3
197+
N4 -. 주 역할 .-> R4
198+
N5 -. 주 역할 .-> R5
199+
N6 -. 주 역할 .-> R6
200+
N7 -. 주 역할 .-> R7
201+
N8 -. 초안 작성 .-> R8
202+
N8 -. 리뷰 .-> R9
203+
```
187204

188-
Control -. "모든 노드에 적용" .-> A
189-
Control -. "모든 노드에 적용" .-> D
190-
Control -. "모든 노드에 적용" .-> F
191-
Control -. "모든 노드에 적용" .-> H
205+
### 실행 그래프
192206

193-
Memory -. "각 노드 이후 갱신" .-> B
194-
Memory -. "각 노드 이후 갱신" .-> D
195-
Memory -. "각 노드 이후 갱신" .-> G
207+
```mermaid
208+
stateDiagram-v2
209+
[*] --> collect_papers
210+
collect_papers --> analyze_papers: approve
211+
analyze_papers --> generate_hypotheses: approve
212+
generate_hypotheses --> design_experiments: approve
213+
design_experiments --> implement_experiments: approve
214+
implement_experiments --> run_experiments: auto_handoff 또는 approve
215+
run_experiments --> analyze_results: approve
216+
analyze_results --> write_paper: advance 또는 approve
217+
analyze_results --> implement_experiments: backtrack_to_implement
218+
analyze_results --> design_experiments: backtrack_to_design
219+
analyze_results --> generate_hypotheses: backtrack_to_hypotheses
220+
analyze_results --> manual_review: pause_for_human
221+
manual_review --> analyze_results: retry 또는 jump
222+
write_paper --> [*]: approve
196223
```
197224

198-
기본 흐름은 여전히 선형 `1 -> 8`이지만, 이제 각 노드의 주요 역할과 아티팩트를 그래프에서 함께 보여 주고, 런타임 제어를 통해 재시도, 점프, 체크포인트 재개, 단계별 승인 흐름을 적용할 수 있습니다.
225+
기본 `agent_approval` 모드에서는 각 노드가 끝날 때마다 멈춥니다. 예외적으로 `implement_experiments``run_experiments`로 자동 handoff할 수 있고, `analyze_results`는 결과에 따라 그래프를 뒤로 되돌리는 추천을 낼 수 있습니다.
226+
227+
| 그래프 노드 | 주 역할 | 현재 구현 형태 |
228+
| --- | --- | --- |
229+
| `collect_papers` | `collector_curator` | Semantic Scholar 검색, 중복 제거, 보강, BibTeX 생성 |
230+
| `analyze_papers` | `reader_evidence_extractor` | 논문 선택 랭킹과 로컬/Responses API PDF 분석 |
231+
| `generate_hypotheses` | `hypothesis_agent` | evidence-axis -> draft -> review -> selection 단계형 파이프라인 |
232+
| `design_experiments` | `experiment_designer` | 실험 후보 설계 생성과 `experiment_plan.yaml` 선택 |
233+
| `implement_experiments` | `implementer` | `ImplementSessionManager`, localization, Codex 패치, 검증, optional handoff |
234+
| `run_experiments` | `runner` | ACI 기반 preflight/tests/command 실행, metrics 수집, verifier feedback |
235+
| `analyze_results` | `analyst_statistician` | objective 평가, 결과 합성, transition recommendation |
236+
| `write_paper` | `paper_writer`, `reviewer` | `PaperWriterSessionManager`, outline/draft/review/finalize, optional LaTeX repair |
237+
238+
역할 카탈로그와 실제 멀티턴 런타임은 완전히 같은 범위는 아닙니다. 현재 가장 깊게 세션 기반으로 묶여 있는 노드는 `implement_experiments``write_paper`이고, 앞단 노드들은 구조화된 node handler와 역할별 프롬프트/이벤트 중심으로 작동합니다.
199239

200240
### 아티팩트 흐름
201241

@@ -205,16 +245,16 @@ flowchart TB
205245
A1 --> B["analyze_papers"]
206246
B --> B1["analysis_manifest.json<br/>paper_summaries.jsonl<br/>evidence_store.jsonl"]
207247
B1 --> C["generate_hypotheses"]
208-
C --> C1["hypotheses.jsonl<br/>hypothesis_generation/selection.json<br/>hypothesis_generation/drafts.jsonl<br/>hypothesis_generation/reviews.jsonl"]
248+
C --> C1["hypotheses.jsonl<br/>hypothesis_generation/evidence_axes.json<br/>hypothesis_generation/selection.json<br/>hypothesis_generation/drafts.jsonl<br/>hypothesis_generation/reviews.jsonl"]
209249
C1 --> D["design_experiments"]
210250
D --> D1["experiment_plan.yaml"]
211251
D1 --> E["implement_experiments"]
212252
E --> F["run_experiments"]
213-
F --> F1["exec_logs/run_experiments.txt<br/>exec_logs/observations.jsonl<br/>metrics.json<br/>objective_evaluation.json"]
253+
F --> F1["exec_logs/run_experiments.txt<br/>exec_logs/observations.jsonl<br/>metrics.json<br/>objective_evaluation.json<br/>run_experiments_verify_report.json"]
214254
F1 --> G["analyze_results"]
215-
G --> G1["result_analysis.json<br/>figures/performance.png"]
255+
G --> G1["result_analysis.json<br/>result_analysis_synthesis.json<br/>transition_recommendation.json<br/>figures/performance.svg"]
216256
G1 --> H["write_paper"]
217-
H --> H1["paper/main.tex<br/>paper/references.bib<br/>paper/evidence_links.json"]
257+
H --> H1["paper/main.tex<br/>paper/references.bib<br/>paper/evidence_links.json<br/>paper/draft.json<br/>paper/validation.json<br/>paper/main.pdf (optional)"]
218258
```
219259

220260
모든 run 아티팩트는 `.autoresearch/runs/<run_id>/` 아래에 저장되므로, TUI와 로컬 웹 UI 양쪽에서 같은 실행 결과를 추적하고 점검할 수 있습니다.
@@ -236,24 +276,48 @@ flowchart TB
236276
State --> TUI
237277
```
238278

239-
### 아키텍처
279+
### 구체적인 에이전트 런타임
240280

241281
```mermaid
242282
flowchart LR
243-
UI["CLI / TUI / Web UI"] --> Session["InteractionSession"]
244-
Session --> Bootstrap["bootstrapAutoresearchRuntime"]
245-
Bootstrap --> Runtime["AutoresearchRuntime"]
246-
247-
Runtime --> Stores["RunStore + CheckpointStore"]
248-
Runtime --> Events["InMemoryEventStream"]
249-
Runtime --> Graph["StateGraphRuntime + AgentOrchestrator"]
283+
UI["CLI / TUI / Web UI"] --> Session["InteractionSession / web composer"]
284+
Session --> Orchestrator["AgentOrchestrator"]
285+
Orchestrator --> Runtime["StateGraphRuntime"]
250286
Runtime --> Registry["DefaultNodeRegistry"]
251-
252-
Registry --> Nodes["core/nodes/*"]
253-
Nodes --> Memory["RunContextMemory + EpisodeMemory + LongTermStore"]
254-
Nodes --> Providers["Codex / OpenAI / Responses API"]
255-
Nodes --> Tools["Semantic Scholar + Local ACI"]
256-
Nodes --> Artifacts[".autoresearch/runs/<run_id>"]
287+
Runtime --> Stores["RunStore + CheckpointStore + EventStream"]
288+
289+
Registry --> Collect["collect_papers"]
290+
Registry --> Analyze["analyze_papers"]
291+
Registry --> Hyp["generate_hypotheses"]
292+
Registry --> Design["design_experiments"]
293+
Registry --> Impl["implement_experiments"]
294+
Registry --> Run["run_experiments"]
295+
Registry --> Results["analyze_results"]
296+
Registry --> Paper["write_paper"]
297+
298+
Collect --> Scholar["Semantic Scholar + enrichment"]
299+
Analyze --> Pdf["Local text/image PDF analysis 또는 Responses API PDF"]
300+
Hyp --> ToT["ToT 스타일 branching + staged review"]
301+
Design --> ToT
302+
303+
Impl --> ImplMgr["ImplementSessionManager"]
304+
ImplMgr --> Localizer["ImplementationLocalizer"]
305+
ImplMgr --> Codex["Codex CLI session"]
306+
ImplMgr --> ACI["Local ACI"]
307+
ImplMgr --> Reflex["EpisodeMemory + LongTermStore"]
308+
309+
Run --> ACI
310+
Run --> Verify["Metrics + verifier report"]
311+
Verify -. feedback loop .-> ImplMgr
312+
313+
Results --> Synthesis["Objective evaluation + analysis synthesis + transition recommendation"]
314+
315+
Paper --> PaperMgr["PaperWriterSessionManager"]
316+
PaperMgr --> Writer["paper_writer"]
317+
PaperMgr --> Reviewer["reviewer"]
318+
PaperMgr --> Codex
319+
PaperMgr --> LLM["OpenAI / Codex LLM"]
320+
PaperMgr --> Latex["Optional LaTeX compile + repair"]
257321
```
258322

259323
핵심 소스 영역:

0 commit comments

Comments
 (0)