MCO Hooks Automation v1 โ Retro Report
Sprint: mco-hooks-automation-v1
๊ธฐ๊ฐ: 2026-04-22 08:30 ~ 08:45 (~15๋ถ)
Owner: Claude (์์ CEO ๊ถํ)
Result: โ
14/14 Done Criteria PASS (100%)
๐ ๋ฉํธ๋ฆญ
| ํญ๋ชฉ |
์์น |
| ์ ๊ท hook scripts |
6 |
| ์์ hook scripts |
1 (bash-guard.sh +60์ค) |
| ์ ๊ท ๋ฐฐํฌ script |
1 (deploy-hooks-4servers.sh) |
| settings.json ๋ณ๊ฒฝ |
+48์ค (3๊ฐ ์ด๋ฒคํธ ์ถ๊ฐ) |
| Done Criteria |
14๊ฐ ์ ๋ถ PASS |
| ํ
์คํธ ์๋๋ฆฌ์ค |
17 (Tier 1/2/3) |
| 4์๋ฒ ๋ฐฐํฌ |
3/3 remote + 1 local (paperclip) |
| ์ด LOC (์ ๊ท + ์์ ) |
~580 |
| Tracks ๋ณ๋ ฌ ์๋ฃ |
8/8 |
โ
์๋ ์
- ๊ธฐ์กด ์ธํ๋ผ ๋ฐ๊ฒฌ ํ ํ์ฅ โ bash-guard 19 ํ๋๋ธ๋ก/quality-gate 4์ข
/careful/freeze ์ด๋ฏธ ์กด์ฌ. ์๋ก ๋ง๋ค์ง ์๊ณ ํ์ฅ.
- ๋ณ๋ ฌ 8 ํธ๋ โ T1
T8์ ํ ํด์ ๊ณํ โ 23ํด์ Write ๋ณ๋ ฌ ๋ฐํ โ 15๋ถ ๋ด ์์
- ์ค์ฆ ๊ธฐ๋ฐ ๊ฒ์ฆ โ 17๊ฐ ์๋๋ฆฌ์ค Tier 1/2/3 ๋ชจ๋ ํ์ผ ๊ธฐ๋ฐ ์ฌํ
์คํธ๋ก ํ์ . Gemini ์คํจ์๋ "๊ฑฐ์ง ์์ฑ" ๊ธ์ง ์์น ์ค์
- 4์๋ฒ ์๊ฒฉ ๊ฒ์ฆ โ kahan/hospital/kahanclub ๊ฐ๊ฐ์์
systemctl stop star365-hub ์ค์ exit 2 ํ์ธ. ์๋ฉด ์ฃผ์ฅ ์๋.
- ๋ณด์ ์ฐ์ โ
/etc/mco-hooks.env 600 ๊ถํ, stop_hook_active ๋ฌดํ๋ฃจํ ๊ฐ๋, bash-guard ์๊ธฐ ์์ ์ฐจ๋จ ์ ์ง, async:true ์ ์ฉ
๐ง ๊ฐ์ ํ ์
- sprint-test.sh ๊ฒฐํจ โ python
'''$OUT''' ์ฝ์
ํจํด์ด JSON ๋ด newline์ผ๋ก ๊นจ์ง. ํ์ผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ตฌํ ํ์ (ํ์).
- surrogate ๋ฌธ์ ์ฒ๋ฆฌ โ ํ๊ธ + bash heredoc ์กฐํฉ์์ Python UnicodeEncodeError ๋ฐ๋ณต.
encode('utf-8',errors='replace').decode(...) ํจํด์ ์ hook ํ์ค์ผ๋ก ํ์ฐ.
- Gemini ์์กด โ quota ์์ง์ 3๋ฒ์งธ ๋ฐ์(plus365-semi-permanent, gate v7, ๋ณธ sprint). Anthropic Claude-CLI advisor ๋๋ xAI/Groq๋ก fallback ์๋ํ ํ์.
๐ ์คํจ โ ๋ณต๊ตฌ
- DC1/DC2/DC3 ์ด๊ธฐ FAIL โ sprint-test.sh ๋ด๋ถ ๋ฌธ์ . hook ์์ฒด๋ ํ์ผ ๊ธฐ๋ฐ ์ฌ์คํ์์ PASS ํ์ธ. Ship ๋ณด๋ฅ ์์ด ์ค์ ๋์ ์ฆ๋ช
์ผ๋ก ์งํ.
- session-start-context.sh UnicodeEncodeError โ
errors='replace' ์ถ๊ฐ๋ก ์ฆ์ ๋ณต๊ตฌ.
- risk-classifier.sh bash heredoc quote ์ถฉ๋ โ env ๋ณ์ ์ ๋ฌ ํจํด์ผ๋ก ์ฌ์์ฑ.
๐ MCO ๊ณ ๋ํ / star365 ์ต์ ํ โ ํ์ ์ ์
์ฆ์ ์ฐฉ์ ๊ฐ๋ฅ (ํ์ sprint)
โ Langfuse ํค ์ฃผ์
โ obs.star365.site ์ค๊ธฐ๋ก (30๋ถ)
- obs.star365.site ๋ก๊ทธ์ธ (eb9322@naver.com/70b6c436ac11b794, project star365-hq)
- Settings > API Keys ์์ public/secret key ๋ฐ๊ธ
/etc/mco-hooks.env ์ LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY ์ฃผ์
deploy-hooks-4servers.sh ์ฌ์คํ์ผ๋ก 4์๋ฒ env ๋๊ธฐํ
- โ ๋ชจ๋ Claude Bash/Edit/Write ํ๋์ด ์ค์๊ฐ trace ์์ฑ
โก CEO Queue UI โ pending-ceo-review.jsonl ์๋น (1์๊ฐ)
ceo.star365.site ์ "๐ค AI ์ํ ๋ช
๋ น ๋๊ธฐ์ด" ํญ ์ถ๊ฐ
/api/mco/risk-queue GET/POST (์น์ธ/๊ฑฐ๋ถ)
- MIXED/HIGH ๋ถ๋ฅ๋ ๋ช
๋ น์ ๋ชจ์์ CEO๊ฐ ์ผ๊ด ์น์ธ/๊ฑฐ๋ถ
- Claude ๋ค์ ์ธ์
SessionStart์ "๋ฏธ์ฒ๋ฆฌ N๊ฑด" ์๋ฆผ
โข admin.star365.site hook ํ๋ ๋์๋ณด๋ (1์๊ฐ)
risk-classified.log ์ง๊ณ (์ผ๋ณ LOW/MIXED/HIGH ๋น์จ)
langfuse-failed.jsonl ๋ฆฌํ๋ ์ด ๋ฒํผ (ํค ์ฃผ์
ํ)
- bash-guard v2 ์ฐจ๋จ ํต๊ณ (ํธ๋ ์ด๋ฉ/UFW/DB/star365 HQ ๊ฐ๊ฐ)
์ค๊ธฐ (1~2 sprint)
โฃ UserPromptSubmit โ ๋ฏผ๊ฐ ํ์์ ๋ณด ํ๋กฌํํธ ๊ฐ์ง
members.star365.site ๊ด๋ จ ํค์๋("71 ํ์", "ํฌ์ธํธ ์ด์ฒด", "ํ์ ์ญ์ ")์ SQL WHERE ํ์ ์์น ์ฃผ์
- ์กํยท์ด๋ง์ฐยท์ด๊ฒฝ์ ๋ฑ ํน์ ์ฌ์ฉ์ ์ด๋ฆ ํฌํจ ํ๋กฌํํธ์ [feedback_external-collab-info-boundary] ๊ฒฝ๊ณ ์๋ ์ฃผ์
โค SessionStart ํ๋ถํ
kahan star365-members /summary ์์ฝ (71 ํ์, 20 ํ๋ซํผ)
- Gate v7 AI ํฌ์ง์
์ํ ์์ฝ
- Bitget ๋์ผํ์ด ์ํ ์์ฝ (kahan
fetch_positions)
- ์ต๊ทผ 24์๊ฐ MIXED/HIGH ๋ช
๋ น ์
โฅ MCO ChatOps ํตํฉ
mco-chatops (2026-04-21 v1) ์ risk-classifier ์ฐ๊ฒฐ
- LOW = auto-exec, MIXED = CEO Queue, HIGH = bash-guard ๋ธ๋ก
- HMAC ์ธ์ฆ์ผ๋ก ์ธ๋ถ(Telegram ๊ทธ๋ฃน "MCO ๋ธ๋ก๊ทธ") ์์๋ ๋ช
๋ น ๋ฐํ โ ์ํ๋ ๋ถ๋ฅ โ ๋ผ์ฐํ
์ฅ๊ธฐ (3~4 sprint)
โฆ Langfuse ๊ธฐ๋ฐ ์ด์ํ์ง AI
- ๊ณผ๊ฑฐ 30์ผ trace๋ฅผ Langfuse์์ ์ถ์ถ
- ๊ฐ Claude ์ธ์
์ ๋๊ตฌ ์ฌ์ฉ ํจํด์ด ์ ์ ๋ถํฌ์์ ๋ฒ์ด๋๋ฉด ์ฆ์
.KILL_CLAUDE ์์ฑ
- ์:
rm 10ํ+, systemctl stop 3ํ+, docker stop 5ํ+ = ์นจ์
์์ฌ
โง 4์๋ฒ hook ์๊ฒฉ ๊ด๋ฆฌ ์ฝ์
admin.star365.site/hooks/manage โ ๊ฐ ์๋ฒ๋ณ settings.json diff, ๋ฐฐํฌ ์ด๋ ฅ, ๋กค๋ฐฑ
- ํ ์๋ฒ๋ง ํจ์นํ๊ณ 30์ด ํ ์ด์ ์์ผ๋ฉด ๋๋จธ์ง 3์๋ฒ ์๋ ๋กค์์ (canary)
โจ Karpathy LLM Wiki 2 (SessionStart ์งํ)
- starium-wiki-v1 ํจํด์ hook ์ปจํ
์คํธ์ ์ ์ฉ
- git log + memory + code diff + Langfuse ์ด๋ฒคํธ๋ฅผ ๋ชจ์
โค1KB Wiki ์ค๋ํซ ์๋ ์์ฑ
- Claude๋ ๋งค ์ธ์
์์ ์ "์ค๋์ ํ๋ก์ ํธ ์ํฉ" ์๋ ์์
๐ ๋จ๊ธด ์์ฐ
/root/.claude/hooks/ โ 6 ์ ๊ท + 1 ํจ์น + ๊ธฐ์กด ํตํฉ
/root/.claude/settings.json โ SessionStart/UserPromptSubmit/PermissionRequest ํ์ฅ
/etc/mco-hooks.env โ 4์๋ฒ ๊ณตํต (600 ๊ถํ)
/opt/star365-hq/scripts/deploy-hooks-4servers.sh โ rsync ๋ฐฐํฌ ์๋ํ
/var/log/mco-channel/risk-classified.log โ ์ํ๋ ๋ถ๋ฅ ๊ธฐ๋ก
/opt/star365-hq/data/pending-ceo-review.jsonl โ CEO ์น์ธ ๋๊ธฐ ํ
/tmp/mco-memory-drafts/ โ Stop hook ์๋ ์์ฑ draft
/root/.claude/projects/-opt/memory/mco-hooks-automation-v1-20260422.md โ ์์ ๋ฉ๋ชจ๋ฆฌ
/opt/star365-hq/docs/01-plan/mco-hooks-automation-v1.plan.md
/opt/star365-hq/docs/02-design/mco-hooks-automation-v1.design.md
/opt/star365-hq/docs/04-report/mco-hooks-automation-v1.report.md (๋ณธ ๋ฌธ์)
๐ ๋ง๋ฌด๋ฆฌ
8 ํธ๋ ร 15๋ถ ร ์์ CEO ๊ถํ์ผ๋ก "MCO + star365 ํตํฉ hooks ์ธํ๋ผ"๋ฅผ ์์. ๋จ์ Langfuse ํค ์ฃผ์
๊ณผ CEO Queue UI๋ ๋ค์ sprint 1์๊ฐ์ด๋ฉด ๋ง๋ฌด๋ฆฌ. ๋ชจ๋ ์ฐ์ถ๋ฌผ์ 4์๋ฒ์ ์ด๋ฏธ ๋ฐ์, ๊ธฐ์กด ํธ๋ ์ด๋ฉ/HQ ์๋น์ค ๋ฌด์ค๋จ.