ภาพรวมสถาปัตยกรรม (Enterprise)
เมื่อต้องใช้ knowledge base ร่วมกัน ข้าม session และข้ามทีม ระดับองค์กร บน on-prem (เชื่อมต่อภายใน ใช้ได้แม้ air-gap) แนวคิดหลักมีประโยคเดียว:
Git คือต้นทางความจริง · MCP server ภายในคือ access layer กลาง
ทุก session และทุก agent — ไม่ว่า framework หรือ model ไหน — ต่อ MCP endpoint ภายในตัวเดียวกัน ประวัติ git คือ "ความจำข้าม session" โดยธรรมชาติ · อ่านเร็วทันที · เขียนผ่าน gate (PR หรือ lease)
แผนภาพ
flowchart TB
subgraph net["เครือข่ายภายใน (on-prem / air-gap)"]
MCP["OKF MCP server
search · get · propose / commit"]
GIT["Git server (Gitea/GitLab)
= OKF repo · ต้นทางความจริง"]
IDX["Search index
BM25 (+ semantic)"]
CI["CI runner
okf-validate + viz"]
MCP -->|"pull / webhook"| GIT
MCP --> IDX
GIT -->|"PR/MR triggers"| CI
end
A1["Agent team A"] -->|"MCP: HTTP/SSE + token/mTLS"| MCP
A2["Agent team B"] --> MCP
CR["CI / cron"] --> MCP
องค์ประกอบ
| # | ส่วน | ตัวเลือก self-host | บทบาท |
|---|---|---|---|
| 1 | Git server | Gitea / GitLab CE | ต้นทางความจริง versioned (repo ต่อทีม หรือ monorepo + CODEOWNERS) |
| 2 | OKF MCP server | server/okf_mcp_server.py | access layer ที่ทุก agent ต่อ — read/search/propose; stdio + HTTP/SSE |
| 3 | Search index | tools/okf-index.py (+ embed) | ค้นเร็วเมื่อ wiki โตเกิน ~150 หน้า |
| 4 | CI gate | Gitea Actions / GitLab CI | บล็อก merge ที่ไม่ conformant + regen viz |
| 5 | Reverse proxy | Caddy / Traefik / nginx | TLS + auth (token / OIDC / mTLS) หน้า MCP |
Read path (กรณีปกติ — เร็ว ไม่มี lock)
- agent เรียก
okf_search("WAU นิยามยังไง")→ ได้ Concept ID จัดอันดับ okf_get_concept("metrics/weekly-active-users")→ frontmatter + body โหลดเข้า contextokf_read_index()เมื่อต้องการสำรวจแบบ progressive disclosure
อ่านพร้อมกันได้ไม่จำกัด ไม่มี contention
Write path
มี 2 โมเดลให้เลือก (บทถัดไป):
- PR-gated (ค่าเริ่มต้น): เขียนผ่าน branch + PR → CI ตรวจ → คน/curator merge — ปลอดภัย มี audit/review
- Lease/lock: สำหรับทีมที่เขียนหนัก — lease ต่อ concept กันชนกัน เขียนตรงเข้า shared branch
ความหมายของ "ข้าม session / ข้ามทีม"
- ข้าม session: ไม่มี state ต่อ session — session ใหม่
git pullได้ทุกอย่างที่ session ก่อนเขียน wiki ทบต้น - ข้ามทีม: monorepo +
CODEOWNERSต่อ subtree หรือ federated bundles (repo ต่อโดเมน, MCP server mount หลาย bundle และ namespace ด้วยชื่อ bundle เช่นsales:tables/orders)
ต่อไป: ลงมือ deploy → ติดตั้งแบบ self-host