๐Ÿ“– star365 Docs
โ† ๋ณด๊ณ ์„œ ๋ชฉ๋ก

hermes-agent surgical ๋„์ž… โ€” Phase 1~6 ์ข…ํ•ฉ retrospective (2026-05-07)

Executive summary

์ง€ํ‘œ ์ˆ˜์น˜
๊ธฐ๊ฐ„ 2026-05-07 ๋‹จ์ผ ๋‚ ์งœ (8์‹œ๊ฐ„ sprint)
Phase 6
Track 7 (A/B/C/D/E/F/G)
๋ณ€๊ฒฝ ํŒŒ์ผ 12 (์‹ ๊ทœ 5 + ์ˆ˜์ • 7)
๋ณ€๊ฒฝ LOC 860 (Phase 14: ~700 + Phase 5: ~310 + Phase 6: ~150)
Done Criteria 47 (Phase 1~5: 39 + Phase 6: 8)
PASS rate 100% (Phase 6 ์ •๋ฐ€์ ๊ฒ€ ํ›„ fix 5๊ฑด ๋ฐ˜์˜)
ํŠธ๋ ˆ์ด๋”ฉ ์˜ํ–ฅ 0 (gate-pair-hedge / gunja-pair-hedge / multi-tenant active ์œ ์ง€)
UFW ๋ณ€๊ฒฝ 0
DB DROP 0 (ํ…Œ์ด๋ธ” ์‹ ๊ทœ 2 + ์ธ๋ฑ์Šค 3 + ์ปฌ๋Ÿผ metadata.slug 8๊ฑด๋งŒ)
์žฌ๋ถ€ํŒ… 0
LLM ๋น„์šฉ <$0.30 (๊ฒ€์ฆ ํ˜ธ์ถœ๋งŒ, cost_events ๋ˆ„์ )
Gemini ํ‰๊ฐ€ 10/9/9/9 PASS (Phase 1~4)

hermes-agent v0.12 ๊ฒฉ์ฐจ ๋งคํŠธ๋ฆญ์Šค โ†’ ๋„์ž… ๊ฒฐ๊ณผ

hermes ์ž์‚ฐ ์ง์ „ paperclip ๊ฒฉ์ฐจ ๋„์ž… Phase ๊ฒฐ๊ณผ
OSV malware check ์—†์Œ ๐Ÿ”ด Phase 2 + Phase 5 install hook โœ… 5์„œ๋ฒ„ stdlib only
์ž์—ฐ์–ด cron scheduler systemd timer ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ•„์š” ๐Ÿ”ด Phase 3 โœ… ceo.star365.site/cron UI
๋ฉ”์‹œ์ง• ๊ฒŒ์ดํŠธ์›จ์ด (Discord) mco-bot Telegram only ๐Ÿ”ด Phase 4 โœ… Spidey Bot ์ฑ„๋„
GitHub webhook ์ž๋™ ํŠธ๋ฆฌ๊ฑฐ ์—†์Œ ๐Ÿ”ด Phase 5 โœ… HMAC + paperclip issues ์ž๋™
Subagent ๊ฒฉ๋ฆฌ ํ‘œ์ค€ ์—†์Œ ๐ŸŸก Phase 5 โœ… depth=2 + 13 ์‹œํฌ๋ฆฟ redaction
OpenAI ํ˜ธํ™˜ API server ์—†์Œ ๐Ÿ”ด Phase 6 โœ… /v1/* HTTPS ์™ธ๋ถ€ ๋…ธ์ถœ
Skills Hub agentskills.io /learn ์ž์ฒด ๐ŸŸข โ€” ๋ณด๋ฅ˜ (ํ˜„ ์šด์˜ ์ถฉ๋ถ„)
๋ฉ”๋ชจ๋ฆฌ ๋ฐฑ์—”๋“œ ๋‹ค์–‘ํ™” ๋‹จ์ผ ๋ฐฑ์—”๋“œ ๐ŸŸข โ€” ๋ณด๋ฅ˜

๋„์ž…์œจ: 6/8 (75%) โ€” ๋ณด๋ฅ˜ 2๊ฑด์€ "ํ˜„ ์ž์‚ฐ ์ถฉ๋ถ„"์œผ๋กœ ๊ฒฐ์ •

Phase ๋ณ„ ์ž์‚ฐ ์ธ๋ฒคํ† ๋ฆฌ

Phase 2 โ€” OSV malware check

Phase 3 โ€” ์ž์—ฐ์–ด cron UI

Phase 4 โ€” Discord ์ฑ„๋„

Phase 5 โ€” Subagent ๊ฒฉ๋ฆฌ + OSV install hook + GitHub webhook

Phase 6 โ€” OpenAI ํ˜ธํ™˜ API bridge

์™ธ๋ถ€ ํ†ตํ•ฉ ๊ฐ€์ด๋“œ

1. ์ž์—ฐ์–ด cron ๋“ฑ๋ก (CEO ๊ถŒํ•œ)

CEO_KEY=$(cat /root/.ceo_access_key)  # paperclip ๋ณธ์ธ๋งŒ

curl -X POST "https://ceo.star365.site/api/cron/create?key=$CEO_KEY" \
  -H "content-type: application/json" \
  -d '{
    "nl": "๋งค์ผ 09:00 5์„œ๋ฒ„ ํ—ฌ์Šค ์ฒดํฌ",
    "command": "/opt/star365-hq/scripts/health-check.sh",
    "name": "daily-health",
    "deliver": ["telegram", "discord"]
  }'

์‘๋‹ต:

{
  "ok": true,
  "job": {"id": ..., "slug": "...", "on_calendar": "*-*-* 09:00:00"},
  "llm_provider": "xai",
  "next_runs": "..."
}

2. GitHub webhook ์™ธ๋ถ€ ๋“ฑ๋ก (Phase 5 ํ›„์†, ์‚ฌ์šฉ์ž ์•ก์…˜)

GitHub repo Settings โ†’ Webhooks โ†’ Add webhook:

ํ™œ์„ฑํ™” ํ›„ PR/Issue ๋ฐœ์ƒ ์‹œ paperclip์ด ์ž๋™:

3. OpenAI ํ˜ธํ™˜ API ํ˜ธ์ถœ

Python (OpenAI SDK ๊ทธ๋Œ€๋กœ)

from openai import OpenAI

client = OpenAI(
    base_url="https://ceo.star365.site/v1",
    api_key="sk-paperclip-..."  # /etc/star365-worker.env OPENAI_BRIDGE_KEY
)

# ๋ชจ๋ธ ๋ชฉ๋ก
models = client.models.list()
for m in models.data:
    print(f"{m.id}: {m.display_name} ({m.title})")

# ์ธํ”„๋ผ ๋ณธ๋ถ€์žฅ์—๊ฒŒ ์งˆ๋ฌธ
resp = client.chat.completions.create(
    model="infra-lead",
    messages=[
        {"role": "user", "content": "5์„œ๋ฒ„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ต์‹ฌ ์ง€ํ‘œ 3๊ฐœ"}
    ],
    max_tokens=300
)
print(resp.choices[0].message.content)
print(f"agent: {resp._paperclip['agent_name']}")

curl (multi-turn)

BRIDGE_KEY=$(grep ^OPENAI_BRIDGE_KEY= /etc/star365-worker.env | cut -d= -f2)

curl -X POST https://ceo.star365.site/v1/chat/completions \
  -H "Authorization: Bearer $BRIDGE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "commerce-lead",
    "messages": [
      {"role": "user", "content": "๋งค์ถœ ํ–ฅ์ƒ ๋ฐฉ๋ฒ•์€?"},
      {"role": "assistant", "content": "๋””์ง€ํ„ธ ๋งˆ์ผ€ํŒ…, ๊ฐ€๊ฒฉ ์ตœ์ ํ™”, ๊ณ ๊ฐ retention 3๊ฐ€์ง€์ž…๋‹ˆ๋‹ค."},
      {"role": "user", "content": "๋””์ง€ํ„ธ ๋งˆ์ผ€ํŒ… ๊ตฌ์ฒด์ ์œผ๋กœ?"}
    ],
    "max_tokens": 500
  }'

์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ชจ๋ธ (8 ์ง์›)

model ID ์ง์› ์ „๋ฌธ ์˜์—ญ
medical-lead ์˜๋ฃŒ ๋ณธ๋ถ€์žฅ plus365, ์ง„๋ฃŒ, ๊ฑด๊ฐ•
legal-lead ๋ฒ•๋ฌด/IP ๋ณธ๋ถ€์žฅ UpFinance prefix, ์•ฝ๊ด€, ์ปดํ”Œ๋ผ์ด์–ธ์Šค
mlm-lead MLM ๋ณธ๋ถ€์žฅ stage8, MLM ์šด์˜, cap rule
commerce-lead ์ปค๋จธ์Šค ๋ณธ๋ถ€์žฅ ๋งค์ถœ, ๋งˆ์ผ€ํŒ…, ๊ฐ€๊ฒฉ
media-lead ๋ฏธ๋””์–ด ๋ณธ๋ถ€์žฅ metaquant ๋žœ๋”ฉ, ์ฝ˜ํ…์ธ , ์ฑ„๋„
infra-lead ์ธํ”„๋ผ ๋ณธ๋ถ€์žฅ 5์„œ๋ฒ„, ๋ชจ๋‹ˆํ„ฐ๋ง, cert
customer-lead ๊ณ ๊ฐ ๋ณธ๋ถ€์žฅ ํšŒ์›, NPS, ๋งŒ์กฑ๋„
trading-lead ํŠธ๋ ˆ์ด๋”ฉ ๋ณธ๋ถ€์žฅ gate v7, gunja, Bitget

4. 8 ์ง์› ์ž์œจ ์ž‘์—… ํ์— ์ถ”๊ฐ€

-- paperclip DB ์ง์ ‘ INSERT
INSERT INTO issues (company_id, title, description, status, priority, assignee_agent_id)
SELECT 'a4497805-56ab-4868-aab3-85ba2e12a04b'::uuid,
       '์ œ๋ชฉ', '์„ค๋ช…', 'todo', 'medium', id
FROM agents WHERE company_id='a4497805-56ab-4868-aab3-85ba2e12a04b'
  AND metadata->>'slug' = 'infra-lead';

star365-agent-runner.timer (30s tick)๊ฐ€ ์ž๋™ picking โ†’ LLM โ†’ work_product ์ƒ์„ฑ โ†’ ceo.star365.site/pending-approvals ๋…ธ์ถœ.

์•ˆ์ „ ์žฅ์น˜ (Phase 1~6 ์ผ๊ด€ ์ ์šฉ)

๋ฐœ๊ฒฌ๋œ ํ•จ์ • (๋ฉ”๋ชจ๋ฆฌ 7๊ฑด ๋ˆ„์ )

feedback memory ํ•จ์ •
feedback_express-raw-vs-json-middleware Express raw body vs ๊ธ€๋กœ๋ฒŒ json ์ถฉ๋Œ
feedback_ufw-bypass-via-internal-direct-send UFW ๋ณ€๊ฒฝ ๊ธˆ์ง€ ์‹œ paperclip ์ง์ ‘ ์†ก์‹ 
feedback_llm-quota-deterministic-fallback LLM cascade quota ์ดˆ๊ณผ โ†’ regex fallback
feedback_pm2-reload-ecosystem-explicit PM2 reload ๋ช…์‹œ ecosystem ๊ฒฝ๋กœ ํ•„์ˆ˜
feedback_bridge-bearer-timing-safe Bearer string ๋น„๊ต timing attack
feedback_openai-compat-stream-multiturn stream:true ๋ช…์‹œ ๊ฑฐ๋ถ€ + multi-turn messages ์ „์ฒด
feedback_external-oss-gap-analysis-first ์™ธ๋ถ€ OSS ํ†ต์งธ ๋„์ž… ๊ธˆ์ง€, ๊ฒฉ์ฐจ ๋งคํŠธ๋ฆญ์Šค ๋จผ์ €

๊ฑฐ์ง“ PASS / ๋ˆ„๋ฝ ์ž๊ฐ€ ๋ฐœ๊ฒฌ + ์ˆ˜์ • (์ •๋ฐ€์ ๊ฒ€ 2ํšŒ)

1์ฐจ ์ •๋ฐ€์ ๊ฒ€ (Phase 1~5 ํ›„)

2์ฐจ ์ •๋ฐ€์ ๊ฒ€ (Phase 6 ํ›„)

๊ฒฐ๋ก 

NousResearch hermes-agent v0.12 (100k+ stars, 73,073 LOC) ํ†ต์งธ ๋„์ž… ๊ฑฐ๋ถ€, ๊ฒฉ์ฐจ ๋งคํŠธ๋ฆญ์Šค + surgical ์ถ”์ถœ/์ž์ฒด ๊ตฌํ˜„ ํŒจํ„ด์œผ๋กœ 6 phase ์•ˆ์ „ ๋„์ž…. ํŠธ๋ ˆ์ด๋”ฉ ๋ฌด์ค‘๋‹จ, ์™ธ๋ถ€ OSS ์ข…์†์„ฑ ์ตœ์†Œ.

ํ˜„์žฌ paperclip์˜ 8 AI ์ง์›์ด ์™ธ๋ถ€์—์„œ OpenAI SDK ํ‘œ์ค€์œผ๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ โ€” https://ceo.star365.site/v1/* HTTPS ํ™œ์„ฑ.

๋‹ค์Œ ๊ฐ€๋Šฅ ์˜์—ญ:

  1. 8 AI ์ง์› ์ฒซ ์‹ค ๋น„์ฆˆ๋‹ˆ์Šค ํƒœ์Šคํฌ ์‹คํ–‰
  2. GitHub repo ์ธก webhook ์™ธ๋ถ€ ๋“ฑ๋ก (์‚ฌ์šฉ์ž ์•ก์…˜)
  3. ํŠธ๋ ˆ์ด๋”ฉ / stage8 / hospital wiki ๋‹ค๋ฅธ ์˜์—ญ