้กน็ฎๆถๆๆฆ่ง
้กน็ฎๅฎไฝ
Codev ๆฏไธไธช AI CLI ๆบ่ฝไปฃ็๏ผๅบไบ Anthropic Claude Code ๆบไปฃ็ ๆๅปบ๏ผๅขๅผบไบๅฏนไปฅไธๅบๆฏ็ๆฏๆ๏ผ
- VRM ๆก้ขไผดไพฃ๏ผFriend๏ผ๏ผๅจๅไธ่ฟ็จไธญ่ฟ่ก HTTP/SSE ๆๅก๏ผ้ฉฑๅจ 3D VRM ่ง่ฒ็่กจๆ ใ่ฏญ้ณๅๆๆฌๆฐๆณก
- ๅคๆจกๅๆไพ่ ๏ผ้่ฟๅๅไปฃ็ๅฑๅฐ Anthropic Messages API ๅ่ฎฎ็ฟป่ฏไธบ OpenAI Chat/Responses API ๅ่ฎฎ๏ผๆฏๆๆฐๅ็ง็ฌฌไธๆนๆจกๅ
- ่ฏญ้ณๅฏน่ฏ๏ผๅบไบ cpal๏ผRust ๅ็้ณ้ขๅบ๏ผ็่ฟ็จๅ ้ณ้ขๆ่ท๏ผ็ปๅ Silero VAD๏ผONNX ๅฎๆถ่ฏญ้ณๆดปๅจๆฃๆต๏ผๅๅค็ง STT/TTS ๅผๆ
- ่ชๅจๅๆจกๅผ๏ผ็ฎๆ ็ณป็ป๏ผGoals๏ผใๅๅฐไปปๅก๏ผBackground Tasks๏ผใMCP ๅทฅๅ ท้ๆใFeishu/Telegram Bot ๆกฅๆฅ
ๆๆฏๆ
| ็ฑปๅซ | ๆๆฏ |
|---|---|
| ่ฟ่กๆถ | **Bun 1.3+**๏ผJavaScript/TypeScript ่ฟ่กๆถไธๆๅ ๅจ๏ผ |
| ่ฏญ่จ | TypeScript๏ผๅ จไปๅบไฝฟ็จ strict ๆจกๅผ๏ผ |
| ็ป็ซฏ UI | Ink v6๏ผReact ็ป็ซฏๆธฒๆๆกๆถ๏ผ+ React 19 |
| 3D ๆธฒๆ | Three.js๏ผVRM ๅ็ซฏไฝฟ็จ๏ผ้่ฟ {React} Three Fiber๏ผ |
| ่ฏญ้ณๆดปๅจๆฃๆต | onnxruntime-web (WASM) โ Silero VAD ONNX ๆจกๅ๏ผ้ onnxruntime-node๏ผ้ฟๅ Bun ๆฎต้่ฏฏ๏ผ |
| ๆก้ข็ชๅฃ | Tauri๏ผๅฏ้ๆก้ข็ชๅฃๆจกๅผ๏ผ |
| ๅ ็ฎก็ | Bun workspace๏ผmonorepo๏ผ๏ผpackageManager: bun@1.3.11 |
| ๆๅปบ | Bun ๅ
ๅปบๆๅ
scripts/build.ts๏ผๆฏๆ feature() ๆญปไปฃ็ ๆถ้ค |
ๅ ฅๅฃๆต็จ
cli.tsx (bootstrap)
โ
โผ
main.tsx (Commander CLI ๅฎไน)
โ โโโ ๆณจๅ ~180+ ๅฝไปค๏ผcommands.ts โ command modules๏ผ
โ โโโ ๆณจๅ ~60+ AI ๅทฅๅ
ท๏ผtools.ts โ tool modules๏ผ
โ
โผ
replLauncher.tsx
โ
โผ
Ink REPL (screens/REPL.tsx)
โโโ PromptInput๏ผๆๆฌ่พๅ
ฅ็ปไปถ๏ผ
โโโ messageQueueManager๏ผ็ปไธๅฝไปค้ๅ๏ผ
โโโ query.ts๏ผAI ่ฏทๆฑๅๅ๏ผ
โโโ useMergedTools๏ผๅทฅๅ
ทๆฑ ่ฃ
้
๏ผ
ๅฏๅจ้ถๆฎต่ฏฆ่งฃ
src/entrypoints/cli.tsxโ ๆๅคๅฑๅ ฅๅฃใๅ ๆซๆ--version/-vใ--dump-system-promptใ--bridgeใ--daemonใ--tmux็ญๅฟซ้่ทฏๅพๆ ๅฟใ่ฅๆ ๅน้ ๅๅจๆๅฏผๅ ฅmain.tsxๅนถ่ฐ็จcliMain()ใsrc/main.tsxโ ๆๅปบ Commander CLI ๅฎไน๏ผ็บฆ 180+ ๅฝไปค๏ผใๆง่ก้ ็ฝฎๅ ่ฝฝใ็ญ็ฅๆฃๆฅใ้ฅๆตๅๅงๅใไผ่ฏๆขๅค็ญใๆๅ่ฐ็จlaunchRepl()ๆธฒๆ็ป็ซฏ UIใsrc/replLauncher.tsxโ ่ด่ดฃๅจๆๅ ่ฝฝ<App>ๅ<REPL>็ปไปถๅนถ่ฐ็จrenderAndRun()ใsrc/screens/REPL.tsxโ ไธป REPL ๅฑๅน๏ผๅ ๅซๆถๆฏๅๅฒใPromptInputใๅทฅๅ ท่ฐ็จๆธฒๆ็ญใ
ๆถๆไบฎ็น
1. ๅ่ฟ็จๆถๆ
Friend VRM ๆๅกไธ CLI ่ฟ่กๅจๅไธ Bun ่ฟ็จไธญ๏ผ
friend/server.ts้่ฟBun.serve()็ๅฌ127.0.0.1:3456- SSE๏ผServer-Sent Events๏ผ็จไบๆๅก็ซฏๅฐ VRM ๅ็ซฏ็ๅฎๆถๆจ้๏ผ่กจๆ ใ้ณ้ขใๆๆฌๆฐๆณก๏ผ
- HTTP POST ็จไบ VRM ๅ็ซฏๅ FriendService ๅ้ๆถๆฏ
- ๆถ้คไบ็ฌ็ซ็ๅญ่ฟ็จ็ฎก็ๅ CLI SDK ไผ่ฏ็ๅผ้
2. ๆจกๅๅๅทฅๅ ท็ณป็ป
60+ AI ๅฏ่ฐ็จๅทฅๅ
ท้่ฟ buildTool() ๆกๆถๆณจๅใๆ ธๅฟๅทฅๅ
ทๅ
ๆฌ๏ผ
- ๆไปถๆไฝ:
BashTool,FileReadTool,FileEditTool,FileWriteTool,GlobTool,GrepTool - Web/ๆ็ดข:
WebFetchTool,WebSearchTool - ไปปๅก็ฎก็:
TaskCreateTool,TaskGetTool,TaskUpdateTool,TaskListTool,TaskStopTool - MCP:
ListMcpResourcesTool,ReadMcpResourceTool - Friend ็นๆ:
FriendEmotionTool๏ผVRM ่กจๆ + ๅฟๆ ็ฎก็๏ผ,FriendScreenObserveTool - ็ฎๆ ็ณป็ป:
GoalCreateTool,GoalGetTool,GoalUpdateTool - ๅทฅไฝๆต:
WorkflowTool๏ผ้่ฟ WORKFLOW_SCRIPTS feature flag๏ผ - ๅ
ถไป:
AgentTool,SkillTool,TodoWriteTool,ToolSearchTool,ConfigTool็ญ
ๅทฅๅ
ท้่ฟ assembleToolPool() ไธ MCP ๅทฅๅ
ทๅๅนถๅป้๏ผ็ปไธๆไพ็ป AI ๆจกๅใ
3. ๅค Provider ไปฃ็
src/server/proxy/handler.ts ๅฎ็ฐๅ่ฎฎ็ฟป่ฏๅๅไปฃ็๏ผ
- ่พๅ
ฅ: CLI ไปฅ Anthropic Messages API ๆ ผๅผๅ้่ฏทๆฑๅฐ
POST /proxy/v1/messagesๆPOST /proxy/providers/:id/v1/messages - ่ฝฌๆข:
anthropicToOpenaiChat.ts/anthropicToOpenaiResponses.tsๅฐ่ฏทๆฑไฝ็ฟป่ฏไธบ OpenAI ๆ ผๅผ - ่ฝฌๅ: ๅ้ๅฐไธๆธธ็ฌฌไธๆนๆไพๅ็ API
- ๅไผ :
openaiChatToAnthropic.ts/openaiResponsesToAnthropic.tsๅฐๅๅบ็ฟป่ฏๅ Anthropic ๆ ผๅผ - ๆตๅผ: ๆฏๆ SSE ๆตๅผๅๅบ็ๅๅ่ฝฌๆข๏ผ
openaiChatStreamToAnthropic.ts/openaiResponsesStreamToAnthropic.ts๏ผ
4. Feature Flag ็ณป็ป
้่ฟ bun:bundle ็ feature() ๅฝๆฐๅฎ็ฐ็ผ่ฏๆๆญปไปฃ็ ๆถ้ค๏ผ
import { feature } from 'bun:bundle'
// ไปฅไธไปฃ็ ๅจ้ KAIROS ๆๅปบไธญ่ขซๅฎๅ
จๆถ้ค
const assistantModule = feature('KAIROS')
? require('./assistant/index.js')
: null
ๅทฒๅฎไน็ feature flags๏ผ้จๅ๏ผ๏ผVOICE_MODE, KAIROS, DAEMON, BRIDGE_MODE, COORDINATOR_MODE, PROACTIVE, AGENT_TRIGGERS, MCP_SKILLS, WORKFLOW_SCRIPTS, BUDDY, FORK_SUBAGENT, MONITOR_TOOL, WEB_BROWSER_TOOL, TERMINAL_PANEL ็ญใ
ๆ ธๅฟๆจกๅไธ่ง
| ็ฎๅฝ | ่่ดฃ |
|---|---|
src/entrypoints/ |
็จๅบๅ ฅๅฃ็น๏ผcli.tsx bootstrap, init.ts ๅๅงๅ๏ผ |
src/main.tsx |
Commander CLI ๅฎไนใๅฏๅจๆต็จ็ผๆ |
src/commands/ |
180+ ๆๆ ๅฝไปค๏ผ/clear, /commit, /config, /friend ็ญ๏ผ |
src/commands.ts |
ๅฝไปคๆณจๅไธญๅฟ๏ผไปๅๆจกๅๅ ่ฝฝๅนถๅฏผๅบๅฝไปคๅ่กจ |
src/tools/ |
60+ AI ๅทฅๅ ทๅฎ็ฐ๏ผBash, Read, Edit, WebSearch, FriendEmotion ็ญ๏ผ |
src/tools.ts |
ๅทฅๅ
ทๆณจๅไธญๅฟ๏ผgetAllBaseTools() ไธ assembleToolPool() |
src/ink/ |
Ink ็ป็ซฏๆธฒๆๅผๆ๏ผ่ชๅฎไน fork๏ผๅ ๅซ reconcilerใlayoutใrenderer ็ญ๏ผ |
src/screens/ |
ไธป่ฆ UI ๅฑๅน๏ผREPL ไธปๅฑๅนใ่ฎพ็ฝฎๅๅฏผ็ญ๏ผ |
src/components/ |
React ็ปไปถ๏ผApp, PromptInput, ๆ้่ฏทๆฑ็ญ๏ผ |
src/hooks/ |
React hooks๏ผuseMergedTools, useCommandQueue, useReplBridge ็ญ๏ผ |
src/friend/ |
VRM ๆก้ขไผดไพฃๆๅก๏ผFriendService, SSE, TTS, VAD, STT๏ผ |
src/server/ |
HTTP/WebSocket ๆๅกๅจ๏ผAPI ่ทฏ็ฑใProvider ไปฃ็ใMCPใH5 ่ฎฟ้ฎ๏ผ |
src/server/proxy/ |
ๅค Provider ๅๅไปฃ็๏ผๅ่ฎฎ็ฟป่ฏ๏ผAnthropic โ OpenAI๏ผ |
src/bridge/ |
่ฟ็จๆกฅๆฅ๏ผWebSocket โ claude.ai ่ฟ็จไผ่ฏ๏ผ |
src/query/ |
AI ่ฏทๆฑๆฅ่ฏขๅผๆ๏ผquery.tsใQueryEngine.ts๏ผ |
src/context/ |
็ณป็ปไธไธๆๆๅปบ๏ผcontext.ts๏ผ็ๆ็ณป็ปๆ็คบ่ฏ๏ผ |
src/services/ |
ๅ็ซฏๆๅก๏ผAPI client, Analytics, MCP, PolicyLimits, Compact ็ญ๏ผ |
src/utils/ |
ๅทฅๅ ทๅฝๆฐ๏ผ้ ็ฝฎใ่ฎค่ฏใๆถๆฏ้ๅใๆ้ใMCP ๆไปถใ่ฎพ็ฝฎ็ญ๏ผ |
src/state/ |
ๅบ็จ็ถๆ็ฎก็๏ผAppStateStore๏ผ |
src/types/ |
TypeScript ็ฑปๅๅฎไน |
src/constants/ |
ๅธธ้๏ผOAuthใไบงๅๅใๆ็คบ่ฏใๅทฅๅ ทๅฎไน็ญ๏ผ |
src/voice/ |
่ฏญ้ณๆจกๅผๅ
ฅๅฃ๏ผvoiceModeEnabled.ts๏ผ |
src/assistant/ |
ๅฉๆๆจกๅผ๏ผKAIROS feature flag ๅฎๆค๏ผ |
src/coordinator/ |
ๅ่ฐๅจๆจกๅผ๏ผๅค agent ๅไฝ๏ผ |
src/buddy/ |
Buddy ๅญ agent ็ณป็ป๏ผBUDDY feature flag๏ผ |
src/daemon/ |
ๅฎๆค่ฟ็จๆจกๅผ๏ผ้ฟๆ่ฟ่ก็ๅๅฐๆๅก๏ผ |
src/plugins/ |
ๆไปถ็ณป็ป๏ผๆไปถๅ็ฐใๅ ่ฝฝใ็ๅฝๅจๆ๏ผ |
src/skills/ |
ๆ่ฝ็ณป็ป๏ผ็จๆท่ชๅฎไน prompt ๅผๅฝไปค๏ผ |
src/tasks/ |
ไปปๅก็ณป็ป๏ผLocalAgentTask, LocalShellTask, RemoteAgentTask ็ญ๏ผ |
src/cli/ |
CLI ๅทฅๅ ท๏ผbg.ts ๅๅฐไผ่ฏ็ฎก็ใtemplateJobs ๆจกๆฟไปปๅก๏ผ |
src/bootstrap/ |
ๅฏๅจ็ถๆ๏ผstate.ts ๅฏผๅ ฅๅ็ถๆ่ฎพ็ฝฎ๏ผ |
src/config/ |
้ ็ฝฎๅค็ |
src/vim/ |
Vim ๆจกๅผๆฏๆ |
src/migrations/ |
ๆฐๆฎ่ฟ็งป |
src/memdir/ |
่ฎฐๅฟ็ฎๅฝๆฏๆ |
src/upstreamproxy/ |
ไธๆธธไปฃ็ๆฏๆ |
src/remote/ |
่ฟ็จๆงๅถๆฏๆ |
native-modules/ |
Rust/C++ ๅ็ๆจกๅ๏ผcpal ้ณ้ขๆ่ท็ญ๏ผ |
ๆฐๆฎๆตๆป่ง
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CLI ่ฟ็จ (Bun) โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ cli.tsx โโโโโถโ main.tsx โโโโโถโ REPL.tsx โโโโโถโ PromptInput โ โ
โ โ (bootstrap) โ (Commander) โ (Ink UI) โ โ (่พๅ
ฅๆก) โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโฌโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโผโโโโโ โ
โ โ โ messageQueue โ โ
โ โ โ Manager.enqueue โ โ
โ โ โโโโโโโโโโฌโโโโโโโโโ โ
โ โ โ โ
โ โ โโโโโโโโโโผโโโโโโโโโ โ
โ โ โ query() โ โ
โ โ โ (AI ่ฏทๆฑ) โ โ
โ โ โโโโฌโโโโโฌโโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโ โ โ
โ โ โ โ โ
โ โผ โ โโโโโโโโโโผโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ Tool Execution โ โ
โ โ Anthropic SDK (1P) โ โ โ (Bash/Read/Edit โ โ
โ โ POST /v1/messages โ โ โ ...็ญ ~60 ๅทฅๅ
ท) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โโโโโโโโโโโโผโโโโโโโโโโโ โ โ
โ โ server/proxy/ โ โ โ
โ โ handler.ts โ โ โ
โ โ (3P Provider ไปฃ็) โ โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโ โ โ
โ โ โ โ
โ โผ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ OpenAI Chat/Responses API โ โ โ
โ โ (OpenAI/Groq/DeepSeek ็ญ) โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ โ
โ โ FriendService (ๅ่ฟ็จ) โ โ โ
โ โ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโผโโโโโโโ โ โ
โ โ โ Silero โ โ STT โ โ SSE Server โ โ โ
โ โ โ VAD โโโโ (Doubao/ โ โ :3456 โ โ โ
โ โ โ (ONNX) โ โ Whisper) โ โโโโโโโโฌโโโโโโโโ โ โ
โ โ โโโโโโโโโโโ โโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโ โโโโโโโโโโโโ โ โ โ
โ โ โ TTS โ โ EdgeTTS/ โ โ โ โ
โ โ โ Audio โโโโ QwenTTS โ โ โ โ
โ โ โโโโโโโโโโโ โโโโโโโโโโโโ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VRM ๅ็ซฏ (Web/Desktop) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SSE โ VRMScene โ TextBubble โ โ
โ โ โ EmoteController โ โ
โ โ โ MotionController โ โ
โ โ โ AudioPlayback โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ HTTP POST โ FriendService.sendText โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ