🌸 Anime Companion for VS Code
Phiên bản hiện tại: v0.1.27 📦 Cài đặtVS Code (Microsoft Marketplace)
Cursor / VSCodium / Theia / Gitpod (Open VSX Registry)
Hoặc tải Manual install (mọi VS Code-based editor)
✨ Tính năng nổi bật🎭 Live2D Companion
💫 Tương tác đa dạng
🔊 Audio + Lip-sync 3 ngôn ngữ
🎧 Background Ambient
🤖 Reactive Engine — phản ứng theo môi trường code
Mỗi kênh đều có thể bật/tắt độc lập qua settings. 🏆 Achievements
📊 Stats
🍅 Pomodoro tích hợp
🖱️ Custom Right-click Menu (15 mục)Click chuột phải lên companion để mở menu inline — không phải mở Command Palette:
🌙 Quiet HoursĐặt khung giờ tắt mọi bubble, ví dụ trong giờ họp:
Mood/expression vẫn cập nhật bình thường — chỉ tắt message để không phân tâm. 🪄 Custom Phrases & KeywordsBạn có thể thêm câu riêng cho companion:
Hoặc thêm keyword reaction riêng:
🎵 Custom Ambient TracksBạn có thể thêm track local của riêng mình để hiện trong Ambient panel:
Sau đó mở menu chuột phải → Ambient để chọn track. Volume dùng chung setting:
📁 Custom Local ModelsNếu bạn có một thư mục gốc như
Extension sẽ tự quét từng thư mục con trực tiếp. Thư mục nào có file Nếu muốn chỉnh riêng tên hiển thị, mô tả, hoặc chỉ định file
📦 Cài đặtTừ file
|
| Setting | Default | Mô tả |
|---|---|---|
animeCompanion.model |
hiyori |
Chọn model hiện tại. |
animeCompanion.customModelRoots |
[] |
Danh sách thư mục gốc để tự quét model local. |
animeCompanion.customModels |
{} |
Khai báo thêm model local do user tự tải về. |
animeCompanion.modelDownloadBaseUrl |
GitHub Releases URL | Base URL để lazy-download model zip. |
animeCompanion.voiceLanguage |
ja |
ja / vi / en cho audio. |
animeCompanion.messageLanguage |
vi |
vi / en / ja cho bubble text. |
animeCompanion.muted |
false |
Tắt toàn bộ audio. |
animeCompanion.ambientPreset |
off |
Ambient hiện tại: off / lofi / rain / cafe hoặc track custom. |
animeCompanion.ambientVolume |
30 |
Âm lượng ambient từ 0 đến 100. |
animeCompanion.customAmbientTracks |
[] |
Danh sách track ambient local tự thêm. |
animeCompanion.characterSize |
medium |
small / medium / large. |
animeCompanion.showOnStartup |
true |
Tự hiện panel khi VS Code khởi động. |
animeCompanion.messageIntervalMin / Max |
10 / 20 |
Khoảng cách giữa các idle bubble (giây). |
animeCompanion.pomodoroWorkTime / BreakTime |
25 / 5 |
Thời lượng work / break (phút). |
animeCompanion.breakReminderMinutes |
30 |
Phút code liên tục trước khi nhắc nghỉ. |
animeCompanion.reactive.diagnostics |
true |
Toggle phản ứng theo errors/warnings. |
animeCompanion.reactive.save |
true |
Toggle phản ứng theo save. |
animeCompanion.reactive.typing |
true |
Toggle phản ứng tốc độ gõ + Easter eggs. |
animeCompanion.reactive.git |
true |
Toggle Git polling. |
animeCompanion.quietHours |
[] |
Khung giờ tắt message. |
animeCompanion.customPhrases.idle |
[] |
Thêm câu cho idle bubble. |
animeCompanion.customPhrases.save |
[] |
Thêm câu cho save reaction. |
animeCompanion.customPhrases.error |
[] |
Thêm câu cho error reaction. |
animeCompanion.customKeywords |
{} |
Map keyword → list message custom. |
🎮 Commands
Mở Command Palette (Ctrl+Shift+P) và gõ Anime Companion:
| Command | Mô tả |
|---|---|
Anime Companion: Show / Hide / Toggle |
Bật/tắt panel companion |
Anime Companion: Change Model |
Quick pick chọn model (✓ ở model đang chọn) |
Anime Companion: Reset Workspace Model |
Bỏ model per-workspace, quay về global setting |
Anime Companion: Change Voice |
Quick pick chọn giọng |
Anime Companion: Change Message Language |
Quick pick chọn ngôn ngữ bubble |
Anime Companion: Toggle Mute |
Bật/tắt audio |
Anime Companion: Start Pomodoro / Stop Pomodoro |
Bắt đầu / dừng Pomodoro |
Anime Companion: Show Stats |
Mở quick stats |
Anime Companion: Show Achievements |
Mở danh sách achievements |
Anime Companion: Play Motion |
Chạy nhanh TapBody / TapHead / Idle |
Anime Companion: Open Settings |
Mở Settings đã filter |
🛠️ Phát triển
Yêu cầu: Node.js ≥ 18 và npm.
npm install # Cài dependency
npm run compile # Build TypeScript → out/
npm run watch # Watch mode
npm run package # Đóng .vsix
npm run package:install # Đóng + cài đè vào VS Code local
npm test # Compile + smoke test
Hoặc dùng script tổng hợp tự bump version + package + install:
./build-install.sh
Trong VS Code, nhấn F5 để mở Extension Development Host với extension đã load sẵn.
Cấu trúc
src/
extension.ts activate, status bar, command registration
companion-view.ts WebviewViewProvider, idle bubble timer
reactive.ts ReactiveManager — toàn bộ event hooks
pomodoro.ts PomodoroManager
stats.ts StatsStore + achievement unlock
models.ts MODEL_MAP + workspace model
model-downloader.ts Lazy download/extract model zip
model-server.ts Local HTTP server cho model assets
git-ops.ts pull/push/commit có feedback
messages.ts Message bank + i18n + custom phrases
log.ts Output channel logger
media/
webview/ Runtime webview (đã tách module)
main.js · core.js · interaction.js
audio.js · expression.js · ui.js
audio/{ja,vi,en}/ MP3 cho từng ngôn ngữ
messages/ Bubble text i18n
live2d/ Cubism model assets
lib/ pixi-live2d-display + Cubism core
📚 Tài liệu
- FEATURES.md — Mô tả chi tiết toàn bộ tính năng đã ship.
- MODELS.md — Thông tin model bundled, lazy download, custom local models.
- CHANGELOG.md — Lịch sử thay đổi các version.
- PLAN.md — Roadmap (sprint hiện tại, ngắn hạn, trung hạn, vision).
- CHECKLIST.md — Tiến độ từng task.
- DECISIONS.md — Ghi chú kiến trúc + technical decisions.
- LICENSE-AUDIT.md — Ghi chú license/re-distribution cho model và audio.
📜 License
Live2D Cubism SDK, các model Live2D, và audio VoiceVox/Google TTS có license riêng. Các model không có quyền redistribute rõ ràng không còn được ship trong extension; nếu user tự tải về để dùng local thì cấu hình qua animeCompanion.customModelRoots hoặc animeCompanion.customModels — xem LICENSE-AUDIT.md.
💖 Credit
- Live2D Cubism Core SDK — Live2D Inc.
- Bundled / standard models: Hiyori, Haru, Mao, Miara (Live2D Sample).
- User-added local models: do người dùng tự tải và tự chịu trách nhiệm license khi thêm qua
animeCompanion.customModelRootshoặcanimeCompanion.customModels. - Audio: VoiceVox (Shikoku Metan) cho
ja, Google TTS chovi/en.
Made with 🌸 by ShiroeNguyen.