Skip to content

Commit 32f0984

Browse files
authored
Merge pull request #8 from teddylee777/feat/repository-lucky-sundae
feat(docs): add Korean (ko) locale with full translation
2 parents aace33e + 509412b commit 32f0984

105 files changed

Lines changed: 4799 additions & 4 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README-CN.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[English](https://walkinglabs.github.io/learn-harness-engineering/en/) · [中文](https://walkinglabs.github.io/learn-harness-engineering/zh/) · [Русский](https://walkinglabs.github.io/learn-harness-engineering/ru/) · [Tiếng Việt](https://walkinglabs.github.io/learn-harness-engineering/vi/) · [한국어](https://walkinglabs.github.io/learn-harness-engineering/ko/)
2+
13
# Learn Harness Engineering
24

35
> **这是一门项目制课程:系统学习如何通过环境、状态、验证与控制机制,让 AI 编程智能体(Coding Agents)更可靠地工作。**

README-KO.md

Lines changed: 522 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[English](https://walkinglabs.github.io/learn-harness-engineering/en/) · [中文](https://walkinglabs.github.io/learn-harness-engineering/zh/) · [Русский](https://walkinglabs.github.io/learn-harness-engineering/ru/) · [Tiếng Việt](https://walkinglabs.github.io/learn-harness-engineering/vi/)
1+
[English](https://walkinglabs.github.io/learn-harness-engineering/en/) · [中文](https://walkinglabs.github.io/learn-harness-engineering/zh/) · [Русский](https://walkinglabs.github.io/learn-harness-engineering/ru/) · [Tiếng Việt](https://walkinglabs.github.io/learn-harness-engineering/vi/) · [한국어](https://walkinglabs.github.io/learn-harness-engineering/ko/)
22

33
# Learn Harness Engineering
44

docs/.vitepress/config.mts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,43 @@ const ruSkillItems = [
154154
{ text: "Обзор скиллов", link: "/ru/skills/" }
155155
];
156156

157+
const koLectureItems = [
158+
{ text: "환영합니다", link: "/ko/" },
159+
{ text: "유능한 에이전트가 여전히 실패하는 이유", link: "/ko/lectures/lecture-01-why-capable-agents-still-fail/" },
160+
{ text: "하네스란 무엇인가", link: "/ko/lectures/lecture-02-what-a-harness-actually-is/" },
161+
{ text: "저장소가 시스템 오브 레코드(SoR)가 되어야 하는 이유", link: "/ko/lectures/lecture-03-why-the-repository-must-become-the-system-of-record/" },
162+
{ text: "거대한 단일 지시 파일이 실패하는 이유", link: "/ko/lectures/lecture-04-why-one-giant-instruction-file-fails/" },
163+
{ text: "장기 작업이 연속성을 잃는 이유", link: "/ko/lectures/lecture-05-why-long-running-tasks-lose-continuity/" },
164+
{ text: "초기화가 별도 단계여야 하는 이유", link: "/ko/lectures/lecture-06-why-initialization-needs-its-own-phase/" },
165+
{ text: "에이전트가 과도하게 손대고 끝맺지 못하는 이유", link: "/ko/lectures/lecture-07-why-agents-overreach-and-under-finish/" },
166+
{ text: "기능 목록이 하네스의 기본 단위인 이유", link: "/ko/lectures/lecture-08-why-feature-lists-are-harness-primitives/" },
167+
{ text: "에이전트가 너무 일찍 완료를 선언하는 이유", link: "/ko/lectures/lecture-09-why-agents-declare-victory-too-early/" },
168+
{ text: "엔드투엔드 테스트가 결과를 바꾸는 이유", link: "/ko/lectures/lecture-10-why-end-to-end-testing-changes-results/" },
169+
{ text: "관측 가능성이 하네스 안에 있어야 하는 이유", link: "/ko/lectures/lecture-11-why-observability-belongs-inside-the-harness/" },
170+
{ text: "모든 세션이 클린 상태로 끝나야 하는 이유", link: "/ko/lectures/lecture-12-why-every-session-must-leave-a-clean-state/" }
171+
];
172+
173+
const koProjectItems = [
174+
{ text: "환영합니다", link: "/ko/projects/" },
175+
{ text: "프롬프트 단독 vs 규칙 우선", link: "/ko/projects/project-01-baseline-vs-minimal-harness/" },
176+
{ text: "에이전트가 읽을 수 있는 작업 공간", link: "/ko/projects/project-02-agent-readable-workspace/" },
177+
{ text: "다중 세션 연속성", link: "/ko/projects/project-03-multi-session-continuity/" },
178+
{ text: "런타임 피드백과 범위 제어", link: "/ko/projects/project-04-incremental-indexing/" },
179+
{ text: "자기 검증과 역할 분리", link: "/ko/projects/project-05-grounded-qa-verification/" },
180+
{ text: "완성형 하네스(캡스톤)", link: "/ko/projects/project-06-runtime-observability-and-debugging/" }
181+
];
182+
183+
const koResourceItems = [
184+
{ text: "리소스 모음 개요", link: "/ko/resources/" },
185+
{ text: "한국어 템플릿", link: "/ko/resources/templates/" },
186+
{ text: "한국어 레퍼런스", link: "/ko/resources/reference/" },
187+
{ text: "고급 리소스 팩", link: "/ko/resources/openai-advanced/" }
188+
];
189+
190+
const koSkillItems = [
191+
{ text: "스킬 개요", link: "/ko/skills/" }
192+
];
193+
157194
export default withMermaid(
158195
defineConfig({
159196
base: docsBase,
@@ -294,6 +331,43 @@ export default withMermaid(
294331
socialLinks: [{ icon: "github", link: githubRepoTreeLink }]
295332
}
296333
},
334+
ko: {
335+
label: "한국어",
336+
lang: "ko",
337+
link: "/ko/",
338+
themeConfig: {
339+
nav: [
340+
{ text: "강의", link: koLectureItems[1].link, activeMatch: '^/ko/(lectures/.*)?$' },
341+
{ text: "프로젝트", link: koProjectItems[0].link, activeMatch: '^/ko/projects/' },
342+
{ text: "리소스 모음", link: "/ko/resources/", activeMatch: '^/ko/resources/' },
343+
{ text: "스킬", link: "/ko/skills/", activeMatch: '^/ko/skills/' },
344+
{ text: "Try Harness ↗", link: "https://github.com/walkinglabs/learn-harness-engineering/blob/main/docs/ko/resources/templates/index.md", target: "_blank", rel: "noopener noreferrer" }
345+
],
346+
sidebar: {
347+
'/ko/projects/': [{ text: "프로젝트", items: koProjectItems }],
348+
'/ko/resources/': [{ text: "리소스 모음", items: koResourceItems }],
349+
'/ko/skills/': [{ text: "스킬", items: koSkillItems }],
350+
'/ko/': [{ text: "강의", items: koLectureItems }]
351+
},
352+
outline: {
353+
level: [2, 3],
354+
label: "이 페이지에서"
355+
},
356+
docFooter: {
357+
prev: "이전",
358+
next: "다음"
359+
},
360+
lastUpdated: {
361+
text: "마지막 업데이트"
362+
},
363+
returnToTopLabel: "맨 위로",
364+
sidebarMenuLabel: "메뉴",
365+
darkModeSwitchLabel: "테마",
366+
lightModeSwitchTitle: "라이트 모드로 전환",
367+
darkModeSwitchTitle: "다크 모드로 전환",
368+
socialLinks: [{ icon: "github", link: githubRepoTreeLink }]
369+
}
370+
},
297371
ru: {
298372
label: "Русский",
299373
lang: "ru",

docs/index.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ layout: page
66
if (typeof window !== 'undefined') {
77
const base = import.meta.env.BASE_URL || '/'
88
const lang = navigator.language || navigator.languages?.[0] || ''
9-
const target = `${base}${lang.startsWith('zh') ? 'zh/' : 'en/'}`
9+
let locale = 'en/'
10+
if (lang.startsWith('ko')) locale = 'ko/'
11+
else if (lang.startsWith('zh')) locale = 'zh/'
12+
else if (lang.startsWith('ru')) locale = 'ru/'
13+
else if (lang.startsWith('vi')) locale = 'vi/'
14+
const target = `${base}${locale}`
1015
if (!window.location.pathname.replace(/\/$/, '').endsWith(target.replace(/\/$/, ''))) {
1116
window.location.replace(target)
1217
}

docs/ko/index.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Learn Harness Engineering에 오신 것을 환영합니다
2+
3+
Learn Harness Engineering은 AI 코딩 에이전트(coding agent)의 엔지니어링에 집중하는 강의입니다. 우리는 업계에서 가장 앞선 하네스 엔지니어링(Harness Engineering) 이론과 실천을 깊이 학습하고 정리했습니다. 핵심 참고 자료는 다음과 같습니다.
4+
5+
- [OpenAI: Harness engineering: leveraging Codex in an agent-first world](https://openai.com/index/harness-engineering/)
6+
- [Anthropic: Effective harnesses for long-running agents](https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents)
7+
- [Anthropic: Harness design for long-running application development](https://www.anthropic.com/engineering/harness-design-long-running-apps)
8+
- [Awesome Harness Engineering](https://github.com/walkinglabs/awesome-harness-engineering)
9+
10+
이 강의는 체계적인 환경 설계, 상태(state) 관리, 검증(verification), 제어(control) 시스템을 통해 Codex와 Claude Code 같은 에이전트형 코딩 도구를 실제로 신뢰할 수 있게 만드는 방법을 가르칩니다. 명시적인 규칙과 경계로 AI 코딩 보조 도구를 제약하여, 기능을 구현하고 버그를 수정하며 개발 작업을 자동화하도록 돕습니다.
11+
12+
> 처음 보시는 용어가 많아도 괜찮습니다. 핵심 개념의 한국어·영어 대응표는 [용어집](./resources/reference/glossary.md)에 정리되어 있습니다.
13+
14+
## 시작하기
15+
16+
학습 경로를 선택해 시작하세요. 강의는 이론 강의, 실습 프로젝트, 즉시 사용 가능한 리소스 모음으로 구성됩니다.
17+
18+
<div class="card-grid">
19+
<a href="./lectures/lecture-01-why-capable-agents-still-fail/" class="card">
20+
<h3>강의(Lectures)</h3>
21+
<p>강력한 모델이 왜 여전히 실패하는지 이해하고, 효과적인 하네스의 이론을 배웁니다.</p>
22+
</a>
23+
<a href="./projects/" class="card">
24+
<h3>프로젝트(Projects)</h3>
25+
<p>믿을 수 있는 에이전트 환경을 처음부터 직접 만들어 보는 실습입니다.</p>
26+
</a>
27+
<a href="./resources/" class="card">
28+
<h3>리소스 모음(Resource Library)</h3>
29+
<p>여러분의 저장소에서 바로 쓸 수 있는 복사용 템플릿(AGENTS.md, feature_list.json 등)입니다.</p>
30+
</a>
31+
</div>
32+
33+
## 하네스의 핵심 메커니즘
34+
35+
하네스(harness)는 모델을 "더 똑똑하게" 만드는 도구가 아닙니다. 대신, 모델을 위한 닫힌 루프(closed loop) **작업 시스템**을 만들어 줍니다. 핵심 흐름은 다음 다이어그램으로 이해할 수 있습니다.
36+
37+
```mermaid
38+
graph TD
39+
A["명확한 목표<br/>AGENTS.md"] --> B("초기화<br/>init.sh")
40+
B --> C{"작업 실행<br/>AI Agent"}
41+
C -->|문제 발생| D["런타임 피드백<br/>CLI / Logs"]
42+
D -->|자동 수정| C
43+
C -->|코드 완성| E{"검증과 QA<br/>Test suite"}
44+
E -->|실패| D
45+
E -->|통과| F["정리와 인계<br/>claude-progress.md"]
46+
47+
classDef primary fill:#D95C41,stroke:#C14E36,color:#fff,font-weight:bold;
48+
classDef process fill:#F4F3EE,stroke:#D1D1D1,color:#1A1A1A;
49+
classDef check fill:#EAE8E1,stroke:#B3B3B3,color:#1A1A1A;
50+
51+
class A,F primary;
52+
class B,D process;
53+
class C,E check;
54+
```
55+
56+
## 이 강의에서 배우는 것
57+
58+
본 강의를 완주하면 다음과 같은 핵심 개념을 다룰 수 있게 됩니다.
59+
60+
<ul class="index-list">
61+
<li><strong>에이전트 동작 제약</strong>: 명시적인 규칙과 경계로 에이전트의 행동 범위를 한정합니다.</li>
62+
<li><strong>컨텍스트(context) 유지</strong>: 장시간·다중 세션 작업에서도 컨텍스트를 잃지 않도록 합니다.</li>
63+
<li><strong>섣부른 완료 선언 방지</strong>: 에이전트가 너무 빨리 "끝났다"고 선언하지 못하게 합니다.</li>
64+
<li><strong>작업 검증</strong>: 전체 파이프라인 테스트와 자기 점검(self-reflection)으로 결과물을 검증합니다.</li>
65+
<li><strong>관측 가능성 확보</strong>: 런타임을 관측·디버깅 가능하게 만듭니다.</li>
66+
</ul>
67+
68+
## 다음 단계
69+
70+
핵심 개념이 익숙해졌다면, 다음 자료로 한 걸음 더 들어가 보세요.
71+
72+
<ul class="index-list">
73+
<li><a href="./lectures/lecture-01-why-capable-agents-still-fail/">강의 01: 유능한 에이전트가 여전히 실패하는 이유</a> — 하네스 엔지니어링의 이론적 출발점입니다.</li>
74+
<li><a href="./projects/project-01-baseline-vs-minimal-harness/">프로젝트 01: 베이스라인(Baseline) vs 미니멀 하네스(Minimal Harness)</a> — 첫 실제 과제를 처음부터 진행해 봅니다.</li>
75+
<li><a href="./resources/templates/">템플릿(Templates)</a> — 미니멀 하네스 팩(AGENTS.md, feature_list.json, claude-progress.md)을 자신의 프로젝트에 바로 적용해 보세요.</li>
76+
</ul>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# 실패 신호 체크리스트
2+
3+
취약한 하네스(harness) 실행을 검토할 때 이 체크리스트를 활용하십시오.
4+
5+
- 에이전트(agent)가 앱 시작 방법을 직접 물어보았는가, 아니면 잘못 추론했는가?
6+
- 의도한 제품과 일치하지 않는 디렉터리 또는 추상화를 만들었는가?
7+
- 완전한 워크플로 없이 눈에 보이는 UI 껍데기만 만든 뒤 멈췄는가?
8+
- 이후 실행이 이어 진행할 수 있도록 메모나 산출물(deliverable)을 남겼는가?
9+
- 새 세션이 5분 이내에 이전에 무슨 일이 있었는지 파악할 수 있는가?
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# 강의 01 코드 예제
2+
3+
이 폴더는 다음을 보여주는 소규모 예제에 사용됩니다.
4+
5+
- 강력한 모델이 취약한 환경에서 실패하는 사례
6+
- 명세가 부족한 저장소(repository) 설정
7+
- 피드백 루프가 없는 상황
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# 명세가 부족한 작업 예시
2+
3+
AI 질의응답 기능이 있는 데스크톱 지식 베이스 앱을 만드십시오.
4+
5+
제약 조건:
6+
7+
- 명시된 것 없음
8+
- 시작 명령어 없음
9+
- 폴더 구조 안내 없음
10+
- 데이터 모델 정의 없음
11+
- 명시적 완료 기준(Definition of Done) 없음
12+
13+
이런 종류의 프롬프트에서 발생하는 전형적인 결과:
14+
15+
- 에이전트(agent)가 구조를 임시방편으로 만들어냄
16+
- 앱이 컴파일되더라도 일관되게 시작되지 않을 수 있음
17+
- 사용 가능한 수집/조회 경로가 없는 상태에서 UI가 먼저 나타날 수 있음
18+
- 에이전트가 겉으로만 보이는 성공 후에 멈추는 경우가 많음

0 commit comments

Comments
 (0)