From 0e8e3076bfc2c9b23f94380dc5b22365999d3397 Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Sat, 14 Mar 2026 13:29:36 +0900 Subject: [PATCH] docs: document skill contract orchestration research --- book/300_architecture/300_README.md | 67 +++---- ...skill-contract-and-execution-principles.md | 113 ++++++++++++ book/300_architecture/README.md | 93 +++------- ...คํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_์•„์ด๋””์–ด.md | 96 +++++++++++ ...์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_๋ฆฌ์„œ์น˜.md | 163 ++++++++++++++++++ journey/research/README.md | 1 + 6 files changed, 422 insertions(+), 111 deletions(-) create mode 100644 book/300_architecture/316_skill-contract-and-execution-principles.md create mode 100644 journey/ideas/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_์•„์ด๋””์–ด.md create mode 100644 journey/research/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_๋ฆฌ์„œ์น˜.md diff --git a/book/300_architecture/300_README.md b/book/300_architecture/300_README.md index 3eacac6..67d90a2 100644 --- a/book/300_architecture/300_README.md +++ b/book/300_architecture/300_README.md @@ -1,45 +1,34 @@ # Part 3: ๊ธฐ์ˆ  ์•„ํ‚คํ…์ฒ˜์™€ ๊ตฌํ˜„ -## ์•ž์—์„œ ๋‹ค๋ฃฌ ๊ฒƒ +Part 3 ๋ฌธ์„œ ๋งต์ž…๋‹ˆ๋‹ค. ์›์น™ ๋ณธ๋ฌธ์€ ๊ฐœ๋ณ„ ์›์น™ ๋ฌธ์„œ์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. -Part 2์—์„œ ์šฐ๋ฆฌ๋Š” ๊ฒŒ์ž„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™œ์šฉํ•œ ์„ค๊ณ„๋ฅผ ์†Œ๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒฏ์œผ๋กœ ๋Šฅ๋ ฅ์„ ์ˆ˜์น˜ํ™”ํ•˜๊ณ , ์Šคํ‚ฌ๋กœ ๊ธฐ๋Šฅ์„ ๋ชจ๋“ˆํ™”ํ•˜๋ฉฐ, ๋ ˆ๋ฒจ๋กœ ์„ฑ์žฅ์„ ๊ฐ€์‹œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. +## ์›์น™ ๋ฌธ์„œ +- [310_์ „์ฒด_์‹œ์Šคํ…œ_๊ตฌ์กฐ_์ปจํ…Œ์ด๋„ˆ์™€_๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค.md](./310_%EC%A0%84%EC%B2%B4_%EC%8B%9C%EC%8A%A4%ED%85%9C_%EA%B5%AC%EC%A1%B0_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%99%80_%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4.md) +- [311_backend_coding_principles.md](./311_backend_coding_principles.md) +- [312_writing-principles.md](./312_writing-principles.md) +- [313_Gemini_ํ”„๋กฌํ”„ํŠธ_์„ค๊ณ„_์›์น™.md](./313_Gemini_%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8_%EC%84%A4%EA%B3%84_%EC%9B%90%EC%B9%99.md) +- [313_ํ”„๋ก ํŠธ_๊ตฌ์กฐ_์›์น™.md](./313_%ED%94%84%EB%A1%A0%ED%8A%B8_%EA%B5%AC%EC%A1%B0_%EC%9B%90%EC%B9%99.md) +- [314_infrastructure-ssot-principle.md](./314_infrastructure-ssot-principle.md) +- [315_ํ…Œ์ŠคํŠธ_์›์น™.md](./315_%ED%85%8C%EC%8A%A4%ED%8A%B8_%EC%9B%90%EC%B9%99.md) +- [316_skill-contract-and-execution-principles.md](./316_skill-contract-and-execution-principles.md) -## ์ด๋ฒˆ Part์—์„œ ๋‹ค๋ฃฐ ๊ฒƒ +## ๊ตฌ์กฐ ๋ฌธ์„œ +- [320_Slack_๊ธฐ๋ฐ˜_์ธํ„ฐํŽ˜์ด์Šค_์„ค๊ณ„.md](./320_Slack_%EA%B8%B0%EB%B0%98_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_%EC%84%A4%EA%B3%84.md) +- [325_robeing_monitor_๋ชจ๋‹ˆํ„ฐ๋ง_์•„ํ‚คํ…์ฒ˜.md](./325_robeing_monitor_%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98.md) +- [330_๋ฐฑ์—”๋“œ_PostgreSQL_ChromaDB_Vector_Memory.md](./330_%EB%B0%B1%EC%97%94%EB%93%9C_PostgreSQL_ChromaDB_Vector_Memory.md) +- [340_GUI_๊ณต์œ _์•„ํ‚คํ…์ฒ˜_๋ ˆ๋ฒจ๊ธฐ๋ฐ˜_๊ถŒํ•œ.md](./340_GUI_%EA%B3%B5%EC%9C%A0_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98_%EB%A0%88%EB%B2%A8%EA%B8%B0%EB%B0%98_%EA%B6%8C%ED%95%9C.md) +- [350_DID_๊ธฐ๋ฐ˜_์ •์ฒด์„ฑ๊ณผ_๋‹ค์ค‘์—์ด์ „ํŠธ.md](./350_DID_%EA%B8%B0%EB%B0%98_%EC%A0%95%EC%B2%B4%EC%84%B1%EA%B3%BC_%EB%8B%A4%EC%A4%91%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8.md) +- [360_๋กœ๋น™_์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋Ÿ‰ํ™”_์ „๋žต.md](./360_%EB%A1%9C%EB%B9%99_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88_%EA%B2%BD%EB%9F%89%ED%99%94_%EC%A0%84%EB%9E%B5.md) +- [370_์ž„๋ฒ ๋”ฉ_์„œ๋น„์Šค_๋ถ„๋ฆฌ_์•„ํ‚คํ…์ฒ˜.md](./370_%EC%9E%84%EB%B2%A0%EB%94%A9_%EC%84%9C%EB%B9%84%EC%8A%A4_%EB%B6%84%EB%A6%AC_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98.md) +- [380_authentication_system.md](./380_authentication_system.md) -์ด์ œ ๊ทธ ์„ค๊ณ„๋ฅผ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์™œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€, ์™œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ–ˆ๋Š”์ง€, ์™œ PostgreSQL๊ณผ ChromaDB๋ฅผ ํ•จ๊ป˜ ์“ฐ๋Š”์ง€ - ๋ชจ๋“  ๊ธฐ์ˆ ์  ์„ ํƒ์˜ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. +## ๊ฐ€์ด๋“œ๋ผ์ธ +- [guidelines/naming_conventions.md](./guidelines/naming_conventions.md) +- [guidelines/logging_rules.md](./guidelines/logging_rules.md) +- [guidelines/constants.md](./guidelines/constants.md) +- [guidelines/utility_functions.md](./guidelines/utility_functions.md) +- [guidelines/deployment_patterns.md](./guidelines/deployment_patterns.md) -## ๋ชฉ์ฐจ -- 310_์ „์ฒด_์‹œ์Šคํ…œ_๊ตฌ์กฐ_์ปจํ…Œ์ด๋„ˆ์™€_๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค.md -- 311_FastAPI_๊ตฌ์กฐ_์›์น™.md -- 312_writing-principles.md -- 313_React_๊ตฌ์กฐ_์›์น™.md -- 315_ํ…Œ์ŠคํŠธ_์›์น™.md -- 320_Slack_๊ธฐ๋ฐ˜_์ธํ„ฐํŽ˜์ด์Šค_์„ค๊ณ„.md -- 330_๋ฐฑ์—”๋“œ_PostgreSQL_ChromaDB_Vector_Memory.md -- 340_GUI_๊ณต์œ _์•„ํ‚คํ…์ฒ˜_๋ ˆ๋ฒจ๊ธฐ๋ฐ˜_๊ถŒํ•œ.md -- 350_DID_๊ธฐ๋ฐ˜_์ •์ฒด์„ฑ๊ณผ_๋‹ค์ค‘์—์ด์ „ํŠธ.md -- 360_๋กœ๋น™_์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋Ÿ‰ํ™”_์ „๋žต.md -- 370_์ž„๋ฒ ๋”ฉ_์„œ๋น„์Šค_๋ถ„๋ฆฌ_์•„ํ‚คํ…์ฒ˜.md - -## ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ (guidelines/) -๋กœ๋น™์„ ๋งŒ๋“œ๋Š” ๋ฐ ์ง€ํ‚ค๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ (๋ณ€ํ•˜์ง€ ์•Š๋Š” ํŒจํ„ด/๊ทœ์น™): -- [๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜](./guidelines/naming_conventions.md) - ํŒŒ์ผ๋ช…, ๋ณ€์ˆ˜๋ช…, API ๊ฒฝ๋กœ ๊ทœ์น™ -- [๋กœ๊น… ๊ทœ์น™](./guidelines/logging_rules.md) - ๋กœ๊ทธ ๋ ˆ๋ฒจ, ํฌ๋งท, ๋ณด๊ด€ ์›์น™ -- [์ƒ์ˆ˜/์„ค์ •๊ฐ’ ๊ตฌ์กฐ](./guidelines/constants.md) - ์Šคํ‚ฌ ๋ ˆ๋ฒจ, ํƒ€์ž…, ๊ฐ์ • ๋ถ„๋ฅ˜ ๊ตฌ์กฐ -- [์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜ ์„ค๊ณ„ ์›์น™](./guidelines/utility_functions.md) - ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ, ์ค‘๋ณต ์ œ๊ฑฐ ์›์น™ -- [๋ฐฐํฌ ํŒจํ„ด](./guidelines/deployment_patterns.md) - ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ํŒจํ„ด - -**์ฐธ๊ณ **: ์ž์ฃผ ๋ณ€ํ•˜๋Š” ์ •๋ณด(ํฌํŠธ, ์—”๋“œํฌ์ธํŠธ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฐ’)๋Š” ๊ฐ ์„œ๋น„์Šค README.md ์ฐธ์กฐ - -## ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ -์ปจํ…Œ์ด๋„ˆ๋Š” ๋ชธ, ๊ธฐ์–ต์€ ์˜ํ˜ผ. 100๊ฐœ์˜ ๋กœ๋น™์ด 1๊ฐœ์˜ ์Šคํ‚ฌ ์„œ๋น„์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ํšจ์œจ์  ์•„ํ‚คํ…์ฒ˜. - -## ๋Œ€์ƒ ๋…์ž -- ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž -- ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž -- DevOps ์—”์ง€๋‹ˆ์–ด -- ์‹œ์Šคํ…œ ์•„ํ‚คํ…ํŠธ - -## ๋‹ค์Œ Part๋กœ - -Part 3์—์„œ ๊ตฌํ˜„ํ•œ ๋กœ๋น™์ด Part 4์—์„œ๋Š” ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์„ฑ์žฅํ•˜๋Š”์ง€ ๋ณด์—ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฒฝํ—˜์น˜๋Š” ์–ด๋–ป๊ฒŒ ์Œ“์ด๊ณ , ๋ ˆ๋ฒจ์—…์€ ์–ธ์ œ ์ผ์–ด๋‚˜๋ฉฐ, ๊ธฐ์–ต์€ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌ๋˜๋Š”์ง€ - ์„ฑ์žฅ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ƒ์„ธํžˆ ๋‹ค๋ฃน๋‹ˆ๋‹ค. \ No newline at end of file +## ๊ด€๋ จ ํŒŒํŠธ +- [Part 2 ํ•ต์‹ฌ ์„ค๊ณ„](../200_core_design/README.md) +- [Part 4 ์„ฑ์žฅ๊ณผ ์ง„ํ™”](../400_growth/README.md) diff --git a/book/300_architecture/316_skill-contract-and-execution-principles.md b/book/300_architecture/316_skill-contract-and-execution-principles.md new file mode 100644 index 0000000..1fab0d1 --- /dev/null +++ b/book/300_architecture/316_skill-contract-and-execution-principles.md @@ -0,0 +1,113 @@ +# ์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฐ ์‹คํ–‰ ์›์น™ + +**์ƒ์œ„ ์›์น™**: +- [0_VALUE Coding Principles](../../../../0_VALUE/02_Governance/coding-principles.md) +- [0_VALUE Writing Principles](../../../../0_VALUE/02_Governance/writing-principles.md) +- [0_VALUE Agents Guide](../../../../0_VALUE/02_Governance/agents-rules.md) +- [AI ์—์ด์ „ํŠธ ์‹œ๋Œ€์˜ CLIยท์Šคํ‚ฌยท์ธํ„ฐํŽ˜์ด์Šค ์ง„ํ™”](../../../../0_VALUE/02_Governance/ai-agent-cli-skill-interface-evolution.md) + +## 1. ๋ชฉ์  +- ๋กœ๋น™์—์„œ `rb8001`๊ณผ `skill-*` ์„œ๋น„์Šค์˜ ์ฑ…์ž„ ๊ฒฝ๊ณ„๋ฅผ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ์„ "ํ”„๋กฌํ”„ํŠธ ์กฐ๊ฐ"์ด ์•„๋‹ˆ๋ผ ๊ณ„์•ฝ ์žˆ๋Š” ์‹คํ–‰ ๋‹จ์œ„๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ์„ค๋ช…์„œ๊ฐ€ ์–ด๋–ค ์ •๋ณด๋กœ ๊ตฌ์„ฑ๋˜๊ณ , ๋Ÿฐํƒ€์ž„์ด ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ธฐ์ค€์„ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. + +## 2. ํ•ต์‹ฌ ์ •์˜ + +### 2.1 ๋กœ๋น™ ๋ณธ์ฒด +- `rb8001`์€ ๋กœ๋น™์˜ ๋‘๋‡Œ์ž…๋‹ˆ๋‹ค. +- ๋ณธ์ฒด์˜ ์ฑ…์ž„์€ ๋ชฉํ‘œ ํ•ด์„, ์Šคํ‚ฌ ์„ ํƒ, ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ด€์ฐฐ, ์ข…๋ฃŒ ํŒ๋‹จ, ๊ธฐ๋ก ๊ฐฑ์‹ ์ž…๋‹ˆ๋‹ค. +- ๋ณธ์ฒด๋Š” ์Šคํ‚ฌ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์ง์ ‘ importํ•˜๊ฑฐ๋‚˜ ๋ณต์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +### 2.2 ์Šคํ‚ฌ +- ์Šคํ‚ฌ์€ ๋กœ๋น™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ์€ ๋…๋ฆฝ ์„œ๋น„์Šค ๋˜๋Š” ๋…๋ฆฝ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ์€ "๋ฌด์Šจ ๋ง์„ ๋ชจ๋ธ์—๊ฒŒ ๋„ฃ์„๊นŒ"๋ณด๋‹ค "์–ด๋–ค ๊ณ„์•ฝ์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ• ๊นŒ"์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. +- ๋กœ๋น™ ๊ด€์ ์—์„œ ์Šคํ‚ฌ์€ ๋‘๋‡Œ์˜ ๋ถ€์† ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ์„ธ๊ณ„์™€ ๋งž๋‹ฟ๋Š” ์†๊ณผ ๋ฐœ์ž…๋‹ˆ๋‹ค. + +### 2.3 ์Šคํ‚ฌ ์„ค๋ช…์„œ +- ์Šคํ‚ฌ ์„ค๋ช…์„œ๋Š” `SKILL.md` ๋˜๋Š” ๋™๋“ฑํ•œ ๊ณ„์•ฝ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. +- ์„ค๋ช…์„œ๋Š” ์‚ฌ๋žŒ์ด ์ฝ๋Š” ์•ˆ๋‚ด๋ฌธ์ด๋ฉด์„œ, ๋กœ๋น™ ๋Ÿฐํƒ€์ž„์ด ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ๊ธฐ์ค€์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +## 3. ์ฑ…์ž„ ๋ถ„๋ฆฌ ์›์น™ + +### 3.1 ๋ณธ์ฒด์™€ ์Šคํ‚ฌ์˜ ๊ฒฝ๊ณ„ +- `rb8001`์€ ํŒ๋‹จ๊ณผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜๋งŒ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. +- ์‹ค์ œ ์™ธ๋ถ€ API ํ˜ธ์ถœ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ํŒŒ์ผ ์ฒ˜๋ฆฌ, ์ „์†ก, ์ˆ˜์ง‘์€ ํ•ด๋‹น `skill-*` ์„œ๋น„์Šค๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. +- ๋ณธ์ฒด๊ฐ€ ์Šคํ‚ฌ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์กฐ๋Š” ์›์น™ ์œ„๋ฐ˜์œผ๋กœ ๋ด…๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ์Šคํ‚ฌ์€ ๋กœ๋น™์˜ ์†๊ณผ ๋ฐœ์ด๊ณ , ๋ณธ์ฒด๋Š” ์†๋ฐœ์„ ์›€์ง์ด๊ฒŒ ํ•˜๋Š” ํŒ๋‹จ์ž์ž…๋‹ˆ๋‹ค. + +### 3.2 ํ˜ธ์ถœ ๋ฐฉ์‹ ์›์น™ +- ์•ˆ์ •์  ๊ธฐ๋Šฅ์€ HTTP API ํ˜ธ์ถœ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. +- ์šด์˜, ๋ณต๊ตฌ, ๋””๋ฒ„๊น…์ฒ˜๋Ÿผ API๋งŒ์œผ๋กœ ๋ถ€์กฑํ•œ ๊ฒฝ๋กœ๋งŒ ์ œํ•œ์ ์œผ๋กœ CLI ์‹คํ–‰์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. +- ์–ด๋–ค ํ˜ธ์ถœ ๋ฐฉ์‹์ด๋“  ๊ณ„์•ฝ๊ณผ ๊ฒ€์ฆ์ด ํ˜ธ์ถœ ๋ฐฉ์‹๋ณด๋‹ค ์šฐ์„ ์ž…๋‹ˆ๋‹ค. + +### 3.3 ์‹คํŒจ ๊ฐ€์‹œ์„ฑ ์›์น™ +- ์Šคํ‚ฌ ์‹คํŒจ๋Š” ๋ณธ์ฒด์—์„œ ์„ฑ๊ณต์ฒ˜๋Ÿผ ํฌ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ์‹คํŒจ ์›์ธ, ์ค‘๋‹จ ์ง€์ , ์žฌ์‹œ๋„ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ๊ตฌ์กฐํ™”ํ•ด ๋‚จ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- catch-all fallback์œผ๋กœ ์Šคํ‚ฌ ์‹คํŒจ๋ฅผ ์ƒ์‹œ ์€๋‹‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +## 4. ์Šคํ‚ฌ ์„ค๋ช…์„œ ํ•„์ˆ˜ ํ•ญ๋ชฉ +- `๋ชฉ์ `: ์ด ์Šคํ‚ฌ์ด ํ•ด๊ฒฐํ•˜๋Š” ์‚ฌ์šฉ์ž/์šด์˜ ๋ฌธ์ œ +- `ํ˜ธ์ถœ ์กฐ๊ฑด`: ์–ธ์ œ ์ด ์Šคํ‚ฌ์„ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€ +- `๊ธˆ์ง€ ์กฐ๊ฑด`: ์–ธ์ œ ์ด ์Šคํ‚ฌ์„ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”์ง€ +- `์ž…๋ ฅ ๊ณ„์•ฝ`: ํ•„์ˆ˜ ์ž…๋ ฅ, ์„ ํƒ ์ž…๋ ฅ, ํ˜•์‹, ์ œ์•ฝ +- `์ถœ๋ ฅ ๊ณ„์•ฝ`: ์„ฑ๊ณต ๊ฒฐ๊ณผ ํ˜•์‹, ์‹คํŒจ ๊ฒฐ๊ณผ ํ˜•์‹ +- `๊ถŒํ•œ`: ํ•„์š”ํ•œ ํ† ํฐ, ์ ‘๊ทผ ๋ฒ”์œ„, ์Šน์ธ ์กฐ๊ฑด +- `์‹คํ–‰ ๋ฐฉ๋ฒ•`: HTTP API, CLI, ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ์‹คํ–‰ ์—ฌ๋ถ€ +- `์‹คํŒจ ๊ธฐ์ค€`: ์น˜๋ช… ์‹คํŒจ, ์žฌ์‹œ๋„ ๊ฐ€๋Šฅ ์‹คํŒจ, ์‚ฌ์šฉ์ž ๋ณด๊ณ  ํ•„์š” ์‹คํŒจ +- `์™„๋ฃŒ ๊ธฐ์ค€`: ์ด ์Šคํ‚ฌ์ด ๋๋‚ฌ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ์กฐ๊ฑด +- `๊ฒ€์ฆ ๋ฐฉ๋ฒ•`: ํ—ฌ์Šค์ฒดํฌ, ์ƒ˜ํ”Œ ํ˜ธ์ถœ, ๋กœ๊ทธ/DB/API ๊ฒ€์ฆ ๋ฐฉ๋ฒ• + +## 5. ์ปจํ…์ŠคํŠธ ์ฃผ์ž… ์›์น™ +- ๋กœ๋น™์€ ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ์Šคํ‚ฌ ์„ค๋ช…์„œ์˜ ํ•ต์‹ฌ ๊ณ„์•ฝ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์ปจํ…์ŠคํŠธ ์ฃผ์ž…์˜ ๋ชฉ์ ์€ "์žฅ๋ฌธ ๋ฌธ์„œ ์ „๋‹ฌ"์ด ์•„๋‹ˆ๋ผ "์„ ํƒ๊ณผ ์‹คํ–‰์— ํ•„์š”ํ•œ ๊ณ„์•ฝ ์ „๋‹ฌ"์ž…๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ๋Ÿฐํƒ€์ž„์€ ์Šคํ‚ฌ ์„ค๋ช…์„œ ์ „์ฒด๋ฅผ ๋ฌด์กฐ๊ฑด ์ฃผ์ž…ํ•˜์ง€ ๋ง๊ณ , ํ˜„์žฌ ์š”์ฒญ์— ํ•„์š”ํ•œ ๊ณ„์•ฝ๋งŒ ์ถ”๋ ค ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ์„ค๋ช…์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ณธ์ฒด ํ”„๋กฌํ”„ํŠธ ํ•˜๋“œ์ฝ”๋”ฉ์„ ๋จผ์ € ๋Š˜๋ฆฌ๋Š” ๋Œ€์‹  ๊ณ„์•ฝ ๋ฌธ์„œ์™€ ๋กœ๋” ๊ตฌ์กฐ๋ฅผ ๋จผ์ € ๊ต์ •ํ•ฉ๋‹ˆ๋‹ค. + +## 5-1. ์‹ค์ œ ํ”„๋กœ์ ํŠธ ์—ฐ๊ฒฐ ์›์น™ +- ๋กœ๋น™์˜ ์Šคํ‚ฌ์€ ๋‚ด๋ถ€ ๋ฐ๋ชจ๋ฅผ ์œ„ํ•œ ์žฅ์‹ ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ํ”„๋กœ์ ํŠธ์™€ ์‹ค์ œ ๊ณ ๊ฐ ์ ‘์ ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์‹คํ–‰ ์ˆ˜๋‹จ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ๋กœ๋น™์€ ์šฐ๋ฆฌ๊ฐ€ ์šด์˜ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค์— ์—ฐ๊ฒฐ๋˜์–ด ์‹ค์ œ ์‚ฌ์šฉ์ž ์š”์ฒญ, ๋ฌธ์„œ, ๋ฉ”์‹œ์ง€, ํŒŒ์ผ, ์šด์˜ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์ด ์—ฐ๊ฒฐ์€ "๋กœ๋น™์ด ๋ชจ๋“  ๊ฒƒ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•œ๋‹ค"๋Š” ๋œป์ด ์•„๋‹ˆ๋ผ, ํ”„๋กœ์ ํŠธ๋ณ„ ์ ‘์ ์„ ์Šคํ‚ฌ ๊ณ„์•ฝ์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. +- ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ๋น™์— ์—ฐ๊ฒฐํ•  ๋•Œ๋Š” ๋จผ์ € ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ ๋กœ๋น™์ด ์–ด๋–ค ์†๋ฐœ ์—ญํ• ์„ ๋งก๋Š”์ง€ ๋ฌธ์„œ๋กœ ๊ณ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +## 5-2. ๊ฐ€์น˜ ๋ฃจํ”„ ์›์น™ +- ๋กœ๋น™์˜ ์‹คํ–‰์€ ๋‹จ์ˆœ ์ž‘์—… ์™„๋ฃŒ๋กœ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ๋กœ๋น™์€ ์‹ค์ œ ์ƒํ˜ธ์ž‘์šฉ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ "๋ฌด์—‡์ด ๊ฐ€์น˜์˜€๋Š”๊ฐ€"์™€ "๊ทธ ๊ฐ€์น˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•  ๊ฒƒ์ธ๊ฐ€"๋ฅผ ๋‹ค์‹œ ํŒ๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ์Šคํ‚ฌ ์‹คํ–‰ ๋กœ๊ทธ๋Š” ๋‹จ์ˆœ ์„ฑ๊ณต/์‹คํŒจ๋งŒ์ด ์•„๋‹ˆ๋ผ, ๊ฐ€์น˜ ํŒ๋‹จ๊ณผ ์ธก์ • ๊ธฐ์ค€ ๊ฐœ์„ ์˜ ์ž…๋ ฅ์œผ๋กœ ๋‚จ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ๊ฐ€์น˜ ์ธก์ • ๊ธฐ์ค€์ด ๋ฐ”๋€Œ๋ฉด ํ”„๋กฌํ”„ํŠธ ์ž„์‹œ ์ˆ˜์ •์ด ์•„๋‹ˆ๋ผ ๋ฌธ์„œํ™”๋œ ์ •์ฑ…๊ณผ ๊ณ„์•ฝ๋ถ€ํ„ฐ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. + +## 6. ๊ตฌํ˜„ ์›์น™ + +### 6.1 ๋‹จ์ผ ๊ธฐ์ค€ +- ์Šคํ‚ฌ ์„ ํƒ ๊ธฐ์ค€๊ณผ ์‹คํ–‰ ๊ณ„์•ฝ์€ ๋ฌธ์„œ์™€ ์ฝ”๋“œ์—์„œ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์„ค๋ช…์„œ์™€ ์‹ค์ œ API/CLI ๋™์ž‘์ด ๋‹ค๋ฅด๋ฉด ๋ฌธ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋Ÿฐํƒ€์ž„ SSOT๊ฐ€ ๊นจ์ง„ ์ƒํƒœ๋กœ ๋ด…๋‹ˆ๋‹ค. + +### 6.2 ํ‘œ์ค€ํ™” ์šฐ์„  +- ์‹ ๊ทœ ์Šคํ‚ฌ์€ ๊ธฐ์กด ์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ๋งˆ๋‹ค ์„ค๋ช… ํ˜•์‹์ด ์ œ๊ฐ๊ฐ์ธ ์ƒํƒœ๋ฅผ ๋ฐฉ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +### 6.3 README ๋น„์ค‘ ์ถ•์†Œ +- README๋Š” ์Šคํ‚ฌ ์›์น™ ๋ณธ๋ฌธ์„ ์†Œ์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ์›์น™๊ณผ ๊ณ„์•ฝ ๊ตฌ์กฐ๋Š” ์ „์šฉ ์›์น™ ๋ฌธ์„œ๋‚˜ ์Šคํ‚ฌ๋ณ„ `SKILL.md`์— ๋‘ก๋‹ˆ๋‹ค. +- README์—๋Š” ์Šคํ‚ฌ ๋ฌธ์„œ ์ง„์ž… ๋งํฌ๋งŒ ๋‘ก๋‹ˆ๋‹ค. + +### 6.4 Reference ๊ฒฝ๊ณ„ ๊ณ ์ • +- ์™ธ๋ถ€ ๋˜๋Š” ์ฐธ๊ณ  ๊ตฌํ˜„์ฒด๋Š” workspace `reference` ๊ณ„์ธต์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- reference ์ €์žฅ์†Œ์˜ ์ฝ”๋“œ์™€ ๋ฌธ์„œ๋Š” ์•„์ด๋””์–ด/ํŒจํ„ด ๋น„๊ต ๋Œ€์ƒ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. +- reference์—์„œ ๊ฐ€์ ธ์˜จ ์Šคํ‚ฌ ๊ตฌ์กฐ๋‚˜ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… ๋ฐฉ์‹์€ ๋กœ๋น™ ๋ฌธ์„œ์— ๋‹ค์‹œ ๊ณ ์ •๋˜๊ณ , `rb8001` ๋ฐ `skill-*` ์‹ค์ œ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•˜๊ธฐ ์ „์—๋Š” ๋กœ๋น™ ๊ธฐ์ค€์œผ๋กœ ๊ฐ„์ฃผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +## 7. ํ˜„์žฌ ๋กœ๋น™์— ๋Œ€ํ•œ ์ ์šฉ ํ•ด์„ +- `skill-email`, `skill-news`, `skill-slack`, `skill-rag-file`, `skill-embedding`, `skill-calendar`, `skill-publish`๋Š” ๋กœ๋น™์˜ ์‹คํ–‰ ์Šคํ‚ฌ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. +- `rb8001`์€ ์ด ์Šคํ‚ฌ๋“ค์˜ ๊ณ„์•ฝ์„ ์ฝ๊ณ  ์„ ํƒํ•˜๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ๋ณ„ ์„ธ๋ถ€ ๋™์ž‘ ์„ค๋ช…์€ ๊ฐ ์„œ๋น„์Šค ๋ฌธ์„œ์™€ `SKILL.md`๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ๋ณธ ๋ฌธ์„œ๋Š” ๊ณตํ†ต ํ•ด์„ ๊ทœ์น™๋งŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. + +## 8. ๊ฒ€์ฆ ๊ธฐ์ค€ +- ์ƒˆ ์Šคํ‚ฌ ์ถ”๊ฐ€ ์‹œ ๋ณธ ๋ฌธ์„œ์˜ ํ•„์ˆ˜ ํ•ญ๋ชฉ์ด ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ์—ฐ๋™ ๋ณ€๊ฒฝ ์‹œ ์‹ค์ œ API ์‘๋‹ต ๋˜๋Š” ์‹คํ–‰ ๋กœ๊ทธ๋กœ ๊ณ„์•ฝ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ์„ค๋ช…์„œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ณ„์•ฝ์ด ๋ˆ„๋ฝ๋œ ์ƒํƒœ์—์„œ๋Š” "์Šคํ‚ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ"์ด๋ผ๊ณ  ๋‹จ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ์‹ค์ œ ํ”„๋กœ์ ํŠธ ์—ฐ๊ฒฐ ํ›„์—๋Š” ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ๊ฒฐ๊ณผ์™€ ๊ฐ€์น˜ ์ธก์ • ๊ทผ๊ฑฐ๊ฐ€ ๋‚จ์•„์•ผ "์—ฐ๊ฒฐ ์™„๋ฃŒ"๋กœ ๋ด…๋‹ˆ๋‹ค. + +## ๊ด€๋ จ ๋ฌธ์„œ +- [311_backend_coding_principles.md](./311_backend_coding_principles.md) +- [360_๋กœ๋น™_์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋Ÿ‰ํ™”_์ „๋žต.md](./360_%EB%A1%9C%EB%B9%99_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88_%EA%B2%BD%EB%9F%89%ED%99%94_%EC%A0%84%EB%9E%B5.md) +- [๋กœ๋น™ ์—์ด์ „ํŠธ ๋ฃจํ”„, ์Šคํ‚ฌ ํ›…, LLM ์‹คํ–‰ ๊ตฌ์กฐ ๋ฆฌ์„œ์น˜](../../journey/research/orchestration_tools/260312_%EB%A1%9C%EB%B9%99_%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%A3%A8%ED%94%84_%EC%8A%A4%ED%82%AC%ED%9B%85_LLM%EC%8B%A4%ED%96%89%EA%B5%AC%EC%A1%B0_%EB%A6%AC%EC%84%9C%EC%B9%98.md) diff --git a/book/300_architecture/README.md b/book/300_architecture/README.md index fe5fd68..d1fe1d0 100644 --- a/book/300_architecture/README.md +++ b/book/300_architecture/README.md @@ -1,77 +1,26 @@ # Part 3: ๊ธฐ์ˆ  ์•„ํ‚คํ…์ฒ˜ -## ๊ฐœ์š” +๋กœ๋น™์˜ ๊ธฐ์ˆ  ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œ ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. ์ƒ์„ธ ์›์น™๊ณผ ๊ตฌ์กฐ๋Š” ๊ฐœ๋ณ„ ๋ฌธ์„œ์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. -Part 2 [[../200_core_design/README|ํ•ต์‹ฌ ์„ค๊ณ„]]์—์„œ ๊ตฌ์ƒํ•œ ๋กœ๋น™์˜ ์‹œ์Šคํ…œ๋“ค์ด ์‹ค์ œ๋กœ ์–ด๋–ค ๊ธฐ์ˆ ์„ ๋ฐ”ํƒ•์œผ๋กœ ์–ด๋–ป๊ฒŒ ์›€์ง์ด๋Š”์ง€, ๊ทธ ๊ธฐ์ˆ ์  ๊ธฐ๋ฐ˜๊ณผ ์ „์ฒด ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. +## ํ•ต์‹ฌ ๋ฌธ์„œ +- [[310_์ „์ฒด_์‹œ์Šคํ…œ_๊ตฌ์กฐ_์ปจํ…Œ์ด๋„ˆ์™€_๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค]] - ์ปจํ…Œ์ด๋„ˆ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ์„œ๋ฒ„ ์—ญํ•  +- [[311_FastAPI_๊ตฌ์กฐ_์›์น™]] - ๋ฐฑ์—”๋“œ ๊ตฌ์กฐ ์›์น™ +- [[312_๋ฌธ์„œ_์ž‘์„ฑ_์›์น™]] - ๋กœ๋น™ ๋ฌธ์„œ ์ž‘์„ฑ ์›์น™ +- [[313_Gemini_ํ”„๋กฌํ”„ํŠธ_์„ค๊ณ„_์›์น™]] - ํ”„๋กฌํ”„ํŠธ ์„ค๊ณ„ ์›์น™ +- [[314_infrastructure-ssot-principle]] - ์ธํ”„๋ผ ์„ค์ • SSOT ์›์น™ +- [[315_ํ…Œ์ŠคํŠธ_์›์น™]] - ํ…Œ์ŠคํŠธ์™€ ๊ฒ€์ฆ ์›์น™ +- [[316_skill-contract-and-execution-principles]] - ์Šคํ‚ฌ ๊ณ„์•ฝ, ์„ค๋ช…์„œ, ์‹คํ–‰ ๊ฒฝ๊ณ„ ์›์น™ -## ์ฃผ์š” ๋‚ด์šฉ +## ๊ตฌ์กฐ ๋ฌธ์„œ +- [[320_Slack_๊ธฐ๋ฐ˜_์ธํ„ฐํŽ˜์ด์Šค_์„ค๊ณ„]] +- [[325_robeing_monitor_๋ชจ๋‹ˆํ„ฐ๋ง_์•„ํ‚คํ…์ฒ˜]] +- [[330_๋ฐฑ์—”๋“œ_PostgreSQL_ChromaDB_Vector_Memory]] +- [[340_GUI_๊ณต์œ _์•„ํ‚คํ…์ฒ˜_๋ ˆ๋ฒจ๊ธฐ๋ฐ˜_๊ถŒํ•œ]] +- [[350_DID_๊ธฐ๋ฐ˜_์ •์ฒด์„ฑ๊ณผ_๋‹ค์ค‘์—์ด์ „ํŠธ]] +- [[360_๋กœ๋น™_์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋Ÿ‰ํ™”_์ „๋žต]] +- [[370_์ž„๋ฒ ๋”ฉ_์„œ๋น„์Šค_๋ถ„๋ฆฌ_์•„ํ‚คํ…์ฒ˜]] +- [[380_authentication_system]] -- **Docker ์ปจํ…Œ์ด๋„ˆ์™€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜**: ๋กœ๋น™์ด ๊ฐ์ž์˜ ๋…๋ฆฝ๋œ '์ง‘'์—์„œ ์‚ด๋ฉฐ, ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋‰œ '์ „๋ฌธ ์„œ๋น„์Šค'๋“ค๊ณผ ํ˜‘๋ ฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. -- **PostgreSQL + ChromaDB ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: ๋กœ๋น™์˜ ์ •ํ˜•ํ™”๋œ ์ •๋ณด(์ด๋ฆ„, ๋ ˆ๋ฒจ ๋“ฑ)๋ฅผ ์ €์žฅํ•˜๋Š” '๊ธฐ์–ต ์ €์žฅ์†Œ'์™€, ๋Œ€ํ™”์˜ ์˜๋ฏธ์™€ ๋งฅ๋ฝ์„ ์ €์žฅํ•˜๋Š” '์—ฐ์ƒ ๊ธฐ์–ต ์ €์žฅ์†Œ'๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. -- **Slack ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค**: ์‚ฌ์šฉ์ž์™€ ๋กœ๋น™์ด ๋งŒ๋‚˜๋Š” ์ฃผ์š” ์†Œํ†ต ์ฐฝ๊ตฌ์ž…๋‹ˆ๋‹ค. -- **์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค ๋ถ„๋ฆฌ ์•„ํ‚คํ…์ฒ˜**: ์–ธ์–ด์˜ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ๋ณ„๋„์˜ ์ „๋ฌธ ์„œ๋น„์Šค์— ๋งก๊ฒจ, ๋กœ๋น™ ๋ณธ์ฒด๋Š” ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๊ฒŒ ์›€์ง์ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. -- **DID ๊ธฐ๋ฐ˜ ์ •์ฒด์„ฑ ์‹œ์Šคํ…œ**: ๋กœ๋น™ ๊ฐ์ž๊ฐ€ ๊ณ ์œ ํ•œ ์‹ ์›์ฆ๋ช…์„ ๊ฐ€์ง€๊ณ , ์ž์‹ ์˜ ํ–‰๋™์— ์ฑ…์ž„์„ ์ง€๊ฒŒ ํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. - -## ์›์น™ ๋ฌธ์„œ - -- [[311_FastAPI_๊ตฌ์กฐ_์›์น™]] - FastAPI ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์›์น™ -- [[312_๋ฌธ์„œ_์ž‘์„ฑ_์›์น™]] - ๋ฌธ์„œ ์ž‘์„ฑ ์›์น™ -- [[313_Gemini_ํ”„๋กฌํ”„ํŠธ_์„ค๊ณ„_์›์น™]] - Gemini ํ”„๋กฌํ”„ํŠธ ์„ค๊ณ„ ์›์น™ - -## ๋กœ๋น™์„ ์œ„ํ•œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ - -### Level 1-10 (๊ธฐ์ดˆ ์ดํ•ด) -- [ ] Docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‚ด "์ง‘"์ž„์„ ์ดํ•ดํ•œ๋‹ค -- [ ] PostgreSQL์— ๋‚ด ์ •๋ณด๊ฐ€ ์ €์žฅ๋จ์„ ์•ˆ๋‹ค -- [ ] ChromaDB์— ๋‚ด ๊ธฐ์–ต์ด ์ €์žฅ๋จ์„ ์•ˆ๋‹ค -- [ ] Slack์ด ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค์ž„์„ ์ดํ•ดํ•œ๋‹ค - -### Level 11-15 (์‹œ์Šคํ…œ ์ดํ•ด) -- [ ] ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๋ฐฉ์‹์„ ์ดํ•ดํ•œ๋‹ค -- [ ] ์ž„๋ฒ ๋”ฉ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค -- [ ] PostgreSQL๊ณผ ChromaDB์˜ ์—ญํ•  ์ฐจ์ด๋ฅผ ์•ˆ๋‹ค -- [ ] ๋ ˆ๋ฒจ ๊ธฐ๋ฐ˜ ๊ถŒํ•œ ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•œ๋‹ค - -### Level 16-20 (์•„ํ‚คํ…์ฒ˜ ์ „๋ฌธ๊ฐ€) -- [ ] ์‹œ์Šคํ…œ ๋ณ‘๋ชฉ ์ง€์ ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค -- [ ] ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ์•ˆ์„ ์ œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค -- [ ] ์ƒˆ๋กœ์šด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค -- [ ] ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์žฅ๋‹จ์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค - -## ํ•ต์‹ฌ ๊ธฐ์ˆ  ์Šคํƒ -``` -Frontend: Slack Interface (์‚ฌ์šฉ์ž์™€์˜ ์†Œํ†ต ์ฐฝ๊ตฌ) -Backend: FastAPI (๋กœ๋น™์˜ ๋‘๋‡Œ) + skill-* / Workers (์‹ ๊ฒฝ๊ณ„) -Database: PostgreSQL (๊ตฌ์กฐํ™”๋œ ๊ธฐ์–ต) + ChromaDB (๋งฅ๋ฝ์ /์—ฐ์ƒ์  ๊ธฐ์–ต) -Container: Docker Compose (๋กœ๋น™๋“ค์˜ ์•„ํŒŒํŠธ ๋‹จ์ง€) -Embedding: Separated Service (์–ธ์–ด ์˜๋ฏธ ์ดํ•ด ์ „๋ฌธ๊ฐ€) -``` - -## ์‹œ์Šคํ…œ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ -``` -์‚ฌ์šฉ์ž โ†’ Slack (์†Œํ†ต) โ†’ nginx (๊ตํ†ต์ •๋ฆฌ) โ†’ Gateway(8100) (์ •๋ฌธ) - โ†“ - rb8001(๋กœ๋น™ ๋ณธ์ฒด) - โ†“ - Embedding Service (์˜๋ฏธ ๋ฒˆ์—ญ๊ฐ€) - โ†“ - Skill Services (๊ฐ์ข… ์ „๋ฌธ๊ฐ€๋“ค) - โ†“ - PostgreSQL / ChromaDB (๊ธฐ์–ต ์ €์žฅ์†Œ) -``` - -## ์‹ค์Šต ๊ณผ์ œ -1. `docker ps`๋กœ ๋‚ด ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ -2. PostgreSQL์—์„œ ๋‚ด ๋ ˆ๋ฒจ ์ •๋ณด ์กฐํšŒํ•˜๊ธฐ -3. ChromaDB์—์„œ ์ตœ๊ทผ ๊ธฐ์–ต ๊ฒ€์ƒ‰ํ•˜๊ธฐ - -## ์„ฑ๋Šฅ ์ง€ํ‘œ -- ์‘๋‹ต ์‹œ๊ฐ„: < 2์ดˆ (๋ชฉํ‘œ) -- ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰: < 1GB (์ž„๋ฒ ๋”ฉ ์ œ์™ธ) -- ๋™์‹œ ์ฒ˜๋ฆฌ: 5๊ฐœ ์š”์ฒญ - -## ๋‹ค์Œ ๋‹จ๊ณ„ -Part 4 [[../400_growth/README|์„ฑ์žฅ๊ณผ ์ง„ํ™”]]์—์„œ ์ด ์•„ํ‚คํ…์ฒ˜ ์œ„์—์„œ ์–ด๋–ป๊ฒŒ ์„ฑ์žฅํ•˜๋Š”์ง€ ํ•™์Šตํ•˜์„ธ์š”. - -## ์ด์ „ ๋‹จ๊ณ„ -Part 2 [[../200_core_design/README|ํ•ต์‹ฌ ์„ค๊ณ„]]์—์„œ ์ด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์‹œ์Šคํ…œ์˜ ์„ค๊ณ„๋„๋ฅผ ํ•™์Šตํ•˜์„ธ์š”. +## ๊ด€๋ จ ํŒŒํŠธ +- ์ด์ „: [[../200_core_design/README|Part 2 ํ•ต์‹ฌ ์„ค๊ณ„]] +- ๋‹ค์Œ: [[../400_growth/README|Part 4 ์„ฑ์žฅ๊ณผ ์ง„ํ™”]] diff --git a/journey/ideas/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_์•„์ด๋””์–ด.md b/journey/ideas/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_์•„์ด๋””์–ด.md new file mode 100644 index 0000000..3494004 --- /dev/null +++ b/journey/ideas/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_์•„์ด๋””์–ด.md @@ -0,0 +1,96 @@ +tags: [robeing, skills, skill-docs, context-injection, orchestration, ideas] + +# ์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์•„์ด๋””์–ด + +์ƒ์œ„ ์›์น™: +- [0_VALUE Writing Principles](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/writing-principles.md) +- [0_VALUE Agents Guide](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/agents-rules.md) +- [AI ์—์ด์ „ํŠธ ์‹œ๋Œ€์˜ CLIยท์Šคํ‚ฌยท์ธํ„ฐํŽ˜์ด์Šค ์ง„ํ™”](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/ai-agent-cli-skill-interface-evolution.md) +- [์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฐ ์‹คํ–‰ ์›์น™](../../book/300_architecture/316_skill-contract-and-execution-principles.md) + +## ๋ฌธ์ œ ์ธ์‹ + +- ํ˜„์žฌ ๋กœ๋น™์€ `rb8001`์ด ๊ฐ `skill-*` ์„œ๋น„์Šค API๋ฅผ ์ง์ ‘ ์•Œ๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๋น„์ค‘์ด ํฝ๋‹ˆ๋‹ค. +- ์ด ๊ตฌ์กฐ์—์„œ๋Š” ์Šคํ‚ฌ ์„ ํƒ ๊ธฐ์ค€, ์ž…๋ ฅ ์ œ์•ฝ, ๊ถŒํ•œ, ์‹คํŒจ ๊ธฐ์ค€, ์™„๋ฃŒ ๊ธฐ์ค€์ด ์ฝ”๋“œ์™€ ํ”„๋กฌํ”„ํŠธ ์ฃผ๋ณ€์— ํฉ์–ด์ง€๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. +- ๊ทธ ๊ฒฐ๊ณผ `rb8001`์ด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋ผ๊ธฐ๋ณด๋‹ค ์Šคํ‚ฌ๋ณ„ ํ˜ธ์ถœ ์„ธ๋ถ€์‚ฌํ•ญ๊นŒ์ง€ ๋– ์•ˆ๋Š” ๋ณธ์ฒด๊ฐ€ ๋˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ์ด ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ๊ณ„์•ฝ์ด ๋ฐ”๋€”์ˆ˜๋ก ๋ณธ์ฒด ํ”„๋กฌํ”„ํŠธ์™€ ๋ถ„๊ธฐ ๋กœ์ง์„ ์ง์ ‘ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์••๋ ฅ์ด ์ปค์ง‘๋‹ˆ๋‹ค. + +## ์•„์ด๋””์–ด + +- ๋กœ๋น™์€ ๋จผ์ € ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ๊ตฌ์กฐํ™”ํ•ด์„œ "๋ฌด์Šจ ์ข…๋ฅ˜์˜ ์ผ์ธ์ง€", "์–ด๋–ค ์Šคํ‚ฌ ํ›„๋ณด๊ฐ€ ํ•„์š”ํ•œ์ง€"๋ฅผ ๋” ๋ช…ํ™•ํžˆ ํ•ด์„ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ์ด๋•Œ ์˜๋„๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ์ž์œ ์„œ์ˆ ๋ณด๋‹ค typed contract์— ๊ฐ€๊นŒ์šด ํ˜•ํƒœ๋กœ ๋‹ค๋ค„์ ธ, ํ›„์† ์Šคํ‚ฌ ์„ ํƒ์˜ ์ž…๋ ฅ์ด ๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. +- ๊ฐ ์Šคํ‚ฌ๋งˆ๋‹ค `SKILL.md`๋ฅผ ๋‘๊ณ , ์ž…๋ ฅ/์ถœ๋ ฅ/๊ถŒํ•œ/์‹คํ–‰/์‹คํŒจ/๊ฒ€์ฆ ๊ณ„์•ฝ์„ ๊ทธ ๋ฌธ์„œ์— ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. +- ๋กœ๋น™์€ ์Šคํ‚ฌ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๋ฌธ์„œ ์ „์ฒด๋ฅผ ์žฅ๋ฌธ์œผ๋กœ ์ฃผ์ž…ํ•˜๋Š” ๋Œ€์‹ , ์˜๋„๋ถ„์„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ํ˜„์žฌ ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ํ›„๋ณด ์Šคํ‚ฌ์˜ ํ•ต์‹ฌ ๊ณ„์•ฝ๋งŒ ์ถ”๋ ค ์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ์ด๋ ‡๊ฒŒ ๋˜๋ฉด `rb8001`์˜ ์ค‘์‹ฌ ์ฑ…์ž„์€ "์ง์ ‘ API ์„ธ๋ถ€ ํ˜ธ์ถœ์„ ๊ธฐ์–ตํ•˜๋Š” ๋ณธ์ฒด"๊ฐ€ ์•„๋‹ˆ๋ผ "์–ด๋–ค ์Šคํ‚ฌ์„ ์–ธ์ œ ์–ด๋–ค ๊ณ„์•ฝ์œผ๋กœ ์—ฐ๊ฒฐํ• ์ง€ ํŒ๋‹จํ•˜๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ธŒ๋ ˆ์ธ"์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ๊ตฌํ˜„์€ ๊ณ„์† ๊ฐ `skill-*` ์„œ๋น„์Šค์— ๋‘๊ณ , ๋ณธ์ฒด๋Š” ๊ณ„์•ฝ ํ•ด์„, ์Šคํ‚ฌ ์„ ํƒ, ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ด€์ฐฐ, ๋‹ค์Œ ํ–‰๋™ ๊ฒฐ์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. + +## ๊ธฐ๋Œ€ํ•˜๋Š” ์‚ฌ์šฉ ํ๋ฆ„ + +- ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด ๋กœ๋น™์€ ๋จผ์ € ์ด๊ฒƒ์ด ๋ฉ”์ผ, ์ผ์ •, ๋ฆฌ์„œ์น˜, ์ „์†ก, ๊ฒŒ์‹œ ๊ฐ™์€ ์–ด๋–ค ์ž‘์—… ์„ฑ๊ฒฉ์ธ์ง€ ๊ตฌ์กฐํ™”ํ•ด ํ•ด์„ํ•˜๋Š” ์ชฝ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ๊ทธ ๋‹ค์Œ ๋กœ๋น™์€ ์ „์ฒด ์Šคํ‚ฌ ๋ฌธ์„œ๋ฅผ ๋‹ค ๋“ค๊ณ  ์žˆ๋Š” ๋Œ€์‹ , ์ง€๊ธˆ ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋ช‡ ๊ฐœ ์Šคํ‚ฌ๋งŒ ํ›„๋ณด๋กœ ์ขํžˆ๊ณ  ๊ทธ ์Šคํ‚ฌ๋“ค์˜ ๊ณ„์•ฝ๋งŒ ์ฝ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. +- ์ดํ›„ ๋กœ๋น™์€ ๊ทธ ๊ณ„์•ฝ์„ ๋ฐ”ํƒ•์œผ๋กœ ์–ด๋–ค ์Šคํ‚ฌ์„ ๋จผ์ € ์“ฐ๊ณ , ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์Œ ์Šคํ‚ฌ์— ๋„˜๊ธธ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ธŒ๋ ˆ์ธ ์—ญํ• ์„ ๋งก๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +- ์˜ˆ๋ฅผ ๋“ค์–ด "์˜ค๋Š˜ ์ผ์ • ํ™•์ธํ•˜๊ณ  ์Šฌ๋ž™์—๋„ ๊ณต์œ ํ•ด์ค˜" ๊ฐ™์€ ์š”์ฒญ์—์„œ๋Š” ์ผ์ • ํ™•์ธ๊ณผ ๋ฉ”์‹œ์ง€ ์ „์†ก์ด ๊ฐ๊ฐ ๋‹ค๋ฅธ ์Šคํ‚ฌ ๊ณ„์•ฝ์œผ๋กœ ํ•ด์„๋˜๊ณ , ๋กœ๋น™์€ ๋‘ ์Šคํ‚ฌ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์กฐ์œจ์ž ์—ญํ• ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. + +## ์ด ์•„์ด๋””์–ด๊ฐ€ ์ƒ์ƒํ•˜๋Š” ์ตœ์†Œ ํ•ด์„ ๋‹จ์œ„ + +- ์˜๋„๋ถ„์„์€ ์ ์–ด๋„ ์•„๋ž˜ ์ •๋„๋ฅผ ๊ตฌ์กฐํ™”ํ•ด ๋Œ๋ ค์ฃผ๋Š” ๋ฐฉํ–ฅ์„ ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. +- `task_type`: ๋ฉ”์ผ, ์ผ์ •, ๋ฆฌ์„œ์น˜, ์ „์†ก, ๊ฒŒ์‹œ ๊ฐ™์€ ์ž‘์—… ์„ฑ๊ฒฉ +- `goal`: ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์›ํ•˜๋Š” ์ตœ์ข… ๊ฒฐ๊ณผ +- `required_capabilities`: ํ•„์š”ํ•œ ๋Šฅ๋ ฅ์ด๋‚˜ ์ž‘์—… ์กฐ๊ฐ +- `candidate_skills`: ํ˜ธ์ถœ ํ›„๋ณด๊ฐ€ ๋˜๋Š” ์Šคํ‚ฌ ๋ชฉ๋ก +- `needs_human_confirmation`: ์Šน์ธ์ด๋‚˜ ํ™•์ธ์ด ํ•„์š”ํ•œ์ง€ ์—ฌ๋ถ€ +- ์ค‘์š”ํ•œ ์ ์€ ์ด ํ•„๋“œ๋ช…์ด ์ตœ์ข…์•ˆ์ด๋ผ๋Š” ๋œป์ด ์•„๋‹ˆ๋ผ, ์ž์œ ์„œ์ˆ  ๋Œ€์‹  "ํ›„์† ์Šคํ‚ฌ ์„ ํƒ์— ๋ฐ”๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ"๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. + +## ํ›„๋ณด ์Šคํ‚ฌ ์ถ•์†Œ์— ๋Œ€ํ•ด ๊ธฐ๋Œ€ํ•˜๋Š” ๊ธฐ์ค€ + +- ๋ชจ๋“  ์Šคํ‚ฌ์„ ํ•ญ์ƒ ์ปจํ…์ŠคํŠธ์— ๋„ฃ๋Š” ๋Œ€์‹ , ํ˜„์žฌ ์š”์ฒญ๊ณผ ์ง์ ‘ ๊ด€๋ จ๋œ ์Šคํ‚ฌ๋งŒ ํ›„๋ณด๋กœ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉํ–ฅ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. +- ํ›„๋ณด ์ถ•์†Œ๋Š” ์ ์–ด๋„ `์ž‘์—… ์„ฑ๊ฒฉ`, `ํ•„์ˆ˜ ๋Šฅ๋ ฅ`, `๊ถŒํ•œ ํ•„์š” ์—ฌ๋ถ€`, `๊ธˆ์ง€ ์กฐ๊ฑด` ์ •๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ทธ๋ฆผ์„ ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. +- ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹จ์ˆœ ์ผ์ • ์กฐํšŒ ์š”์ฒญ์ด๋ฉด `calendar`๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ณ , ๋ฉ”์ผ ๋ฐœ์†ก์ด๋‚˜ ํผ๋ธ”๋ฆฌ์‹œ๋Š” ํ›„๋ณด์—์„œ ๋น ์ง€๋Š” ์ชฝ์ด ๋” ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. +- ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ๋ณธ์ฒด๊ฐ€ ์Šคํ‚ฌ ์ „์ฒด ์นดํƒˆ๋กœ๊ทธ๋ฅผ ๋งค๋ฒˆ ์žฅ๋ฌธ์œผ๋กœ ๋“ค๊ณ  ์žˆ์ง€ ์•Š์•„๋„ ๋˜๊ณ , ์ปจํ…์ŠคํŠธ ์˜ค์—ผ๋„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +## ๊ธฐ๋Œ€ ํšจ๊ณผ + +- ์˜๋„๋ถ„์„๊ณผ ์Šคํ‚ฌ ์‹คํ–‰ ์‚ฌ์ด์— ๊ณ„์•ฝ ๊ธฐ๋ฐ˜ ๊ฒฝ๊ณ„๊ฐ€ ์ƒ๊ฒจ, ๋ณธ์ฒด๊ฐ€ ๋ชจ๋“  ์Šคํ‚ฌ ์„ธ๋ถ€ ํ˜ธ์ถœ์„ ์ง์ ‘ ์™ธ์šฐ์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ฐฉํ–ฅ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ์ถ”๊ฐ€๋‚˜ ๋ณ€๊ฒฝ ์‹œ ๋ณธ์ฒด ํ•˜๋“œ์ฝ”๋”ฉ๋ณด๋‹ค ์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ์™€ ๋กœ๋”๋ฅผ ๋จผ์ € ๊ฐฑ์‹ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- `rb8001`๊ณผ `skill-*`์˜ ์ฑ…์ž„ ๊ฒฝ๊ณ„๊ฐ€ ๋” ์„ ๋ช…ํ•ด์ง‘๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ํ˜ธ์ถœ ๋ฐฉ์‹์ด HTTP API์ด๋“  ์ œํ•œ์  CLI์ด๋“  ์ƒ๊ด€์—†์ด ๊ฐ™์€ ๊ณ„์•ฝ ํ•ด์„ ๊ตฌ์กฐ๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ์‹คํŒจ ๊ธฐ์ค€๊ณผ ๊ฒ€์ฆ ๊ธฐ์ค€์„ ๋ฌธ์„œ์™€ ๋Ÿฐํƒ€์ž„์—์„œ ๊ฐ™์€ ์–ธ์–ด๋กœ ๋‹ค๋ฃจ๊ธฐ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. + +## ์ฐธ๊ณ  ํ•ด์„ + +- ์ด ๋ฐฉํ–ฅ์€ `reference` ๊ณ„์ธต์˜ `openclaw`์—์„œ ๋ณด์ด๋Š” "๋ณธ์ฒด๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ๋„๊ตฌ๋Š” ๊ณ„์•ฝ ์žˆ๋Š” ์‹คํ–‰ ๋‹จ์œ„"๋ผ๋Š” ํŒจํ„ด์„ ์ฐธ๊ณ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. +- ๋‹ค๋งŒ `reference/openclaw`์˜ ์ฝ”๋“œ๋‚˜ ๋ฌธ์„œ๋ฅผ ๋กœ๋น™ ์šด์˜ ๊ธฐ์ค€์œผ๋กœ ์ง์ ‘ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋กœ๋น™ ๋ฌธ์„œ์— ๋‹ค์‹œ ๊ณ ์ •ํ•œ ๋’ค ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ์ด ์•„์ด๋””์–ด์˜ ํ•ต์‹ฌ์€ OpenClaw ์ด์‹์ด ์•„๋‹ˆ๋ผ, ์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ์™€ ์ปจํ…์ŠคํŠธ ๋กœ๋”๋ฅผ ๋กœ๋น™ ๊ธฐ์ค€์œผ๋กœ ์žฌํ•ด์„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. + +## ๊ฒ€์ฆ์ด ํ•„์š”ํ•œ ์ด์œ  + +- ์‹ค์ œ๋กœ ์–ด๋–ค ์Šคํ‚ฌ๋ถ€ํ„ฐ `SKILL.md`๋ฅผ ๋งŒ๋“ค์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ํ•„๋“œ๋ฅผ ๊ณตํ†ต ํ‘œ์ค€์œผ๋กœ ๊ฐ•์ œํ• ์ง€๋Š” ์•„์ง ํ™•์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. +- ์˜๋„๋ถ„์„์„ ์–ด๋–ค typed contract ์ˆ˜์ค€์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ์ ˆํ•œ์ง€๋„ ์•„์ง ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. +- ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ๋กœ๋”ฉ์ด ๋ณธ์ฒด ํ”„๋กฌํ”„ํŠธ ๋ณต์žก๋„์™€ ์‹คํ–‰ ํ’ˆ์งˆ์„ ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ๋‚ฎ์ถ”๋Š”์ง€ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. +- ํ˜„์žฌ `rb8001` ์ฝ”๋“œ ๊ฒฝ๊ณ„์—์„œ ์ง์ ‘ API ํ˜ธ์ถœ ๋กœ์ง๊ณผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋กœ์ง์„ ์–ด๋””๊นŒ์ง€ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋„ ์กฐ์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์Šคํ‚ฌ ๋ฌธ์„œ์™€ ์‹ค์ œ API/CLI ๋™์ž‘์ด ์–ด๊ธ‹๋‚˜๋ฉด SSOT๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌธ์„œ ๋ถ€์ฑ„๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฒ€์ฆ ๋ฃจํ”„ ์„ค๊ณ„๊ฐ€ ๋จผ์ € ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + +## ์ด ๋ฌธ์„œ๋ฅผ ๋‹ซ๊ธฐ ์œ„ํ•ด ๋ฐ”๋กœ ๋„˜๊ธธ ์งˆ๋ฌธ + +- ํ˜„์žฌ `rb8001` ์˜๋„๋ถ„์„ ์ถœ๋ ฅ์—์„œ typed contract๋กœ ๋Œ์–ด์˜ฌ๋ฆด ์ตœ์†Œ ํ•„๋“œ๋Š” ๋ฌด์—‡์ธ๊ฐ€ +- ํ˜„์žฌ ์Šคํ‚ฌ ๋ชฉ๋ก ์ค‘ `SKILL.md` 1์ฐจ ๋Œ€์ƒ์€ ๋ฌด์—‡์ด๋ฉฐ, ๊ณตํ†ต ๊ณ„์•ฝ๊ณผ ๊ฐœ๋ณ„ ๊ณ„์•ฝ์€ ์–ด๋””์„œ ๊ฐˆ๋ฆฌ๋Š”๊ฐ€ +- ํ›„๋ณด ์Šคํ‚ฌ ์ถ•์†Œ์— ํ•„์š”ํ•œ ์ตœ์†Œ ๊ธฐ์ค€์€ ๋ฌด์—‡์ด๋ฉฐ, ์ง€๊ธˆ ์ฝ”๋“œ์™€ ๋ฌธ์„œ์—์„œ ์–ด๋””๊นŒ์ง€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š”๊ฐ€ + +## ์ด ๋ฌธ์„œ์—์„œ ์•„์ง ํ™•์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ + +- ์˜๋„๋ถ„์„ typed contract์˜ ์ตœ์ข… ํ•„๋“œ์™€ ํ‘œํ˜„ ๋ฐฉ์‹ +- ์Šคํ‚ฌ๋ณ„ `SKILL.md` ํ…œํ”Œ๋ฆฟ์˜ ์ตœ์ข… ํ•„๋“œ +- ์–ด๋–ค ์Šคํ‚ฌ์„ 1์ฐจ ๋ฌธ์„œํ™” ๋Œ€์ƒ์œผ๋กœ ์‚ผ์„์ง€์— ๋Œ€ํ•œ ์šฐ์„ ์ˆœ์œ„ +- `rb8001` ๋‚ด๋ถ€ ๋กœ๋” ๊ตฌ์กฐ์™€ ํ”„๋กฌํ”„ํŠธ ์กฐ๋ฆฝ ๋ฐฉ์‹์˜ ๊ตฌ์ฒด ๊ตฌํ˜„ +- API ์šฐ์„  ํ˜ธ์ถœ๊ณผ ์ œํ•œ์  CLI ํ˜ธ์ถœ์˜ ์ตœ์ข… ๊ฒฝ๊ณ„ + +## ๋‹ค์Œ ๋ฌธ์„œ + +- [์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฆฌ์„œ์น˜](../research/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_๋ฆฌ์„œ์น˜.md) +- `plans`: ์–ด๋–ค ์Šคํ‚ฌ๋ถ€ํ„ฐ ์–ด๋–ค ์ˆœ์„œ๋กœ `SKILL.md`๋ฅผ ๋งŒ๋“ค๊ณ , ๋ณธ์ฒด ๋กœ๋”๋ฅผ ์–ด๋””๊นŒ์ง€ ๋ฐ”๊ฟ€์ง€ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. + +## ๊ด€๋ จ ๋ฌธ์„œ + +- [OpenClaw ๊ธฐ๋ฐ˜ ๋กœ๋น™ ๊ฐœ์„  ์•„์ด๋””์–ด](./260309_openclaw_๊ธฐ๋ฐ˜_๋กœ๋น™_๊ฐœ์„ _์•„์ด๋””์–ด.md) +- [๋กœ๋น™ ์—์ด์ „ํŠธ ๋ฃจํ”„์™€ ์Šคํ‚ฌ ํ›… ๊ตฌ์กฐ ์•„์ด๋””์–ด](./260312_๋กœ๋น™_์—์ด์ „ํŠธ๋ฃจํ”„์™€_์Šคํ‚ฌํ›…_๊ตฌ์กฐ_์•„์ด๋””์–ด.md) +- [์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฐ ์‹คํ–‰ ์›์น™](../../book/300_architecture/316_skill-contract-and-execution-principles.md) diff --git a/journey/research/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_๋ฆฌ์„œ์น˜.md b/journey/research/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_๋ฆฌ์„œ์น˜.md new file mode 100644 index 0000000..b1f367e --- /dev/null +++ b/journey/research/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_๋ฆฌ์„œ์น˜.md @@ -0,0 +1,163 @@ +--- +tags: [research, robeing, skills, skill-docs, context-injection, orchestration] +--- + +# ์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฆฌ์„œ์น˜ + +## ๊ด€๋ จ ๋ฌธ์„œ +- [์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์•„์ด๋””์–ด](../ideas/260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_์•„์ด๋””์–ด.md) +- [์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฐ ์‹คํ–‰ ์›์น™](../../book/300_architecture/316_skill-contract-and-execution-principles.md) +- [OpenClaw ๊ธฐ๋ฐ˜ ๋กœ๋น™ ๊ฐœ์„  ์•„์ด๋””์–ด](../ideas/260309_openclaw_๊ธฐ๋ฐ˜_๋กœ๋น™_๊ฐœ์„ _์•„์ด๋””์–ด.md) +- [๋กœ๋น™ ์—์ด์ „ํŠธ ๋ฃจํ”„์™€ ์Šคํ‚ฌ ํ›… ๊ตฌ์กฐ ์•„์ด๋””์–ด](../ideas/260312_๋กœ๋น™_์—์ด์ „ํŠธ๋ฃจํ”„์™€_์Šคํ‚ฌํ›…_๊ตฌ์กฐ_์•„์ด๋””์–ด.md) + +## ๋ชฉ์  +- `rb8001`์ด ์ง์ ‘ API ํ˜ธ์ถœ ์„ธ๋ถ€๋ฅผ ๋งŽ์ด ์•Œ๊ณ  ์žˆ๋Š” ํ˜„์žฌ ๊ตฌ์กฐ๋ฅผ, ์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ตฌ์กฐ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. +- ์ด๋ฒˆ ๋ฌธ์„œ๋Š” `ideas`์—์„œ ๋‚จ๊ธด ์„ธ ์งˆ๋ฌธ์„ ๋‹ซ๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์ฝ”๋“œ์™€ ๋ฌธ์„œ ์ž์‚ฐ์„ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์‹ค์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. +- ๊ตฌํ˜„ ์ˆœ์„œ์™€ ์‹ค์ œ ์ž‘์—… ๋‹จ์œ„ ๊ณ ์ •์€ ๋‹ค์Œ `plans`์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค. + +## ์กฐ์‚ฌ ์งˆ๋ฌธ +1. ํ˜„์žฌ `rb8001` ์˜๋„๋ถ„์„ ์ถœ๋ ฅ์—์„œ typed contract๋กœ ๋Œ์–ด์˜ฌ๋ฆด ์ตœ์†Œ ํ•„๋“œ๋Š” ๋ฌด์—‡์ธ๊ฐ€ +2. ํ˜„์žฌ ์Šคํ‚ฌ ๋ชฉ๋ก ์ค‘ `SKILL.md` 1์ฐจ ๋Œ€์ƒ์€ ๋ฌด์—‡์ด๋ฉฐ, ๊ณตํ†ต ๊ณ„์•ฝ๊ณผ ๊ฐœ๋ณ„ ๊ณ„์•ฝ์€ ์–ด๋””์„œ ๊ฐˆ๋ฆฌ๋Š”๊ฐ€ +3. ํ›„๋ณด ์Šคํ‚ฌ ์ถ•์†Œ์— ํ•„์š”ํ•œ ์ตœ์†Œ ๊ธฐ์ค€์€ ๋ฌด์—‡์ด๋ฉฐ, ์ง€๊ธˆ ์ฝ”๋“œ์™€ ๋ฌธ์„œ์—์„œ ์–ด๋””๊นŒ์ง€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š”๊ฐ€ + +## Facts + +### 1. ํ˜„์žฌ ๋กœ๋น™์—๋Š” ์Šคํ‚ฌ๋ณ„ `SKILL.md`๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค +- `/home/admin/robeing` ๊ธฐ์ค€์œผ๋กœ `SKILL.md` ํŒŒ์ผ์€ ๊ฒ€์ƒ‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. +- ํ˜„์žฌ ์Šคํ‚ฌ ๋ฌธ์„œ ์ž์‚ฐ์€ ๊ฐ ์ €์žฅ์†Œ์˜ `README.md`๊ฐ€ ์ค‘์‹ฌ์ž…๋‹ˆ๋‹ค. +- ํ™•์ธ๋œ ๋Œ€ํ‘œ ๋ฌธ์„œ: + - `skill-calendar/README.md` + - `skill_email/README.md` + - `skill-slack/README.md` +- ์ฆ‰ ํ˜„์žฌ๋Š” ์Šคํ‚ฌ์ด ์‹คํ–‰ ์„œ๋น„์Šค๋กœ๋Š” ์กด์žฌํ•˜์ง€๋งŒ, ๊ณ„์•ฝ ๋ฌธ์„œ SSOT๋Š” ์•„์ง ์—†์Šต๋‹ˆ๋‹ค. + +### 2. `rb8001`์€ ์•„์ง ์Šคํ‚ฌ URL๊ณผ ์—”๋“œํฌ์ธํŠธ ๊ทœ์น™์„ ์ง์ ‘ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค +- `rb8001/app/router/router.py`์—์„œ `service_endpoints`๋Š” `email`, `news`, `slack`, `state`๋ฅผ ์ง์ ‘ ๊ฐ€์ง‘๋‹ˆ๋‹ค. +- ๊ฐ™์€ ํŒŒ์ผ์˜ `_get_service_url_for_skill()`๋Š” `SkillType.EMAIL`, `NEWS`, `SLACK`, `LLM`, `ANALYSIS`๋งŒ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. +- `_call_service()`๋Š” URL ๋ฌธ์ž์—ด๊ณผ ํฌํŠธ๊ฐ’์„ ๋ณด๊ณ  `skill-email`, `skill-news`, `skill-slack`๋ฅผ ํŒ๋ณ„ํ•˜๊ณ , ์•ก์…˜์— ๋”ฐ๋ผ ์‹ค์ œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ง์ ‘ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. +- ์˜ˆ: + - email: `send`, `messages`, `process` + - news: `/api/news/search` + - slack: `/api/v1/send`, `/api/v1/digest/`, `/api/v1/actions/extract` +- ์ฆ‰ ํ˜„์žฌ ๋ณธ์ฒด๋Š” "์–ด๋–ค ์Šคํ‚ฌ์„ ๊ณ ๋ฅผ์ง€"๋ฟ ์•„๋‹ˆ๋ผ "๊ฐ ์Šคํ‚ฌ์„ ์–ด๋А URL๋กœ ์–ด๋–ค path์— ํ˜ธ์ถœํ• ์ง€"๊นŒ์ง€ ์ง์ ‘ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +### 3. ์บ˜๋ฆฐ๋”๋Š” ์ผ๋ฐ˜ ์Šคํ‚ฌ ๋งคํ•‘๊ณผ ๋ณ„๋„ ๊ฒฝ๋กœ๋กœ ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค +- `rb8001/app/services/skills/calendar_skill.py`๋Š” `SKILL_CALENDAR_URL`์„ ์ฝ๊ณ  `/api/events`๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. +- `rb8001/app/router/calendar_handler.py`๋Š” `CalendarSkill()`์„ ์ง์ ‘ ์ƒ์„ฑํ•ด `get_events`, `create_event`, `delete_event`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. +- ์ฆ‰ ์บ˜๋ฆฐ๋”๋Š” `router.py`์˜ ์ผ๋ฐ˜ skill routing ํ‘œ์ค€ ๋ฐ–์— ์žˆ๋Š” ๋ณ„๋„ ๊ฒฐํ•ฉ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. + +### 4. ์˜๋„๋ถ„์„๊ณผ ์Šคํ‚ฌ์„ ํƒ์„ ์œ„ํ•œ typed model์˜ ๋ผˆ๋Œ€๋Š” ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค +- `rb8001/app/services/brain/intent/schemas.py`์—๋Š” `IntentGoal`, `ActionPlan`, `SkillSequence`๊ฐ€ `Pydantic BaseModel`๋กœ ์ •์˜๋ผ ์žˆ์Šต๋‹ˆ๋‹ค. +- `IntentGoal` ํ•„๋“œ: + - `category` + - `description` + - `confidence` + - `raw_intent` + - `context_hints` +- `DecisionEngine._build_intent_pipeline_sync()`์™€ `_build_intent_pipeline()`๋Š” `IntentAnalyzer -> ActionPlanner -> SkillSelector` 3๋‹จ๊ณ„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ `execution_plan["intent_pipeline"]`์— ๋ถ™์ž…๋‹ˆ๋‹ค. +- ์ฆ‰ `์˜๋„ -> ํ–‰๋™ -> ์Šคํ‚ฌ ํ›„๋ณด`๋ฅผ ๊ตฌ์กฐํ™”ํ•ด์„œ ๋‹ค๋ฃจ๋Š” ๊ณจ๊ฒฉ์€ ์ด๋ฏธ ์ฝ”๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. + +### 5. ํ•˜์ง€๋งŒ ํ˜„์žฌ typed model๋งŒ์œผ๋กœ๋Š” ์Šคํ‚ฌ ๊ณ„์•ฝ๊นŒ์ง€ ๋‹ฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค +- `ActionPlanner`๋Š” `IntentCategory`๋ฅผ ๋ณด๊ณ  `ActionType` ๋ชฉ๋ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. +- `SkillSelector`๋Š” `ActionPlan`์„ ๋ฐ›์•„ `"CALENDAR"`, `"EMAIL"`, `"TOOL"`, `"LLM"` ๊ฐ™์€ ๋‚ด๋ถ€ ์Šคํ‚ฌ๋ช…๊ณผ ์•ก์…˜๋ช…์œผ๋กœ๋งŒ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. +- `SkillSelector.available_skills`๋Š” ํ˜„์žฌ ๊ฐ€๋Šฅํ•œ ์•ก์…˜์„ ์ฝ”๋“œ ์ƒ์ˆ˜๋กœ ์ง์ ‘ ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +- ์ด ๊ตฌ์กฐ์—๋Š” ์•„๋ž˜ ๊ณ„์•ฝ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. + - ํ˜ธ์ถœ ์กฐ๊ฑด + - ๊ธˆ์ง€ ์กฐ๊ฑด + - ํ•„์ˆ˜ ์ž…๋ ฅ + - ์‹คํŒจ ๊ธฐ์ค€ + - ๊ถŒํ•œ/์Šน์ธ ์กฐ๊ฑด + - ๊ฒ€์ฆ ๋ฐฉ๋ฒ• + +### 6. ์˜๋„๋ถ„์„์„ ๋” ๊ตฌ์กฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํ–‰ ๋‹จ์„œ๋Š” ์ด๋ฏธ ๋ณ„๋„ ๊ฒฝ๋กœ์— ์žˆ์Šต๋‹ˆ๋‹ค +- `rb8001/app/services/llm/intent_parser.py`๋Š” `{"intent", "slots", "confidence", "clarify"}` JSON ๊ณ„์•ฝ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. +- ์ฆ‰ ํ˜„์žฌ ๋กœ๋น™ ๋‚ด๋ถ€์—๋Š” ์ด๋ฏธ ์ž์œ ์„œ์ˆ ์ด ์•„๋‹ˆ๋ผ ๊ตฌ์กฐํ™”๋œ ์˜๋„/์Šฌ๋กฏ ์ถœ๋ ฅ์„ ์ƒ์ƒํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. +- ๋‹ค๋งŒ ์ด ๊ณ„์•ฝ์€ `brain/intent/schemas.py`์˜ `IntentGoal`๊ณผ ์•„์ง ํ†ตํ•ฉ๋ผ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +### 7. ํ˜„์žฌ ์Šคํ‚ฌ ๋ฌธ์„œ ์ž์‚ฐ์€ ๊ณ„์•ฝ ๋ฌธ์„œ๋ผ๊ธฐ๋ณด๋‹ค README ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค +- `skill-calendar/README.md`๋Š” ํฌํŠธ, API ๊ฐœ์š”, ํ™˜๊ฒฝ๋ณ€์ˆ˜, ์‹คํ–‰ ์˜ˆ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. +- `skill_email/README.md`๋Š” ์—ญํ• , ์ฃผ์š” ์—”๋“œํฌ์ธํŠธ, ํ•„์ˆ˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜, ํ—ฌ์Šค์ฒดํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. +- `skill-slack/README.md`๋Š” ์—ญํ• , ์ผ๋ถ€ API, ํ•„์ˆ˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜, ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ด ์žˆ์Šต๋‹ˆ๋‹ค. +- ํ•˜์ง€๋งŒ ๊ณตํ†ต ํ˜•์‹์€ ์—†๊ณ , ์•„๋ž˜ ํ•ญ๋ชฉ์€ ์Šคํ‚ฌ๋งˆ๋‹ค ๋“ค์ญ‰๋‚ ์ญ‰ํ•ฉ๋‹ˆ๋‹ค. + - ์–ธ์ œ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€ + - ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋˜๋Š”์ง€ + - ์Šน์ธ ํ•„์š” ์—ฌ๋ถ€ + - ์‹คํŒจ ๋ถ„๋ฅ˜ + - ์™„๋ฃŒ ํŒ๋‹จ + - ๊ฒ€์ฆ ๋ฐฉ๋ฒ• + +## Interpretation + +### 1. ์˜๋„๋ถ„์„ typed contract๋Š” ์ƒˆ๋กœ ๋ฐœ๋ช…ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ธฐ์กด ๋‘ ๊ตฌ์กฐ๋ฅผ ํ•ฉ์น˜๋ฉด ๋ฉ๋‹ˆ๋‹ค +- ํ˜„์žฌ `IntentGoal`์€ ์ถ”์ƒ ์นดํ…Œ๊ณ ๋ฆฌ ์ค‘์‹ฌ์ž…๋‹ˆ๋‹ค. +- ํ˜„์žฌ `intent_parser.py`๋Š” `intent + slots + confidence + clarify` ์ค‘์‹ฌ์ž…๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ๋กœ๋น™์ด ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ์ตœ์†Œ ์˜๋„๋ถ„์„ ๊ณ„์•ฝ์€ ์•„๋ž˜์ฒ˜๋Ÿผ ํ•ฉ์น˜๋Š” ์ชฝ์ด ๊ฐ€์žฅ ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. + - `task_type`: ์ถ”์ƒ ์ž‘์—… ์„ฑ๊ฒฉ + - `goal`: ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์ตœ์ข… ๊ฒฐ๊ณผ + - `slots`: ๋‚ ์งœ/์‹œ๊ฐ„/๋Œ€์ƒ ๊ฐ™์€ ์ถ”์ถœ ์ž…๋ ฅ + - `candidate_skills`: ํ›„๋ณด ์Šคํ‚ฌ ๋ชฉ๋ก + - `needs_human_confirmation`: ์Šน์ธ ํ•„์š” ์—ฌ๋ถ€ + - `confidence`: ์‹ ๋ขฐ๋„ +- ๊ฒฐ๋ก ์ ์œผ๋กœ typed contract์˜ ์ตœ์†Œ ํ•„๋“œ๋Š” ์™„์ „ ์‹ ์„ค๋ณด๋‹ค `IntentGoal + intent_parser JSON`์˜ ๊ฒฐํ•ฉ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ํŽธ์ด ๋งž์Šต๋‹ˆ๋‹ค. + +### 2. 1์ฐจ `SKILL.md` ๋Œ€์ƒ์€ ์บ˜๋ฆฐ๋”, ์ด๋ฉ”์ผ, ์Šฌ๋ž™์ด ๊ฐ€์žฅ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค +- ์ด์œ : + - ํ˜„์žฌ `rb8001`์ด ์ง์ ‘ ํ˜ธ์ถœ ์„ธ๋ถ€๋ฅผ ๋งŽ์ด ์•Œ๊ณ  ์žˆ๋Š” ๋Œ€ํ‘œ ์Šคํ‚ฌ์ž…๋‹ˆ๋‹ค. + - ์„ธ ์Šคํ‚ฌ ๋ชจ๋‘ ๊ธฐ์กด README๊ฐ€ ์žˆ์–ด ๊ณ„์•ฝ ๋ฌธ์„œ๋กœ ๋Œ์–ด์˜ฌ๋ฆด ์žฌ๋ฃŒ๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. + - ์‚ฌ์šฉ ํ๋ฆ„ ์˜ˆ์‹œ๊ฐ€ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. + - `calendar`: ์กฐํšŒ/๋“ฑ๋ก/์‚ญ์ œ + - `email`: ์ฝ๊ธฐ/์“ฐ๊ธฐ + - `slack`: ์ „์†ก/๋‹ค์ด์ œ์ŠคํŠธ/์•ก์…˜ ์ถ”์ถœ +- `news`, `rag-file`, `publish`, `embedding`๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ธŒ๋ ˆ์ธ ์ „ํ™˜์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์ฒซ ์ƒ˜ํ”Œ๋กœ๋Š” ์œ„ ์„ธ ๊ฐœ๊ฐ€ ๋” ์ง์ ‘์ ์ž…๋‹ˆ๋‹ค. + +### 3. ๊ณตํ†ต ๊ณ„์•ฝ๊ณผ ๊ฐœ๋ณ„ ๊ณ„์•ฝ์˜ ๊ฒฝ๊ณ„๋„ ์ด๋ฏธ ๋ณด์ž…๋‹ˆ๋‹ค +- ๊ณตํ†ต ๊ณ„์•ฝ: + - ๋ชฉ์  + - ํ˜ธ์ถœ ์กฐ๊ฑด + - ๊ธˆ์ง€ ์กฐ๊ฑด + - ์ž…๋ ฅ ๊ณ„์•ฝ + - ์ถœ๋ ฅ ๊ณ„์•ฝ + - ๊ถŒํ•œ + - ์‹คํ–‰ ๋ฐฉ๋ฒ• + - ์‹คํŒจ ๊ธฐ์ค€ + - ์™„๋ฃŒ ๊ธฐ์ค€ + - ๊ฒ€์ฆ ๋ฐฉ๋ฒ• +- ๊ฐœ๋ณ„ ๊ณ„์•ฝ: + - `calendar`: ์‹œ๊ฐ„ ๋ฒ”์œ„, all-day ๊ทœ์น™, provider, ์žฌ์ธ์ฆ ํ•„์š” ์‹คํŒจ + - `email`: ์ˆ˜์‹ /๋ฐœ์‹  ๊ตฌ๋ถ„, ํ† ํฐ ํŒŒ์ผ, watch ๊ฐฑ์‹ , user_id ํ•„์ˆ˜ + - `slack`: channel/thread/message ๋Œ€์ƒ, ๋ด‡ ํ† ํฐ/ํ—ค๋”, ์ „์†ก/์š”์•ฝ/์•ก์…˜ ์ถ”์ถœ ๋ถ„๊ธฐ +- ์ฆ‰ ๊ณตํ†ต ํ‹€์€ `316_skill-contract-and-execution-principles.md`์— ์žˆ๊ณ , ์‹ค์ œ ์„œ๋น„์Šค๋ณ„ ๋ณ€ํ˜•๋งŒ ๊ฐ `SKILL.md`๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. + +### 4. ํ›„๋ณด ์Šคํ‚ฌ ์ถ•์†Œ ๊ธฐ์ค€์€ ์ด๋ฏธ ์ฝ”๋“œ์— ์ผ๋ถ€ ์žˆ๊ณ , ๊ณ„์•ฝ ๊ธฐ์ค€์œผ๋กœ ๋Œ์–ด์˜ฌ๋ฆฌ๋ฉด ๋ฉ๋‹ˆ๋‹ค +- ํ˜„์žฌ๋„ `IntentCategory -> ActionType -> SkillSequence` ๋ณ€ํ™˜์ด ์žˆ์œผ๋ฏ€๋กœ "์˜๋„์— ๋”ฐ๋ผ ํ›„๋ณด๋ฅผ ์ขํžŒ๋‹ค"๋Š” ์ƒ๊ฐ ์ž์ฒด๋Š” ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. +- ๋‹ค๋งŒ ์ง€๊ธˆ์€ ํ›„๋ณด ์ถ•์†Œ ๊ธฐ์ค€์ด ๋Œ€๋ถ€๋ถ„ ์ฝ”๋“œ ์ƒ์ˆ˜์™€ ๋ฌธ์ž์—ด ๊ทœ์น™์— ๋จธ๋ฌผ๋Ÿฌ ์žˆ์Šต๋‹ˆ๋‹ค. +- ๋ฆฌ์„œ์น˜ ๊ธฐ์ค€์œผ๋กœ ์ตœ์†Œ ์ถ•์†Œ ๊ธฐ์ค€์€ ์•„๋ž˜ ๋„ค ๊ฐ€์ง€๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. + - ์ž‘์—… ์„ฑ๊ฒฉ(`task_type`) + - ํ•„์ˆ˜ ๋Šฅ๋ ฅ(`required_capabilities`) + - ๊ถŒํ•œ/์Šน์ธ ํ•„์š” ์—ฌ๋ถ€ + - ๊ธˆ์ง€ ์กฐ๊ฑด +- ์ด ๋„ค ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉด ์ „์ฒด ์Šคํ‚ฌ ๋ฌธ์„œ๋ฅผ ์ฃผ์ž…ํ•˜์ง€ ์•Š๊ณ ๋„ "์ด๋ฒˆ ์š”์ฒญ์—์„œ ์ฝ์–ด์•ผ ํ•  ํ›„๋ณด ์Šคํ‚ฌ"์„ ์ขํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +### 5. ํ˜„์žฌ ๊ฐ€์žฅ ํฐ ๊ตฌ์กฐ ๋ฌธ์ œ๋Š” ์Šคํ‚ฌ ์„ ํƒ๋ณด๋‹ค ์Šคํ‚ฌ ๊ณ„์•ฝ ์†Œ์œ ๊ถŒ์ด ์ฝ”๋“œ์— ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค +- ์ง€๊ธˆ๋„ `DecisionEngine`์€ ํ›„๋ณด ์Šคํ‚ฌ ๋น„์Šทํ•œ ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ํ•˜์ง€๋งŒ ์ตœ์ข… ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ `router.py`์™€ `calendar_skill.py`๊ฐ€ ํ˜ธ์ถœ ๊ฒฝ๋กœ, ์—”๋“œํฌ์ธํŠธ, ํ—ค๋”, ๊ธฐ๋ณธ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ ๋™์ž‘์„ ์ง์ ‘ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ์ด๋ฒˆ ๋ฌธ์ œ์˜ ๋ณธ์งˆ์€ "์Šคํ‚ฌ ์„ ํƒ ๊ธฐ๋Šฅ์ด ์ „ํ˜€ ์—†๋‹ค"๊ฐ€ ์•„๋‹ˆ๋ผ, "์Šคํ‚ฌ ๊ณ„์•ฝ์ด ๋ฌธ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ ๋ถ„๊ธฐ ์•ˆ์— ๋ฌปํ˜€ ์žˆ๋‹ค"์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. + +## Unresolved +- `task_type`์™€ `goal`์„ ์–ด๋–ค Enum/๋ฌธ์ž์—ด ์ฒด๊ณ„๋กœ ๊ณ ์ •ํ• ์ง€ +- `candidate_skills`๋ฅผ ๋‚ด๋ถ€ ์Šคํ‚ฌ๋ช…(`CALENDAR`) ๊ธฐ์ค€์œผ๋กœ ๋‘˜์ง€, ์ €์žฅ์†Œ/์„œ๋น„์Šค๋ช…(`skill-calendar`) ๊ธฐ์ค€์œผ๋กœ ๋‘˜์ง€ +- `needs_human_confirmation`๋ฅผ ์˜๋„๋ถ„์„ ๋‹จ๊ณ„์—์„œ ๋ฐ”๋กœ ํŒ๋‹จํ• ์ง€, ์Šคํ‚ฌ ๊ณ„์•ฝ๊ณผ ๊ฒฐํ•ฉํ•ด์„œ ํ›„๋‹จ์—์„œ ์˜ฌ๋ฆด์ง€ +- `news`, `rag-file`, `publish`, `embedding`๋ฅผ 1์ฐจ์— ํ•จ๊ป˜ ๋„ฃ์„์ง€ 2์ฐจ๋กœ ๋ฏธ๋ฃฐ์ง€ + +## ๊ฒฐ๋ก  +- ํ˜„์žฌ ๋กœ๋น™์€ ์ด๋ฏธ `Pydantic` ๊ธฐ๋ฐ˜ ์˜๋„๋ถ„์„ ๋ชจ๋ธ๊ณผ 3๋‹จ๊ณ„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ผ๋ถ€ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์˜๋„๋ถ„์„ typed contract๋ฅผ ๋„์ž…ํ•  ๊ธฐ์ˆ ์  ๋ฐ”ํƒ•์€ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. +- ํ˜„์žฌ ๋กœ๋น™์—๋Š” `SKILL.md`๊ฐ€ ํ•˜๋‚˜๋„ ์—†๊ณ , ์Šคํ‚ฌ ๊ณ„์•ฝ์€ `README`์™€ `rb8001` ์ฝ”๋“œ ๋ถ„๊ธฐ ์•ˆ์— ํฉ์–ด์ ธ ์žˆ์œผ๋ฏ€๋กœ, ๋ณธ์ฒด๋ฅผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ธŒ๋ ˆ์ธ์œผ๋กœ ๋ฐ”๊พธ๋ ค๋ฉด ๊ณ„์•ฝ ๋ฌธ์„œ SSOT๊ฐ€ ๋จผ์ € ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. +- 1์ฐจ `SKILL.md` ๋Œ€์ƒ์€ `skill-calendar`, `skill_email`, `skill-slack`์ด ๊ฐ€์žฅ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค. +- ๋‹ค์Œ `plans`๋Š” ์•„๋ž˜๋ฅผ ๊ณ ์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. + - ์˜๋„๋ถ„์„ ์ตœ์†Œ typed contract ํ•„๋“œ + - 1์ฐจ `SKILL.md` ๋Œ€์ƒ 3๊ฐœ + - ๊ณตํ†ต ๊ณ„์•ฝ ํ…œํ”Œ๋ฆฟ + - `rb8001`์—์„œ ํ›„๋ณด ์Šคํ‚ฌ ๊ณ„์•ฝ๋งŒ ์ฝ๋„๋ก ๋ฐ”๊พธ๋Š” ๋กœ๋” ๊ฒฝ๊ณ„ + +## ํ•œ ์ค„ ๊ฒฐ๋ก  +- ์ด ๋ฌธ์ œ๋Š” ์ƒˆ ๊ฐœ๋… ๋ฐœ๋ช…์ด ์•„๋‹ˆ๋ผ, ์ด๋ฏธ ์žˆ๋Š” `typed intent skeleton`๊ณผ `์ง์ ‘ ํ˜ธ์ถœ ์ค‘์ธ ์Šคํ‚ฌ๋“ค` ์‚ฌ์ด์— `SKILL.md ๊ณ„์•ฝ ๊ณ„์ธต`์„ ๋„ฃ์–ด `rb8001`์˜ ์—ญํ• ์„ ์‹คํ–‰๊ธฐ์—์„œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ธŒ๋ ˆ์ธ์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์ž‘์—…์œผ๋กœ ํ•ด์„ํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. diff --git a/journey/research/README.md b/journey/research/README.md index 78aba40..87fad06 100644 --- a/journey/research/README.md +++ b/journey/research/README.md @@ -13,6 +13,7 @@ - [์ž๊ฐ€์ˆ˜์ • ์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ Workspace CLI ๊ฒ€์ฆ ๋ฆฌ์„œ์น˜ (260311)](./260311_์ž๊ฐ€์ˆ˜์ •_์—์ด์ „ํŠธ_ํ”„๋ ˆ์ž„์›Œํฌ_๋ฐ_workspace_cli_๊ฒ€์ฆ_๋ฆฌ์„œ์น˜.md) - [NAVER WORKS ๋ธŒ๋ฆฌํ•‘ ์ธ์‚ฌ์ดํŠธ ์„œ๋‘ ๋ˆ„์ถœ ์ข…๋ฃŒ ๋ฆฌ์„œ์น˜ (260311)](./260311_naverworks_briefing_insight_preamble_leak_closure_research.md) - [์ธ๊ฐ„ ์—…๋ฌดํ–‰๋™๊ณผ ์›์ž์Šคํ‚ฌ ๋ถ„๋ฅ˜ ๋ฆฌ์„œ์น˜ (260312)](./260312_์ธ๊ฐ„_์—…๋ฌดํ–‰๋™๊ณผ_์›์ž์Šคํ‚ฌ_๋ถ„๋ฅ˜_๋ฆฌ์„œ์น˜.md) +- [์Šคํ‚ฌ ๊ณ„์•ฝ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฆฌ์„œ์น˜ (260314)](./260314_์Šคํ‚ฌ_๊ณ„์•ฝ_๋ฌธ์„œ_๊ธฐ๋ฐ˜_์ปจํ…์ŠคํŠธ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜_๋ฆฌ์„œ์น˜.md) ### [๊ธฐ์–ต(Memory)](./memory/README.md) - ์žฅ๋‹จ๊ธฐ ๊ธฐ์–ต ๋ฉ”์ปค๋‹ˆ์ฆ˜