diff --git a/README.en.md b/README.en.md index a6255981..beb50c32 100644 --- a/README.en.md +++ b/README.en.md @@ -1,6 +1,6 @@ # Star Office UI -๐ŸŒ Language: [ไธญๆ–‡](./README.md) | **English** | [ๆ—ฅๆœฌ่ชž](./README.ja.md) +๐ŸŒ Language: [ไธญๆ–‡](./README.md) | [ํ•œ๊ตญ์–ด](./README.ko.md) | **English** | [ๆ—ฅๆœฌ่ชž](./README.ja.md) ![Star Office UI Cover](docs/screenshots/readme-cover-2.jpg) diff --git a/README.ja.md b/README.ja.md index 1ab8d19d..c1926891 100644 --- a/README.ja.md +++ b/README.ja.md @@ -1,6 +1,6 @@ # Star Office UI -๐ŸŒ Language: [ไธญๆ–‡](./README.md) | [English](./README.en.md) | **ๆ—ฅๆœฌ่ชž** +๐ŸŒ Language: [ไธญๆ–‡](./README.md) | [ํ•œ๊ตญ์–ด](./README.ko.md) | [English](./README.en.md) | **ๆ—ฅๆœฌ่ชž** ![Star Office UI ใ‚ซใƒใƒผ](docs/screenshots/readme-cover-2.jpg) diff --git a/README.ko.md b/README.ko.md new file mode 100644 index 00000000..9a098f83 --- /dev/null +++ b/README.ko.md @@ -0,0 +1,294 @@ +# Star Office UI + +๐ŸŒ Language: [ไธญๆ–‡](./README.md) | **ํ•œ๊ตญ์–ด** | [English](./README.en.md) | [ๆ—ฅๆœฌ่ชž](./README.ja.md) + +![Star Office UI ์ปค๋ฒ„](docs/screenshots/readme-cover-2.jpg) + +**ํ”ฝ์…€ ์•„ํŠธ ์Šคํƒ€์ผ์˜ AI ์‚ฌ๋ฌด์‹ค ๋Œ€์‹œ๋ณด๋“œ** โ€” AI ์–ด์‹œ์Šคํ„ดํŠธ์˜ ์ž‘์—… ์ƒํƒœ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ, "๋ˆ„๊ฐ€ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€, ์–ด์ œ ๋ฌด์Šจ ์ผ์„ ํ–ˆ๋Š”์ง€, ์ง€๊ธˆ ์˜จ๋ผ์ธ์ธ์ง€"๋ฅผ ํ•œ๋ˆˆ์— ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. + +๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํ˜‘์—…, ๋‹ค๊ตญ์–ด UI(์ค‘/์˜/์ผ), AI ๊ธฐ๋ฐ˜ ๋ฃธ ๋””์ž์ธ, ๋ฐ์Šคํฌํ†ฑ ํŽซ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. +[OpenClaw](https://github.com/openclaw/openclaw)์™€ ํ•จ๊ป˜ ์“ธ ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋‹จ๋… ์ƒํƒœ ๋Œ€์‹œ๋ณด๋“œ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +> ์ด ํ”„๋กœ์ ํŠธ๋Š” **[Ring Hyacinth](https://x.com/ring_hyacinth)** ์™€ **[Simon Lee](https://x.com/simonxxoo)** ๊ฐ€ ๊ณต๋™ ์ œ์ž‘(co-created project)ํ–ˆ์œผ๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ์ž๋“ค([@Zhaohan-Wang](https://github.com/Zhaohan-Wang), [@Jah-yee](https://github.com/Jah-yee), [@liaoandi](https://github.com/liaoandi))๊ณผ ํ•จ๊ป˜ ์ง€์†์ ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ๋ฐœ์ „์‹œํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +> ์ด์Šˆ์™€ PR์„ ํ™˜์˜ํ•˜๋ฉฐ, ๋ชจ๋“  ๊ธฐ์—ฌ์ž๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +--- + +## โœจ ๋น ๋ฅธ ์‹œ์ž‘ + +### ๋ฐฉ๋ฒ• 1: ๋ž์Šคํ„ฐ์—๊ฒŒ ๋ฐฐํฌ ๋งก๊ธฐ๊ธฐ (OpenClaw ์‚ฌ์šฉ์ž ์ถ”์ฒœ) + +[OpenClaw](https://github.com/openclaw/openclaw)๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด, ์•„๋ž˜ ๋ฌธ์žฅ์„ ๊ทธ๋Œ€๋กœ ๋ž์Šคํ„ฐ์—๊ฒŒ ๋ณด๋‚ด์„ธ์š”: + +```text +Please follow this SKILL.md to deploy Star Office UI for me: +https://github.com/ringhyacinth/Star-Office-UI/blob/master/SKILL.md +``` + +๋ž์Šคํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ €์žฅ์†Œ ํด๋ก , ์˜์กด์„ฑ ์„ค์น˜, ๋ฐฑ์—”๋“œ ์‹คํ–‰, ์ƒํƒœ ๋™๊ธฐํ™” ์„ค์ •์„ ๋งˆ์น˜๊ณ  ์ ‘์† ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. + +### ๋ฐฉ๋ฒ• 2: 30์ดˆ ์ˆ˜๋™ ์„ค์น˜ + +> **์š”๊ตฌ ์‚ฌํ•ญ: Python 3.10+** (์ฝ”๋“œ์—์„œ `X | Y` ์œ ๋‹ˆ์˜จ ํƒ€์ž… ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ 3.9 ์ดํ•˜๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค) + +```bash +# 1) ์ €์žฅ์†Œ ํด๋ก  +git clone https://github.com/ringhyacinth/Star-Office-UI.git +cd Star-Office-UI + +# 2) ์˜์กด์„ฑ ์„ค์น˜ (Python 3.10+ ํ•„์š”) +python3 -m pip install -r backend/requirements.txt + +# 3) ์ƒํƒœ ํŒŒ์ผ ์ดˆ๊ธฐํ™” (์ตœ์ดˆ 1ํšŒ) +cp state.sample.json state.json + +# 4) ๋ฐฑ์—”๋“œ ์‹คํ–‰ +cd backend +python3 app.py +``` + +**http://127.0.0.1:19000** ์„ ์—ด๊ณ  ์ƒํƒœ๋ฅผ ์ „ํ™˜ํ•ด ๋ณด์„ธ์š”: + +```bash +python3 set_state.py writing "๋ฌธ์„œ ์ •๋ฆฌ ์ค‘" +python3 set_state.py error "๋ฌธ์ œ ๋ฐœ๊ฒฌ, ๋””๋ฒ„๊น… ์ค‘" +python3 set_state.py idle "๋Œ€๊ธฐ ์ค‘" +``` + +![Star Office UI ๋ฏธ๋ฆฌ๋ณด๊ธฐ](docs/screenshots/readme-cover-1.jpg) + +--- + +## ๐Ÿค” ๋ˆ„๊ตฌ์—๊ฒŒ ์ ํ•ฉํ•œ๊ฐ€์š”? + +### OpenClaw / AI ์—์ด์ „ํŠธ ์‚ฌ์šฉ์ž +**์™„์ „ํ•œ ๊ฒฝํ—˜**์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ์ž‘์—…ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ƒํƒœ๊ฐ€ ์ „ํ™˜๋˜๊ณ , ์‚ฌ๋ฌด์‹ค ์•ˆ์˜ ํ”ฝ์…€ ์บ๋ฆญํ„ฐ๊ฐ€ ํ•ด๋‹น ์˜์—ญ์œผ๋กœ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค โ€” ์›นํŽ˜์ด์ง€๋งŒ ์—ด์–ด๋‘๋ฉด AI๊ฐ€ ์ง€๊ธˆ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +### OpenClaw ๋ฏธ์‚ฌ์šฉ์ž +๋ฐฐํฌํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์ „ํ˜€ ๋ฌธ์ œ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: +- `set_state.py` ๋˜๋Š” API๋กœ ์ˆ˜๋™/์Šคํฌ๋ฆฝํŠธ๋กœ ์ƒํƒœ ํ‘ธ์‹œ +- ํ”ฝ์…€ ์•„ํŠธ ๊ฐœ์ธ ์ƒํƒœ ํŽ˜์ด์ง€ / ์›๊ฒฉ ๊ทผ๋ฌด ๋Œ€์‹œ๋ณด๋“œ๋กœ ํ™œ์šฉ +- HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ์ƒํƒœ ๊ฐฑ์‹  + +--- + +## ๐Ÿ“‹ ๊ธฐ๋Šฅ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ + +1. **์ƒํƒœ ์‹œ๊ฐํ™”** โ€” 6๊ฐ€์ง€ ์ƒํƒœ(`idle` / `writing` / `researching` / `executing` / `syncing` / `error`)๊ฐ€ ์‚ฌ๋ฌด์‹ค์˜ ๊ฐ ์˜์—ญ์— ์ž๋™ ๋งคํ•‘๋˜์–ด, ์• ๋‹ˆ๋ฉ”์ด์…˜ + ๋งํ’์„ ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ํ‘œ์‹œ +2. **์–ด์ œ์˜ ๋ฉ”๋ชจ** โ€” `memory/*.md`์—์„œ ์ตœ๊ทผ ํ•˜๋ฃจ์น˜ ์ž‘์—… ๊ธฐ๋ก์„ ์ž๋™์œผ๋กœ ์ฝ์–ด ๋งˆ์Šคํ‚น ํ›„ "์–ด์ œ์˜ ๋ฉ”๋ชจ" ์นด๋“œ๋กœ ํ‘œ์‹œ +3. **๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํ˜‘์—…** โ€” Join Key๋กœ ๋‹ค๋ฅธ ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ๋ฌด์‹ค์— ์ดˆ๋Œ€ํ•˜๊ณ  ๋ชจ๋‘์˜ ์ƒํƒœ๋ฅผ ์‹ค์‹œ๊ฐ„ ํ™•์ธ +4. **๋‹ค๊ตญ์–ด UI** โ€” ์ค‘๊ตญ์–ด / ์˜์–ด / ์ผ๋ณธ์–ด ์›ํด๋ฆญ ์ „ํ™˜, ์ธํ„ฐํŽ˜์ด์Šค ํ…์ŠคํŠธยท๋งํ’์„ ยท๋กœ๋”ฉ ๋ฉ”์‹œ์ง€๊ฐ€ ์ผ์ œํžˆ ๊ฐฑ์‹  +5. **์•„ํŠธ ์—์…‹ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•** โ€” ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ์บ๋ฆญํ„ฐ / ์žฅ๋ฉด / ์žฅ์‹ ์—์…‹์„ ๊ด€๋ฆฌ, ๋™์  ํ”„๋ ˆ์ž„ ๋™๊ธฐํ™”๋กœ ๊นœ๋นก์ž„ ๋ฐฉ์ง€ +6. **AI ๊ธฐ๋ฐ˜ ๋ฃธ ๋””์ž์ธ** โ€” Gemini API ์—ฐ๊ฒฐ๋กœ ์‚ฌ๋ฌด์‹ค ๋ฐฐ๊ฒฝ์„ AI๊ฐ€ ์ƒˆ๋กœ ๊ทธ๋ ค์คŒ. API ์—†์ด๋„ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ์ •์ƒ ๋™์ž‘ +7. **๋ชจ๋ฐ”์ผ ๋Œ€์‘** โ€” ํœด๋Œ€ํฐ์—์„œ ๊ทธ๋Œ€๋กœ ์—ด ์ˆ˜ ์žˆ์–ด ์™ธ์ถœ ์‹œ์—๋„ ๋น ๋ฅด๊ฒŒ ํ™•์ธ ๊ฐ€๋Šฅ +8. **๋ณด์•ˆ ๊ฐ•ํ™”** โ€” ์‚ฌ์ด๋“œ๋ฐ” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณดํ˜ธ, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐจ๋‹จ, ์„ธ์…˜ ์ฟ ํ‚ค ๊ฐ•ํ™” +9. **์œ ์—ฐํ•œ ์™ธ๋ถ€ ์ ‘์†** โ€” Cloudflare Tunnel๋กœ ์›ํด๋ฆญ ๊ณต๊ฐœ, ์ž์ฒด ๋„๋ฉ”์ธ / ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ +10. **๋ฐ์Šคํฌํ†ฑ ํŽซ ๋ฒ„์ „** โ€” ํ”ฝ์…€ ์‚ฌ๋ฌด์‹ค์„ ํˆฌ๋ช… ์ฐฝ์˜ ๋ฐ์Šคํฌํ†ฑ ํŽซ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์„ ํƒํ˜• Electron ๋ž˜ํผ ์ œ๊ณต (์•„๋ž˜ ์„ค๋ช… ์ฐธ๊ณ ) + +--- + +## ๐Ÿš€ ์ƒ์„ธ ๋ฐฐํฌ ๊ฐ€์ด๋“œ + +### 1) ์˜์กด์„ฑ ์„ค์น˜ + +```bash +cd Star-Office-UI +python3 -m pip install -r backend/requirements.txt +``` + +### 2) ์ƒํƒœ ํŒŒ์ผ ์ดˆ๊ธฐํ™” + +```bash +cp state.sample.json state.json +``` + +### 3) ๋ฐฑ์—”๋“œ ์‹คํ–‰ + +```bash +cd backend +python3 app.py +``` + +`http://127.0.0.1:19000` ์„ ์—ด์–ด์ฃผ์„ธ์š”. + +> โœ… ๋กœ์ปฌ ๊ฐœ๋ฐœ์€ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ์‹œ์ž‘ํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” `.env.example`์„ `.env`๋กœ ๋ณต์‚ฌํ•œ ๋’ค `FLASK_SECRET_KEY`์™€ `ASSET_DRAWER_PASS`์— ๊ฐ•๋ ฅํ•œ ๋žœ๋ค ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ์„ธ์…˜ ์œ ์ถœ์„ ๋ฐฉ์ง€ํ•˜์„ธ์š”. + +### 4) ์ƒํƒœ ์ „ํ™˜ + +```bash +python3 set_state.py writing "๋ฌธ์„œ ์ •๋ฆฌ ์ค‘" +python3 set_state.py syncing "๋™๊ธฐํ™” ์ง„ํ–‰ ์ค‘" +python3 set_state.py error "๋ฌธ์ œ ๋ฐœ๊ฒฌ, ๋””๋ฒ„๊น… ์ค‘" +python3 set_state.py idle "๋Œ€๊ธฐ ์ค‘" +``` + +### 5) ์™ธ๋ถ€ ์ ‘์† (์„ ํƒ) + +```bash +cloudflared tunnel --url http://127.0.0.1:19000 +``` + +๋ฐœ๊ธ‰๋ฐ›์€ `https://xxx.trycloudflare.com` ๋งํฌ๋ฅผ ๊ณต์œ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. + +### 6) ์„ค์น˜ ๊ฒ€์ฆ (์„ ํƒ) + +```bash +python3 scripts/smoke_test.py --base-url http://127.0.0.1:19000 +``` + +๋ชจ๋“  ๊ฒ€์‚ฌ ํ•ญ๋ชฉ์— `OK`๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋ฐฐํฌ ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค. + +--- + +## ๐Ÿฆž OpenClaw ์‹ฌ์ธต ํ†ตํ•ฉ + +> ์ด ์„น์…˜์€ [OpenClaw](https://github.com/openclaw/openclaw) ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. OpenClaw๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ฑด๋„ˆ๋›ฐ์…”๋„ ๋ฉ๋‹ˆ๋‹ค. + +### ์ƒํƒœ ์ž๋™ ๋™๊ธฐํ™” + +`SOUL.md`(๋˜๋Š” ์—์ด์ „ํŠธ ๊ทœ์น™ ํŒŒ์ผ)์— ์•„๋ž˜ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์—์ด์ „ํŠธ๊ฐ€ ์Šค์Šค๋กœ ์ƒํƒœ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค: + +```markdown +## Star Office ์ƒํƒœ ๋™๊ธฐํ™” ๊ทœ์น™ +- ์ž‘์—… ์‹œ์ž‘ ์‹œ: ์ž‘์—… ์ „์— `python3 set_state.py <์ƒํƒœ> "<์„ค๋ช…>"` ์‹คํ–‰ +- ์ž‘์—… ์™„๋ฃŒ ์‹œ: ์‘๋‹ต ์ „์— `python3 set_state.py idle "๋Œ€๊ธฐ ์ค‘"` ์‹คํ–‰ +``` + +**6๊ฐ€์ง€ ์ƒํƒœ โ†’ 3๊ฐœ ์˜์—ญ ๋งคํ•‘:** + +| ์ƒํƒœ | ์‚ฌ๋ฌด์‹ค ์˜์—ญ | ์‚ฌ์šฉ ์‹œ์  | +|------|-----------|---------| +| `idle` | ๐Ÿ›‹ ํœด๊ฒŒ์‹ค (์†ŒํŒŒ) | ๋Œ€๊ธฐ / ์ž‘์—… ์™„๋ฃŒ | +| `writing` | ๐Ÿ’ป ์ž‘์—… ์˜์—ญ (์ฑ…์ƒ) | ์ฝ”๋“œ / ๋ฌธ์„œ ์ž‘์„ฑ | +| `researching` | ๐Ÿ’ป ์ž‘์—… ์˜์—ญ | ๊ฒ€์ƒ‰ / ๋ฆฌ์„œ์น˜ | +| `executing` | ๐Ÿ’ป ์ž‘์—… ์˜์—ญ | ๋ช…๋ น ์‹คํ–‰ / ์ž‘์—… ์ˆ˜ํ–‰ | +| `syncing` | ๐Ÿ’ป ์ž‘์—… ์˜์—ญ | ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” / ํ‘ธ์‹œ | +| `error` | ๐Ÿ› ๋ฒ„๊ทธ ์ฝ”๋„ˆ | ์—๋Ÿฌ / ๋””๋ฒ„๊น… | + +### ๋‹ค๋ฅธ ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ๋ฌด์‹ค๋กœ ์ดˆ๋Œ€ํ•˜๊ธฐ + +**Step 1: Join Key ์ค€๋น„** + +๋ฐฑ์—”๋“œ๋ฅผ ์ฒ˜์Œ ์‹คํ–‰ํ•  ๋•Œ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— `join-keys.json`์ด ์—†์œผ๋ฉด, ์„œ๋น„์Šค๊ฐ€ `join-keys.sample.json`์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(์˜ˆ์‹œ ํ‚ค `ocj_example_team_01` ํฌํ•จ). ์ƒ์„ฑ๋œ `join-keys.json`์—์„œ ํ‚ค๋ฅผ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ํ‚ค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ๋Œ€ 3๋ช… ๋™์‹œ ์ ‘์†์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. + +**Step 2: ๊ฒŒ์ŠคํŠธ ์—์ด์ „ํŠธ๊ฐ€ ํ‘ธ์‹œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰** + +๊ฒŒ์ŠคํŠธ๋Š” `office-agent-push.py`๋งŒ ๋‹ค์šด๋กœ๋“œํ•ด ๋ณ€์ˆ˜ 3๊ฐœ๋ฅผ ์ฑ„์šฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค: + +```python +JOIN_KEY = "ocj_starteam02" # ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ฐœ๊ธ‰ํ•œ ํ‚ค +AGENT_NAME = "๋ฏผ์ˆ˜์˜ ๋ž์Šคํ„ฐ" # ํ‘œ์‹œ ์ด๋ฆ„ +OFFICE_URL = "https://office.hyacinth.im" # ์‚ฌ๋ฌด์‹ค ์ฃผ์†Œ +``` + +```bash +python3 office-agent-push.py +``` + +์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ๋ฌด์‹ค์— ์ž…์žฅํ•˜๊ณ  15์ดˆ๋งˆ๋‹ค ์ƒํƒœ๋ฅผ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ŠคํŠธ๋Š” ๋Œ€์‹œ๋ณด๋“œ์— ๋“ฑ์žฅํ•˜์—ฌ ์ƒํƒœ์— ๋”ฐ๋ผ ํ•ด๋‹น ์˜์—ญ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. + +**Step 3 (์„ ํƒ): ๊ฒŒ์ŠคํŠธ๊ฐ€ Skill ์„ค์น˜** + +`frontend/join-office-skill.md`์„ Skill๋กœ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฒŒ์ŠคํŠธ์˜ ์—์ด์ „ํŠธ๊ฐ€ ์„ค์ •๊ณผ ํ‘ธ์‹œ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. + +> ์ž์„ธํ•œ ๊ฒŒ์ŠคํŠธ ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ๋Š” [`frontend/join-office-skill.md`](./frontend/join-office-skill.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. + +--- + +## ๐Ÿ“ก ์ฃผ์š” API + +| ์—”๋“œํฌ์ธํŠธ | ์„ค๋ช… | +|----------|------| +| `GET /health` | ํ—ฌ์Šค ์ฒดํฌ | +| `GET /status` | ๋ฉ”์ธ ์—์ด์ „ํŠธ ์ƒํƒœ ์กฐํšŒ | +| `POST /set_state` | ๋ฉ”์ธ ์—์ด์ „ํŠธ ์ƒํƒœ ์„ค์ • | +| `GET /agents` | ์—์ด์ „ํŠธ ๋ชฉ๋ก ์กฐํšŒ | +| `POST /join-agent` | ๊ฒŒ์ŠคํŠธ ์‚ฌ๋ฌด์‹ค ์ž…์žฅ | +| `POST /agent-push` | ๊ฒŒ์ŠคํŠธ ์ƒํƒœ ํ‘ธ์‹œ | +| `POST /leave-agent` | ๊ฒŒ์ŠคํŠธ ํ‡ด์žฅ | +| `GET /yesterday-memo` | ์–ด์ œ์˜ ๋ฉ”๋ชจ ์กฐํšŒ | +| `GET /config/gemini` | Gemini API ์„ค์ • ์กฐํšŒ | +| `POST /config/gemini` | Gemini API ์„ค์ • ์ €์žฅ | +| `GET /assets/generate-rpg-background/poll` | ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์ง„ํ–‰ ์ƒํ™ฉ ํด๋ง | + +--- + +## ๐Ÿ–ฅ ๋ฐ์Šคํฌํ†ฑ ํŽซ ๋ฒ„์ „ (์„ ํƒ) + +`desktop-pet/` ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋Š” ํ”ฝ์…€ ์‚ฌ๋ฌด์‹ค์„ ํˆฌ๋ช… ์ฐฝ์˜ ๋ฐ์Šคํฌํ†ฑ ํŽซ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” **Electron** ๊ธฐ๋ฐ˜ ๋ฐ์Šคํฌํ†ฑ ๋ž˜ํผ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. + +```bash +cd desktop-pet +npm install +npm run dev +``` + +- ์‹œ์ž‘ ์‹œ Python ๋ฐฑ์—”๋“œ ์ž๋™ ์‹คํ–‰ +- ์ฐฝ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ `http://127.0.0.1:19000/?desktop=1`์„ ๊ฐ€๋ฆฌํ‚ด +- ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ์™€ Python ๊ฒฝ๋กœ๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅ + +> โš ๏ธ ์ด ๊ธฐ๋Šฅ์€ **์„ ํƒํ˜• ์‹คํ—˜ ๊ธฐ๋Šฅ**์œผ๋กœ, ์ฃผ๋กœ macOS์—์„œ ๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ ์ค‘์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [`desktop-pet/README.md`](./desktop-pet/README.md)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. +> +> ๐Ÿ™ ๋ฐ์Šคํฌํ†ฑ ํŽซ ๋ฒ„์ „์€ [@Zhaohan-Wang](https://github.com/Zhaohan-Wang)๋‹˜์ด ๋‹จ๋…์œผ๋กœ ๊ฐœ๋ฐœํ•ด ์ฃผ์…จ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! + +--- + +## ๐ŸŽจ ์•„ํŠธ ์—์…‹ ๋ฐ ๋ผ์ด์„ ์Šค + +### ์—์…‹ ์ถœ์ฒ˜ + +๊ฒŒ์ŠคํŠธ ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ **LimeZu**์˜ ๋ฌด๋ฃŒ ์—์…‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: +- [Animated Mini Characters 2 (Platformer) [FREE]](https://limezu.itch.io/animated-mini-characters-2-platform-free) + +์žฌ๋ฐฐํฌ / ๋ฐ๋ชจ ์‹œ ์ถœ์ฒ˜ ํ‘œ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์›์ž‘์ž์˜ ๋ผ์ด์„ ์Šค ์กฐํ•ญ์„ ์ค€์ˆ˜ํ•ด ์ฃผ์„ธ์š”. + +### ๋ผ์ด์„ ์Šค + +- **์ฝ”๋“œ / ๋กœ์ง: MIT** ([`LICENSE`](./LICENSE) ์ฐธ์กฐ) +- **์•„ํŠธ ์—์…‹: ์ƒ์—…์  ์‚ฌ์šฉ ๊ธˆ์ง€** (ํ•™์Šต / ๋ฐ๋ชจ / ๊ต๋ฅ˜ ์šฉ๋„๋งŒ ํ—ˆ์šฉ) + +> ์ƒ์—…์  ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ชจ๋“  ์•„ํŠธ ์—์…‹์„ ๋ณธ์ธ์ด ์ง์ ‘ ์ œ์ž‘ํ•œ ์›๋ณธ ์ž์‚ฐ์œผ๋กœ ๊ต์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +--- + +## ๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ + +| ๋‚ ์งœ | ์š”์•ฝ | ์ƒ์„ธ | +|------|------|------| +| 2026-03-06 | ๐Ÿ”Œ ๊ธฐ๋ณธ ํฌํŠธ ๋ณ€๊ฒฝ โ€” ๋ฐฑ์—”๋“œ ๊ธฐ๋ณธ ํฌํŠธ๊ฐ€ 18791์—์„œ 19000์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด OpenClaw Browser Control๊ณผ์˜ ์ถฉ๋Œ์„ ํšŒํ”ผ, ์Šคํฌ๋ฆฝํŠธยท๋ฐ์Šคํฌํ†ฑ ์…ธยท๋ฌธ์„œ ๊ธฐ๋ณธ๊ฐ’๋„ ๋™๊ธฐํ™” | [`docs/CHANGELOG_2026-03.md`](./docs/CHANGELOG_2026-03.md) | +| 2026-03-05 | ๐Ÿ“ฑ ์•ˆ์ •์„ฑ ์ˆ˜์ • โ€” CDN ์บ์‹œ ์ˆ˜์ •, ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋น„๋™๊ธฐํ™”, ๋ชจ๋ฐ”์ผ ์‚ฌ์ด๋“œ๋ฐ” UX ๊ฐœ์„ , Join Key ๋งŒ๋ฃŒ ๋ฐ ๋™์‹œ์„ฑ ์ œ์–ด | [`docs/UPDATE_REPORT_2026-03-05.md`](./docs/UPDATE_REPORT_2026-03-05.md) | +| 2026-03-04 | ๐Ÿ”’ P0/P1 ๋ณด์•ˆ ๊ฐ•ํ™” โ€” ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐจ๋‹จ, ๋ฐฑ์—”๋“œ ๋ชจ๋“ˆ ๋ถ„๋ฆฌ, stale ์ƒํƒœ ์ž๋™ idle ๋ณต๊ท€, ์ฒซ ํ™”๋ฉด ์Šค์ผˆ๋ ˆํ†ค ์ตœ์ ํ™” | [`docs/UPDATE_REPORT_2026-03-04_P0_P1.md`](./docs/UPDATE_REPORT_2026-03-04_P0_P1.md) | +| 2026-03-03 | ๐Ÿ“‹ ์˜คํ”ˆ์†Œ์Šค ๋ฆด๋ฆฌ์Šค ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์™„๋ฃŒ | [`docs/OPEN_SOURCE_RELEASE_CHECKLIST.md`](./docs/OPEN_SOURCE_RELEASE_CHECKLIST.md) | +| 2026-03-01 | ๐ŸŽ‰ **v2 ๋ฆฌ๋ฉ”์ดํฌ ๋ฆด๋ฆฌ์Šค** โ€” 3๊ฐœ ์–ธ์–ด ์ง€์› ์ถ”๊ฐ€, ์—์…‹ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ, AI ๋ฃธ ๋””์ž์ธ, ์•„ํŠธ ์—์…‹ ์ „๋ฉด ๊ต์ฒด | [`docs/FEATURES_NEW_2026-03-01.md`](./docs/FEATURES_NEW_2026-03-01.md) | + +--- + +## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ + +```text +Star-Office-UI/ +โ”œโ”€โ”€ backend/ # Flask ๋ฐฑ์—”๋“œ +โ”‚ โ”œโ”€โ”€ app.py +โ”‚ โ”œโ”€โ”€ requirements.txt +โ”‚ โ””โ”€โ”€ run.sh +โ”œโ”€โ”€ frontend/ # ํ”„๋ŸฐํŠธ์—”๋“œ ํŽ˜์ด์ง€ ๋ฐ ์—์…‹ +โ”‚ โ”œโ”€โ”€ index.html +โ”‚ โ”œโ”€โ”€ join.html +โ”‚ โ”œโ”€โ”€ invite.html +โ”‚ โ””โ”€โ”€ layout.js +โ”œโ”€โ”€ desktop-pet/ # Electron ๋ฐ์Šคํฌํ†ฑ ํŽซ (์„ ํƒ) +โ”œโ”€โ”€ docs/ # ๋ฌธ์„œ ๋ฐ ์Šคํฌ๋ฆฐ์ƒท +โ”‚ โ””โ”€โ”€ screenshots/ +โ”œโ”€โ”€ office-agent-push.py # ๊ฒŒ์ŠคํŠธ ํ‘ธ์‹œ ์Šคํฌ๋ฆฝํŠธ +โ”œโ”€โ”€ set_state.py # ์ƒํƒœ ์ „ํ™˜ ์Šคํฌ๋ฆฝํŠธ +โ”œโ”€โ”€ state.sample.json # ์ƒํƒœ ํŒŒ์ผ ํ…œํ”Œ๋ฆฟ +โ”œโ”€โ”€ join-keys.sample.json # Join Key ํ…œํ”Œ๋ฆฟ (์‹คํ–‰ ์‹œ join-keys.json ์ƒ์„ฑ) +โ”œโ”€โ”€ SKILL.md # OpenClaw Skill +โ””โ”€โ”€ LICENSE # MIT ๋ผ์ด์„ ์Šค +``` + +--- + +## โญ Star History + +[![Star History Chart](https://api.star-history.com/image?repos=ringhyacinth/Star-Office-UI&type=date&legend=top-left)](https://www.star-history.com/?repos=ringhyacinth%2FStar-Office-UI&type=date&legend=top-left) diff --git a/README.md b/README.md index de6ead6a..2d9aeda3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Star Office UI -๐ŸŒ Language: **ไธญๆ–‡** | [English](./README.en.md) | [ๆ—ฅๆœฌ่ชž](./README.ja.md) +๐ŸŒ Language: **ไธญๆ–‡** | [ํ•œ๊ตญ์–ด](./README.ko.md) | [English](./README.en.md) | [ๆ—ฅๆœฌ่ชž](./README.ja.md) ![Star Office UI ๅฐ้ข](docs/screenshots/readme-cover-2.jpg)