| # ้กน็ฎๆถๆๆฆ่ง |
|
|
| ## ้กน็ฎๅฎไฝ |
|
|
| 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 โ โ |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| ``` |
|
|