From 572c1ed4335a1fbfbb97e4309a44058b34f29e6a Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Wed, 11 Mar 2026 17:30:48 +0900 Subject: [PATCH] docs: add agent framework and workspace cli research --- ...Œํฌ_๋ฐ_workspace_cli_๊ฒ€์ฆ_๋ฆฌ์„œ์น˜.md | 219 ++++++++++++++++++ journey/research/README.md | 1 + 2 files changed, 220 insertions(+) create mode 100644 journey/research/260311_์ž๊ฐ€์ˆ˜์ •_์—์ด์ „ํŠธ_ํ”„๋ ˆ์ž„์›Œํฌ_๋ฐ_workspace_cli_๊ฒ€์ฆ_๋ฆฌ์„œ์น˜.md diff --git a/journey/research/260311_์ž๊ฐ€์ˆ˜์ •_์—์ด์ „ํŠธ_ํ”„๋ ˆ์ž„์›Œํฌ_๋ฐ_workspace_cli_๊ฒ€์ฆ_๋ฆฌ์„œ์น˜.md b/journey/research/260311_์ž๊ฐ€์ˆ˜์ •_์—์ด์ „ํŠธ_ํ”„๋ ˆ์ž„์›Œํฌ_๋ฐ_workspace_cli_๊ฒ€์ฆ_๋ฆฌ์„œ์น˜.md new file mode 100644 index 0000000..c64e33b --- /dev/null +++ b/journey/research/260311_์ž๊ฐ€์ˆ˜์ •_์—์ด์ „ํŠธ_ํ”„๋ ˆ์ž„์›Œํฌ_๋ฐ_workspace_cli_๊ฒ€์ฆ_๋ฆฌ์„œ์น˜.md @@ -0,0 +1,219 @@ +--- +tags: [research, agents, langgraph, pydantic-ai, gemini-cli, workspace, self-improvement] +--- + +# ์ž๊ฐ€์ˆ˜์ • ์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ Workspace CLI ๊ฒ€์ฆ ๋ฆฌ์„œ์น˜ + +## ๋ชฉ์  +- ๋กœ๋น™์ด `์Šฌ๋ž™/ํ”„๋ก ํŠธ ๋Œ€ํ™” + ์ด๋ฉ”์ผ/๋‰ด์Šค/๊ฒ€์ƒ‰ + ํ–ฅํ›„ ์ฝ”๋“œ ์ˆ˜์ •/git ์ž‘์—…`๊นŒ์ง€ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์–ด๋–ค ๊ณ„์ธต์„ ์–ด๋–ค ๋„๊ตฌ๋กœ ๋งก๊ธฐ๋Š” ๊ฒŒ ๋งž๋Š”์ง€ ๊ณต์‹ ๋ฌธ์„œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. +- ์•„๋ž˜ Gemini ๋Œ€ํ™”์—์„œ ๋‚˜์˜จ ์ฃผ์žฅ ์ค‘ ์‚ฌ์‹ค๊ณผ ๊ณผ์žฅ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. +- ํ˜„์žฌ `rb8001` ์ฝ”๋“œ๊ฐ€ ์ด๋ฏธ ๋ฌด์—‡์„ ์“ฐ๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด, ๋ฐ”๋กœ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ ํŒ๋‹จ ๊ทผ๊ฑฐ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค. + +## ์ž…๋ ฅ ์งˆ๋ฌธ +- `Pydantic AI`๋ฅผ ์“ฐ๋ฉด ๋น„์šฉ์ด ํฌ๊ฒŒ ๋Š˜์–ด๋‚˜๋Š”๊ฐ€ +- `LangGraph`๋Š” ์ •๋ง ์ด์ ์ด ๊ฑฐ์˜ ์—†๋Š”๊ฐ€ +- `Gemini CLI`๋งŒ์œผ๋กœ ์ž๊ฐ€์ˆ˜์ •/git ์ž‘์—…์ด ๊ฐ€๋Šฅํ•œ๊ฐ€ +- `Google Workspace CLI` ๋˜๋Š” Workspace์šฉ ๊ณต์‹ ํˆด๋ง์€ ๋ฌด์—‡์ด ์‹ค์ œ ๊ธฐ์ค€์ธ๊ฐ€ +- ํ˜„์žฌ ๋กœ๋น™ ์ฝ”๋“œ์—์„œ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์ง€์ ์€ ๋ฌด์—‡์ธ๊ฐ€ + +## ์š”์•ฝ ๊ฒฐ๋ก  +1. `LangGraph๋Š” ์ด์ ์ด ๊ฑฐ์˜ ์—†๋‹ค`๋Š” ์ฃผ์žฅ์€ ๊ณผ์žฅ์ž…๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ ๊ธฐ์ค€์œผ๋กœ LangGraph์˜ ํ•ต์‹ฌ ๊ฐ€์น˜๋Š” `stateful multi-actor workflow`, `persistence`, `interrupt`, `durable execution`์— ์žˆ๊ณ , ๋กœ๋น™์€ ์ด๋ฏธ ์ด ๊ฐ•์ ์„ ์‹ค์ œ๋กœ ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +2. `Pydantic AI๋Š” ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค`๋Š” ๋งž์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ `๋น„์šฉ ๊ฑฐ์˜ ์ฐจ์ด ์—†์Œ`์€ ์ผ๋ฐ˜๋ก ์ผ ๋ฟ ๋ณด์žฅ ๋ฌธ์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ถœ๋ ฅ ๊ฒ€์ฆ/์žฌ์‹œ๋„๊ฐ€ ์žˆ์œผ๋ฉด ํ† ํฐ ๋น„์šฉ์€ ์‹ค์ œ๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +3. `Gemini CLI`๋Š” ๊ณต์‹ ์˜คํ”ˆ์†Œ์Šค AI agent CLI์ด๋ฉฐ, `GEMINI.md`, headless ๋ชจ๋“œ, sandbox/approval, tool/MCP ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ `rb8001`์˜ Gemini CLI ํ˜ธ์ถœ์€ ์ด๋Ÿฐ ์•ˆ์ „์žฅ์น˜ ์—†์ด ๋‹จ์ˆœ `gemini -p ` ํ˜ธ์ถœ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. +4. Google Workspace ์ชฝ์€ `Google Workspace Developer Tools`๊ฐ€ ๊ณต์‹ ์ง„์ž…์ ์ด๋ฉฐ, ๊ณต์‹ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ๋Š” `Gemini CLI extension`, `MCP`, `Apps Script CLI`, `Workspace APIs`๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. pasted ๋‹ต๋ณ€์ฒ˜๋Ÿผ ํŠน์ • ์ €์žฅ์†Œ ์ด๋ฆ„ ํ•˜๋‚˜๋งŒ์œผ๋กœ SSOT๋ฅผ ์žก๋Š” ๊ฒƒ์€ ๋ถ€์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. +5. ๋กœ๋น™์˜ ๊ถŒ์žฅ ๊ตฌ์กฐ๋Š” `LangGraph ์ œ๊ฑฐ`๊ฐ€ ์•„๋‹ˆ๋ผ `์—ญํ•  ๋ถ„๋ฆฌ`์ž…๋‹ˆ๋‹ค. ์žฅ๊ธฐ ์ƒํƒœ/์ธํ„ฐ๋ŸฝํŠธ ์›Œํฌํ”Œ๋กœ๋Š” LangGraph ์œ ์ง€, typed I/O๋Š” Pydantic ๊ณ„์ธต์œผ๋กœ ๋ณด๊ฐ•, ์ฝ”๋“œ์ˆ˜์ •/git ์ž‘์—…์€ ์Šน์ธยท๊ฒฉ๋ฆฌ๋œ operator agent๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ์ชฝ์ด ๋งž์Šต๋‹ˆ๋‹ค. + +## ๊ณต์‹ ์†Œ์Šค ๊ฒ€์ฆ + +### 1. Pydantic AI +- ๊ณต์‹ ๋ฌธ์„œ: +- ๊ณต์‹ GitHub: +- ๋ผ์ด์„ ์Šค: MIT (`LICENSE` ๊ธฐ์ค€) +- ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๋‚ด์„ธ์šฐ๋Š” ํ•ต์‹ฌ: + - type-safe agent + - tool calling + - structured output + - output validation / retry (`ModelRetry`, output validators) + +### ๊ฒ€์ฆ ํŒ๋‹จ +- `๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค`๋ผ๋Š” ๋ง์€ ๋งž์Šต๋‹ˆ๋‹ค. +- `๋กœ๊ทธํŒŒ์ด์–ด๋ฅผ ์•ˆ ์“ฐ๋ฉด ๋น„์šฉ 0`๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด ๊ธฐ์ค€์œผ๋กœ๋Š” ๋Œ€์ฒด๋กœ ๋งž์Šต๋‹ˆ๋‹ค. +- ๋‹ค๋งŒ `LLM ๋น„์šฉ์€ ๊ฑฐ์˜ ์ฐจ์ด ์—†์Œ`์€ SSOT ๋ฌธ์žฅ์œผ๋กœ ์“ฐ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. + - ์ด์œ : Pydantic AI๋Š” ์ถœ๋ ฅ ๊ฒ€์ฆ ์‹คํŒจ ์‹œ ์žฌ์‹œ๋„๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ์žฌ์‹œ๋„๋Š” ๊ณง ์ถ”๊ฐ€ ๋ชจ๋ธ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. + - ๋”ฐ๋ผ์„œ ๋น„์šฉ์€ `0 ๋˜๋Š” ๋ฏธ๋ฏธ`๊ฐ€ ์•„๋‹ˆ๋ผ `๊ฒ€์ฆ ์„ฑ๊ณต๋ฅ ์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ`์ด ์ •ํ™•ํ•œ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. +- ๊ฒฐ๋ก : Pydantic AI๋Š” `์•ˆ์ •์„ฑ ๊ณ„์ธต`์œผ๋กœ ์œ ์˜๋ฏธํ•˜์ง€๋งŒ, `์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์ „์ฒด ๋Œ€์ฒด`๋‚˜ `๋น„์šฉ ๋ฌด์‹œ ๊ฐ€๋Šฅ` ๊ฐ™์€ ํ‘œํ˜„์€ ๊ณผ์žฅ์ž…๋‹ˆ๋‹ค. + +### 2. LangGraph +- ๊ณต์‹ ๋ฌธ์„œ: +- ๊ณต์‹ ๊ฐœ์š” ๋ฌธ์„œ๊ฐ€ ๊ฐ•์กฐํ•˜๋Š” ํ•ต์‹ฌ: + - long-running, stateful workflows + - cycles + - persistence / durable execution + - human-in-the-loop / interrupts + - memory + +### ๊ฒ€์ฆ ํŒ๋‹จ +- `์ด์ ์ด ์ „ํ˜€ ์—†๋‹ค`๋Š” ๋ง์€ ๊ณต์‹ ์ œํ’ˆ ๊ฐ€์น˜์™€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. +- LangGraph์˜ ์ง„์งœ ๊ฐ•์ ์€ ๋‹จ์ˆœ ์งˆ์˜์‘๋‹ต์ด ์•„๋‹ˆ๋ผ: + - ์ค‘๊ฐ„ ์ƒํƒœ ์ €์žฅ + - ์‚ฌ๋žŒ ํ™•์ธ ํ›„ ์žฌ๊ฐœ + - ๋‹ค๋‹จ๊ณ„ ์กฐ๊ฑด ๋ถ„๊ธฐ + - ์‹คํŒจ ํ›„ ๊ฐ™์€ thread ์ƒํƒœ์—์„œ ์žฌ์‹คํ–‰ + ์— ์žˆ์Šต๋‹ˆ๋‹ค. +- ๋ฐ˜๋Œ€๋กœ ๋‹จ์ ๋„ ์‹ค์ œ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค. + - ์„ ํ˜• ์ฝ”๋“œ๋ณด๋‹ค ๋””๋ฒ„๊น… ๋‚œ์ด๋„๊ฐ€ ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Œ + - ๋‹จ์ˆœ request/response์—” ๊ณผํ•จ + - ํŒ€์ด ์ƒํƒœ ๋ชจ๋ธ๋ง์„ ๋ชปํ•˜๋ฉด ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ณผ์„ค๊ณ„๋˜๊ธฐ ์‰ฌ์›€ +- ๊ฒฐ๋ก : `LangGraph ๋น„์ถ”์ฒœ`์ด ์•„๋‹ˆ๋ผ `LangGraph๋ฅผ ์จ์•ผ ํ•  ๋ฌธ์ œ์™€ ์“ฐ์ง€ ๋ง์•„์•ผ ํ•  ๋ฌธ์ œ๋ฅผ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•จ`์ด ๋งž์Šต๋‹ˆ๋‹ค. + +### 3. Gemini CLI +- ๊ณต์‹ GitHub: +- ๊ณต์‹ ๋ฌธ์„œ: +- ๊ณต์‹ ๋ฌธ์„œ: +- ๊ณต์‹ ๋ฌธ์„œ: +- ๊ณต์‹ ๋ฌธ์„œ: + +### ๊ฒ€์ฆ ํŒ๋‹จ +- `Gemini CLI๋กœ ์ฝ”๋“œ ์ˆ˜์ •/git ์ž‘์—… ๊ฐ€๋Šฅ`์€ ๋ฐฉํ–ฅ์ƒ ๋งž์Šต๋‹ˆ๋‹ค. +- ๊ณต์‹ ๋ฌธ์„œ ๊ธฐ์ค€ Gemini CLI๋Š” ๋‹ค์Œ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. + - `GEMINI.md` context files + - headless/script mode + - workspace context + - approvals / sandboxing / trusted folders + - MCP/tool integration +- ์ฆ‰ `์—์ด์ „ํŠธํ˜• ์ฝ”๋“œ ์ž‘์—…๊ธฐ`๋กœ๋Š” ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ๋‹ค๋งŒ `์ปจํ…์ŠคํŠธ ์ฃผ์ž… ์—†์ด๋„ ์ž˜ ๋œ๋‹ค`๋Š” ์‹์˜ ๋‚™๊ด€์€ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. + - ๊ณต์‹ ๋ฌธ์„œ ์Šค์Šค๋กœ `context`์™€ `workspace` ์„ค์ •์„ ๋ณ„๋„ ์„น์…˜์œผ๋กœ ๋‘ก๋‹ˆ๋‹ค. + - ์ฆ‰ ์•ˆ์ „ํ•œ ์‚ฌ์šฉ ์ „์ œ๋Š” `GEMINI.md + workspace scope + approval/sandbox`์ž…๋‹ˆ๋‹ค. + +### 4. Google Workspace ๊ณต์‹ ํˆด๋ง +- ๊ณต์‹ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ: +- ๊ณต์‹ Codelab: +- ๊ณต์‹ ์•ˆ๋‚ด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” GitHub ์กฐ์ง/์ €์žฅ์†Œ: + - `googleworkspace/developer-tools` + - `gemini-cli-extensions/workspace` + +### ๊ฒ€์ฆ ํŒ๋‹จ +- `Google Workspace CLI๊ฐ€ ๋ฉฐ์น  ์ „์— ๋‚˜์™”๋‹ค`๋Š” ๋ฐฉํ–ฅ์€ ์ผ๋ถ€ ๋งž์„ ์ˆ˜ ์žˆ์œผ๋‚˜, SSOT๋Š” ์ €์žฅ์†Œ ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ ๊ณต์‹ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. +- ๊ณต์‹ ๋ฌธ์„œ๋Š” `Google Workspace Developer Tools`๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉฐ, Gemini CLI extension/MCP/CLI ์‚ฌ์šฉ ํ๋ฆ„์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. +- pasted ๋‹ต๋ณ€์˜ `googleworkspace/cli` ๋‹จ์ผ ์ €์žฅ์†Œ URL์€ ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ์ง์ ‘ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ธฐ์ค€ ๊ฒฝ๋กœ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ๊ฒฐ๋ก : Google Workspace ํˆด๋ง์„ ๋„์ž…ํ•  ๋•Œ๋Š” `developers.google.com/workspace/...`๋ฅผ 1์ฐจ SSOT๋กœ ์‚ผ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +## Gemini ๋‹ต๋ณ€ ๊ฒ€์ฆํ‘œ + +| ์ฃผ์žฅ | ํŒ๋‹จ | ๊ทผ๊ฑฐ | +|---|---|---| +| Pydantic AI๋Š” ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค๋‹ค | ๋Œ€์ฒด๋กœ ๋งž์Œ | ๊ณต์‹ GitHub, MIT | +| Pydantic AI๋Š” ๋น„์šฉ์ด ๊ฑฐ์˜ ์•ˆ ๋“ ๋‹ค | ๊ณผ์žฅ | ๊ฒ€์ฆ ์‹คํŒจ/์žฌ์‹œ๋„๋Š” ์ถ”๊ฐ€ ํ˜ธ์ถœ ๋น„์šฉ | +| LangGraph๋Š” ๊ฑฐ์˜ ์“ธ๋ชจ์—†๋‹ค | ํ‹€๋ฆผ/๊ณผ์žฅ | ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ persistence, interrupt, cycles๋ฅผ ํ•ต์‹ฌ ๊ฐ€์น˜๋กœ ์ œ์‹œ | +| Gemini CLI๋กœ ์ž๊ฐ€์ˆ˜์ •/git ์ž‘์—… ๊ฐ€๋Šฅ | ๋งž์Œ | ๊ณต์‹ ์˜คํ”ˆ์†Œ์Šค agent CLI, headless/context/tooling ๋ฌธ์„œ ์กด์žฌ | +| ์ปจํ…์ŠคํŠธ ์—†์ด Gemini CLI ์“ฐ๋ฉด ์œ„ํ—˜ํ•˜๋‹ค | ๋งž์Œ | ๊ณต์‹ docs๊ฐ€ context/workspace/GEMINI.md๋ฅผ ๋ณ„๋„ ์ง€์› | +| Google Workspace CLI ์ฃผ์†Œ ํ•˜๋‚˜๋งŒ ์•Œ๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค | ๋ถ€์ •ํ™• | ๊ณต์‹ ๊ธฐ์ค€์€ Workspace Developer Tools ๋ฌธ์„œ์™€ ์—ฐ๊ฒฐ ์ €์žฅ์†Œ | + +## ํ˜„์žฌ ๋กœ๋น™ ์ฝ”๋“œ ์ƒํƒœ + +### 1. LangGraph๋Š” ์ด๋ฏธ ํ•ต์‹ฌ ๊ฒฝ๋กœ์—์„œ ์‹ค์‚ฌ์šฉ ์ค‘ +- ์ฝœ๋“œ๋ฉ”์ผ ์›Œํฌํ”Œ๋กœ๋Š” `interrupt`์™€ checkpoint๋ฅผ ์ „์ œ๋กœ ์„ค๊ณ„๋ผ ์žˆ์Šต๋‹ˆ๋‹ค. + - [coldmail_workflow.py](/home/admin/robeing/rb8001/app/services/workflows/coldmail_workflow.py#L416) +- ์•„์นจ ํ—ค๋“œ๋ผ์ธ๋„ SQLite checkpointer ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. + - [headlines_workflow.py](/home/admin/robeing/rb8001/app/services/workflows/headlines_workflow.py#L196) +- `docker-compose.yml`์—๋„ LangGraph ์ƒํƒœ ์ €์žฅ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋ช…์‹œ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค. + - [docker-compose.yml](/home/admin/robeing/rb8001/docker-compose.yml#L77) + +### 2. Gemini CLI๋Š” ์ด๋ฏธ ์—ฐ๊ฒฐ๋ผ ์žˆ์ง€๋งŒ ์•ˆ์ „ํ•œ operator ๋ชจ๋“œ๊ฐ€ ์•„๋‹˜ +- ํ˜„์žฌ ๊ตฌํ˜„์€ ๋‹จ์ˆœ subprocess๋กœ `gemini -m -p `๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. + - [gemini_handler.py](/home/admin/robeing/rb8001/app/services/llm/gemini_handler.py#L559) +- ์—ฌ๊ธฐ์—๋Š” ํ˜„์žฌ ๋‹ค์Œ์ด ์—†์Šต๋‹ˆ๋‹ค. + - `GEMINI.md` ์ฃผ์ž… ๋ณด์žฅ + - repo/workspace scope ์ œํ•œ + - diff preview ์Šน์ธ ์ ˆ์ฐจ + - git command allowlist + - branch/commit/push ์ •์ฑ… ๊ณ„์ธต +- ์ฆ‰ ํ˜„์žฌ ์—ฐ๊ฒฐ์€ `LLM CLI caller`์ด์ง€ `์•ˆ์ „ํ•œ ์ฝ”๋“œ์ˆ˜์ • ์—์ด์ „ํŠธ`๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. + +### 3. ์ž๊ธฐ๊ฐœ์„ ์€ DB/๋กœ๊ทธ ๊ณ„์ธต๊นŒ์ง€๋งŒ ์žˆ์Œ +- `self_improvement_endpoint.py`๋Š” policy version๊ณผ self improvement run ์ €์žฅ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + - [self_improvement_endpoint.py](/home/admin/robeing/rb8001/app/router/self_improvement_endpoint.py#L44) +- `message_tracking_service.py`๋Š” message flow artifacts๋ฅผ DB์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. + - [message_tracking_service.py](/home/admin/robeing/rb8001/app/services/message_tracking_service.py#L49) +- ํ•˜์ง€๋งŒ ํ˜„์žฌ๋Š” `์ฝ”๋“œ ๋ถ„์„ -> ์ˆ˜์ • -> ํ…Œ์ŠคํŠธ -> git branch -> commit -> push` operator loop๋Š” ์—†์Šต๋‹ˆ๋‹ค. + +## ์ง€๊ธˆ ํ’€์–ด์•ผ ํ•˜๋Š” ์‹ค์ œ ๋ฌธ์ œ + +### ๋ฌธ์ œ 1. ๋„๊ตฌ ์„ ํƒ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฑ…์ž„ ๋ถ„๋ฆฌ ๋ฌธ์ œ๊ฐ€ ํ•ต์‹ฌ +- ํ˜„์žฌ ์งˆ๋ฌธ์€ `LangGraph vs Pydantic AI vs Gemini CLI`์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ ๋ฌธ์ œ๋Š” ๋‹ค์Œ์ž…๋‹ˆ๋‹ค. + - ์–ด๋–ค ๊ณ„์ธต์ด `๋Œ€ํ™” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜`์„ ๋งก๋Š”๊ฐ€ + - ์–ด๋–ค ๊ณ„์ธต์ด `typed validation`์„ ๋งก๋Š”๊ฐ€ + - ์–ด๋–ค ๊ณ„์ธต์ด `์ฝ”๋“œ์ˆ˜์ •/git operator`๋ฅผ ๋งก๋Š”๊ฐ€ + +### ๋ฌธ์ œ 2. ํ˜„์žฌ ๊ฐ€์žฅ ํฐ ๋ฆฌ์Šคํฌ๋Š” Gemini CLI์˜ ๋ฌด๋งฅ๋ฝ/๋ฌด๊ฐ€๋“œ ํ˜ธ์ถœ +- ๋กœ๋น™์€ ์ด๋ฏธ Gemini CLI๋ฅผ ํ˜ธ์ถœํ•˜์ง€๋งŒ, agent-safe ๊ตฌ์กฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. +- ์ด ์ƒํƒœ์—์„œ ์ฝ”๋“œ์ˆ˜์ •/git๊นŒ์ง€ ๋ถ™์ด๋ฉด ๋‹ค์Œ ๋ฆฌ์Šคํฌ๊ฐ€ ํฝ๋‹ˆ๋‹ค. + - ์ž˜๋ชป๋œ ํŒŒ์ผ ์ˆ˜์ • + - ํ”„๋กœ์ ํŠธ ๊ทœ์น™ ๋ฌด์‹œ + - ์˜๋„ํ•˜์ง€ ์•Š์€ git add/commit/push + - repo ๊ฒฝ๊ณ„ ์นจ๋ฒ” + +### ๋ฌธ์ œ 3. LangGraph๋ฅผ ์ œ๊ฑฐํ•  ์ด์œ ๋ณด๋‹ค ๋‚จ๊ฒจ์•ผ ํ•  ์ด์œ ๊ฐ€ ๋” ๋งŽ์Œ +- ์ฝœ๋“œ๋ฉ”์ผ์ฒ˜๋Ÿผ `์‚ฌ๋žŒ ํ™•์ธ -> ์žฌ๊ฐœ`๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ๋กœ๋Š” LangGraph ๊ณต์‹ ๊ฐ•์ ๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. +- headlines/web_search์ฒ˜๋Ÿผ stateful multi-step flow๋„ ์ด๋ฏธ ์ž๋ฆฌ์žก์•˜์Šต๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ `LangGraph ์ „๋ฉด ์ฒ ๊ฑฐ`๋Š” ํ˜„์žฌ ๊ตฌ์กฐ์™€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +## ๊ถŒ์žฅ ์•„ํ‚คํ…์ฒ˜ + +### A. ๋Œ€ํ™”/์„œ๋น„์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ +- ์œ ์ง€: + - ํ˜„์žฌ `LangGraph` ๊ธฐ๋ฐ˜์˜ ์žฅ๊ธฐ ์ƒํƒœ/์ธํ„ฐ๋ŸฝํŠธ ์›Œํฌํ”Œ๋กœ +- ๊ธฐ์ค€: + - `interrupt`, checkpoint, loop, resume๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ๋กœ๋งŒ LangGraph ์œ ์ง€ + - ๋‹จ์ˆœ ๋‹จ๋ฐœ์„ฑ request/response๋Š” ์„ ํ˜• ์„œ๋น„์Šค ํ•จ์ˆ˜ ์œ ์ง€ + +### B. typed I/O ์•ˆ์ •ํ™” +- ์„ ํƒ: + - ์ „์ฒด๋ฅผ Pydantic AI๋กœ ๊ฐˆ์•„์—Ž๊ธฐ๋ณด๋‹ค, ๊ธฐ์กด FastAPI/Pydantic ๋ชจ๋ธ ์œ„์— `typed output validation` ์š”๊ตฌ๊ฐ€ ํฐ ๊ฒฝ๋กœ๋งŒ ๋ถ€๋ถ„ ๋„์ž… ๊ฒ€ํ†  +- ์ด์œ : + - ๋กœ๋น™์€ ์ด๋ฏธ FastAPI + Pydantic ๊ธฐ๋ฐ˜์ด์–ด์„œ ๊ธฐ๋ณธ typed schema ์ž์‚ฐ์ด ํผ + - ์ง€๊ธˆ ๊ฐ€์žฅ ์•„ํ”ˆ ๊ณณ์€ schema ๋ถ€์žฌ๋ณด๋‹ค operator safety ๋ถ€์žฌ์ž„ + +### C. ์ฝ”๋“œ์ˆ˜์ •/git operator +- ๊ถŒ์žฅ: + - `Gemini CLI` ๋˜๋Š” ๋™๊ธ‰ coding agent๋ฅผ ๋ณ„๋„ operator ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌ +- ํ•„์ˆ˜ ์กฐ๊ฑด: + 1. `GEMINI.md` ๋˜๋Š” ๋™๋“ฑํ•œ repo-specific instruction file + 2. repo path scope ๊ฐ•์ œ + 3. ํ…Œ์ŠคํŠธ ๋ช…๋ น allowlist + 4. `git checkout -b`, `git status`, `git diff`, `git add`, `git commit`, `git push`์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ์Šน์ธ + 5. diff/ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ Slack ๋˜๋Š” ํ”„๋ก ํŠธ์— ๋ณด๊ณ  ํ›„ ์ตœ์ข… ์Šน์ธ + +### D. Google Workspace ์—ฐ๋™ +- ๊ถŒ์žฅ: + - Google Workspace Developer Tools๋ฅผ `tool layer`๋กœ๋งŒ ์‚ฌ์šฉ +- ๋น„๊ถŒ์žฅ: + - Workspace CLI๋ฅผ ์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ค‘์‹ฌ SSOT๋กœ ๋‘๋Š” ๊ฒƒ +- ์ด์œ : + - ๋ฉ”์ผ/๋“œ๋ผ์ด๋ธŒ/์บ˜๋ฆฐ๋” ์ ‘๊ทผ์€ ๋„๊ตฌ ๊ณ„์ธต ๋ฌธ์ œ์ด๊ณ , ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜/์ž๊ธฐ์ˆ˜์ • ๊ตฌ์กฐ์™€๋Š” ๋ณ„๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ + +## ๋ฐ”๋กœ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ์‹คํ–‰ ํ•ญ๋ชฉ +1. `rb8001`์˜ Gemini CLI ํ˜ธ์ถœ ๊ฒฝ๋กœ์— `operator mode`๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. + - ํ˜„์žฌ `chat()` ๊ณ„์—ด ํ˜ธ์ถœ๊ณผ ์ฝ”๋“œ์ˆ˜์ •์šฉ CLI ํ˜ธ์ถœ์„ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +2. ์ฝ”๋“œ์ˆ˜์ •์šฉ ๊ฒฝ๋กœ๋Š” `repo`, `branch`, `allowed_commands`, `required_tests`๋ฅผ ๋ช…์‹œ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. +3. `GEMINI.md` ๋˜๋Š” ๋™๋“ฑํ•œ ํ”„๋กœ์ ํŠธ ํ—Œ๋ฒ• ํŒŒ์ผ์„ repo๋ณ„๋กœ ๋‘๊ณ , agent-safe rules๋ฅผ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. +4. `์ž๊ธฐ๊ฐœ์„  DB ๋กœ๊ทธ`์™€ `์‹ค์ œ git/operator ์‹คํ–‰ ๋กœ๊ทธ`๋ฅผ ๋ณ„๋„ ํ…Œ์ด๋ธ” ๋˜๋Š” ์ด๋ฒคํŠธ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. +5. Google Workspace ์—ฐ๋™์€ `tool plugin`์œผ๋กœ๋งŒ ๋ถ™์ด๊ณ , ์—์ด์ „ํŠธ ์ค‘์‹ฌ ์„ค๊ณ„๋ฅผ ํ”๋“ค์ง€ ์•Š๊ฒŒ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. + +## ์˜์‚ฌ๊ฒฐ์ • ๋ฌธ์žฅ +- ๋กœ๋น™์˜ ํ˜„์žฌ ๋ฌธ์ œ๋Š” `LangGraph๋ฅผ ๋ฒ„๋ฆด์ง€`๊ฐ€ ์•„๋‹ˆ๋ผ `Gemini CLI๋ฅผ ์•ˆ์ „ํ•œ operator๋กœ ์Šน๊ฒฉํ•  ์•ˆ์ „์žฅ์น˜๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ™์ผ์ง€`์ž…๋‹ˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ์šฐ์„ ์ˆœ์œ„๋Š” `LangGraph ์ œ๊ฑฐ`๊ฐ€ ์•„๋‹ˆ๋ผ `Gemini CLI ๋ฌด๊ฐ€๋“œ ํ˜ธ์ถœ ์ œ๊ฑฐ + operator ๊ฒฝ๊ณ„ ์„ค๊ณ„ + ์Šน์ธ ํ๋ฆ„ ์ถ”๊ฐ€`์ž…๋‹ˆ๋‹ค. + +## ์ฐธ๊ณ  ์†Œ์Šค +- Pydantic AI ๊ณต์‹ ๋ฌธ์„œ: +- Pydantic AI GitHub: +- LangGraph ๊ณต์‹ ๋ฌธ์„œ: +- Gemini CLI GitHub: +- Gemini CLI docs: + - context: + - headless: + - workspace tools: +- Google Workspace Developer Tools: + - overview: + - codelab: diff --git a/journey/research/README.md b/journey/research/README.md index eb46ba2..b078426 100644 --- a/journey/research/README.md +++ b/journey/research/README.md @@ -10,6 +10,7 @@ - [์•„์นจ๋ธŒ๋ฆฌํ•‘ ํ˜•์‹ํ˜ผ์„ ยท๋™๋‚จ์•„์˜์–ด๋…ธ์ถœ ์›์ธํ™•์ • ๋ฆฌ์„œ์น˜ (260305)](./260305_์•„์นจ๋ธŒ๋ฆฌํ•‘_ํ˜•์‹ํ˜ผ์„ _๋™๋‚จ์•„์˜์–ด๋…ธ์ถœ_์›์ธํ™•์ •_๋ฆฌ์„œ์น˜.md) - [51124 ๋จนํ†ต 48์‹œ๊ฐ„ ์ฝ”๋“œ ์ฐจ๋ถ„ ์›์ธ ํ™•์ • ๋ฆฌ์„œ์น˜ (260304)](./260304_51124_๋จนํ†ต_48์‹œ๊ฐ„_์ฝ”๋“œ์ฐจ๋ถ„_์›์ธํ™•์ •_๋ฆฌ์„œ์น˜.md) - [9์‹œ ๋„ค์ด๋ฒ„ ์ด๋ฉ”์ผ ๋ถ„์„ ๋ฏธ์ „์†ก ์‹คํŒจ ์€๋‹‰ ๋ฆฌ์„œ์น˜ (260309)](./260309_9์‹œ_๋„ค์ด๋ฒ„์ด๋ฉ”์ผ๋ถ„์„_๋ฏธ์ „์†ก_์‹คํŒจ์€๋‹‰_๋ฆฌ์„œ์น˜.md) +- [์ž๊ฐ€์ˆ˜์ • ์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ Workspace CLI ๊ฒ€์ฆ ๋ฆฌ์„œ์น˜ (260311)](./260311_์ž๊ฐ€์ˆ˜์ •_์—์ด์ „ํŠธ_ํ”„๋ ˆ์ž„์›Œํฌ_๋ฐ_workspace_cli_๊ฒ€์ฆ_๋ฆฌ์„œ์น˜.md) ### [๊ธฐ์–ต(Memory)](./memory/README.md) - ์žฅ๋‹จ๊ธฐ ๊ธฐ์–ต ๋ฉ”์ปค๋‹ˆ์ฆ˜