File size: 14,652 Bytes
eeeb2b6 96f34e3 eeeb2b6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | # ้กน็ฎๆถๆๆฆ่ง
## ้กน็ฎๅฎไฝ
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๏ผๅทฅๅ
ทๆฑ ่ฃ
้
๏ผ
```
### ๅฏๅจ้ถๆฎต่ฏฆ่งฃ
1. **`src/entrypoints/cli.tsx`** โ ๆๅคๅฑๅ
ฅๅฃใๅ
ๆซๆ `--version`/`-v`ใ`--dump-system-prompt`ใ`--bridge`ใ`--daemon`ใ`--tmux` ็ญๅฟซ้่ทฏๅพๆ ๅฟใ่ฅๆ ๅน้
ๅๅจๆๅฏผๅ
ฅ `main.tsx` ๅนถ่ฐ็จ `cliMain()`ใ
2. **`src/main.tsx`** โ ๆๅปบ Commander CLI ๅฎไน๏ผ็บฆ 180+ ๅฝไปค๏ผใๆง่ก้
็ฝฎๅ ่ฝฝใ็ญ็ฅๆฃๆฅใ้ฅๆตๅๅงๅใไผ่ฏๆขๅค็ญใๆๅ่ฐ็จ `launchRepl()` ๆธฒๆ็ป็ซฏ UIใ
3. **`src/replLauncher.tsx`** โ ่ด่ดฃๅจๆๅ ่ฝฝ `<App>` ๅ `<REPL>` ็ปไปถๅนถ่ฐ็จ `renderAndRun()`ใ
4. **`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()` ๅฝๆฐๅฎ็ฐ็ผ่ฏๆๆญปไปฃ็ ๆถ้ค๏ผ
```typescript
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 โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
|