# LittleWhiteBox ## ๐Ÿ“ ็›ฎๅฝ•็ป“ๆž„ ``` LittleWhiteBox/ โ”œโ”€โ”€ .editorconfig # ็ผ–่พ‘ๅ™จๆ ผๅผ่ง„่Œƒ โ”œโ”€โ”€ .eslintignore # ESLint ๅฟฝ็•ฅ่ง„ๅˆ™ โ”œโ”€โ”€ .eslintrc.cjs # ESLint ้…็ฝฎ โ”œโ”€โ”€ .gitignore # Git ๅฟฝ็•ฅ่ง„ๅˆ™ โ”œโ”€โ”€ index.js # ๆ’ไปถๅ…ฅๅฃ๏ผšๅˆๅง‹ๅŒ–/ๆณจๅ†Œๆ‰€ๆœ‰ๆจกๅ— โ”œโ”€โ”€ jsconfig.json # JS/TS ็ผ–่พ‘ๅ™จๆ็คบ โ”œโ”€โ”€ manifest.json # ๆ’ไปถๆธ…ๅ•๏ผš็‰ˆๆœฌ/ไพ่ต–/ๅ…ฅๅฃ โ”œโ”€โ”€ package-lock.json # ไพ่ต–้”ๅฎš โ”œโ”€โ”€ package.json # ๅผ€ๅ‘ไพ่ต–/่„šๆœฌ โ”œโ”€โ”€ README.md # ่ฏดๆ˜Žๆ–‡ๆกฃ โ”œโ”€โ”€ settings.html # ไธป่ฎพ็ฝฎ้กต๏ผšๆจกๅ—ๅผ€ๅ…ณ/UI โ”œโ”€โ”€ style.css # ๅ…จๅฑ€ๆ ทๅผ โ”‚ โ”œโ”€โ”€ bridges/ # ๅค–้ƒจๆกฅๆŽฅ โ”‚ โ”œโ”€โ”€ call-generate-service.js # ่ฐƒ็”จ็”ŸๆˆๆœๅŠกๆกฅๆŽฅ โ”‚ โ”œโ”€โ”€ worldbook-bridge.js # ไธ–็•ŒไนฆๆกฅๆŽฅ โ”‚ โ””โ”€โ”€ wrapper-iframe.js # iframe ๅŒ…่ฃ…ๆกฅๆŽฅ โ”‚ โ”œโ”€โ”€ core/ # ๆ ธๅฟƒๅŸบ็ก€่ฎพๆ–ฝ โ”‚ โ”œโ”€โ”€ constants.js # ๅธธ้‡/่ทฏๅพ„ๅฎšไน‰ โ”‚ โ”œโ”€โ”€ debug-core.js # ๆ—ฅๅฟ—/็ผ“ๅญ˜ๆณจๅ†Œ โ”‚ โ”œโ”€โ”€ event-manager.js # ็ปŸไธ€ไบ‹ไปถ็ฎก็† โ”‚ โ”œโ”€โ”€ iframe-messaging.js # postMessage ๅฐ่ฃ… โ”‚ โ”œโ”€โ”€ server-storage.js # ๆœๅŠกๅ™จๅญ˜ๅ‚จๅฐ่ฃ… โ”‚ โ”œโ”€โ”€ slash-command.js # ๆ–œๆ ๅ‘ฝไปคๅฐ่ฃ… โ”‚ โ”œโ”€โ”€ variable-path.js # ๅ˜้‡่ทฏๅพ„่งฃๆž โ”‚ โ””โ”€โ”€ wrapper-inline.js # iframe ๅ†…่”่„šๆœฌ โ”‚ โ”œโ”€โ”€ docs/ # ๆ–‡ๆกฃไธŽ่ฎธๅฏ โ”‚ โ”œโ”€โ”€ COPYRIGHT # ็‰ˆๆƒๅฃฐๆ˜Ž โ”‚ โ”œโ”€โ”€ LICENSE.md # ่ฎธๅฏๅ่ฎฎ โ”‚ โ””โ”€โ”€ NOTICE # ้€š็Ÿฅ/็ฌฌไธ‰ๆ–นๅฃฐๆ˜Ž โ”‚ โ”œโ”€โ”€ libs/ # ็ฌฌไธ‰ๆ–นๅบ“ โ”‚ โ”œโ”€โ”€ dexie.mjs # IndexedDB ๅฐ่ฃ…ๅบ“ โ”‚ โ”œโ”€โ”€ js-yaml.mjs # YAML ่งฃๆž/ๅบๅˆ—ๅŒ–๏ผˆESM๏ผ‰ โ”‚ โ”œโ”€โ”€ minisearch.mjs # ่ฝป้‡ๆœ็ดขๅบ“ โ”‚ โ”œโ”€โ”€ pixi.min.js # PixiJS ๆธฒๆŸ“ๅบ“ โ”‚ โ””โ”€โ”€ jieba-wasm/ โ”‚ โ”œโ”€โ”€ jieba_rs_wasm.js # ็ป“ๅทดๅˆ†่ฏ WASM JS ๅŒ…่ฃ… โ”‚ โ”œโ”€โ”€ jieba_rs_wasm_bg.wasm # ็ป“ๅทดๅˆ†่ฏ WASM ไบŒ่ฟ›ๅˆถ โ”‚ โ””โ”€โ”€ jieba_rs_wasm_bg.wasm.d.ts # WASM ็ฑปๅž‹ๅฃฐๆ˜Ž โ”‚ โ”œโ”€โ”€ modules/ # ๅŠŸ่ƒฝๆจกๅ— โ”‚ โ”œโ”€โ”€ control-audio.js # ้Ÿณ้ข‘ๆƒ้™ๆŽงๅˆถ โ”‚ โ”œโ”€โ”€ iframe-renderer.js # iframe ๆธฒๆŸ“ โ”‚ โ”œโ”€โ”€ immersive-mode.js # ๆฒ‰ๆตธๆจกๅผ โ”‚ โ”œโ”€โ”€ message-preview.js # ๆถˆๆฏ้ข„่งˆ/ๆ‹ฆๆˆช โ”‚ โ”œโ”€โ”€ streaming-generation.js # ็”Ÿๆˆ็›ธๅ…ณๅŠŸ่ƒฝ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ debug-panel/ # ่ฐƒ่ฏ•้ขๆฟ โ”‚ โ”‚ โ”œโ”€โ”€ debug-panel.html # ่ฐƒ่ฏ•้ขๆฟ UI โ”‚ โ”‚ โ””โ”€โ”€ debug-panel.js # ่ฐƒ่ฏ•้ขๆฟ้€ป่พ‘ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ fourth-wall/ # ๅ››ๆฌกๅ…ƒๅฃ โ”‚ โ”‚ โ”œโ”€โ”€ fourth-wall.html # UI โ”‚ โ”‚ โ”œโ”€โ”€ fourth-wall.js # ไธป้€ป่พ‘ โ”‚ โ”‚ โ”œโ”€โ”€ fw-image.js # ๅ›พๅƒ็›ธๅ…ณๅขžๅผบ โ”‚ โ”‚ โ”œโ”€โ”€ fw-message-enhancer.js # ๆถˆๆฏๅขžๅผบ โ”‚ โ”‚ โ”œโ”€โ”€ fw-prompt.js # ๆ็คบ่ฏ/ๆณจๅ…ฅ โ”‚ โ”‚ โ””โ”€โ”€ fw-voice.js # ่ฏญ้Ÿณ็›ธๅ…ณ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ novel-draw/ # ็”ปๅ›พๆจกๅ— โ”‚ โ”‚ โ”œโ”€โ”€ cloud-presets.js # ไบ‘็ซฏ้ข„่ฎพ โ”‚ โ”‚ โ”œโ”€โ”€ floating-panel.js # ๆตฎๅŠจ้ขๆฟ โ”‚ โ”‚ โ”œโ”€โ”€ gallery-cache.js # ๅ›พๅบ“็ผ“ๅญ˜ โ”‚ โ”‚ โ”œโ”€โ”€ image-live-effect.js # ๅ›พๅƒๅŠจๆ€ๆ•ˆๆžœ โ”‚ โ”‚ โ”œโ”€โ”€ llm-service.js # LLM ๆœๅŠก่ฐƒ็”จ โ”‚ โ”‚ โ”œโ”€โ”€ novel-draw.html # UI โ”‚ โ”‚ โ”œโ”€โ”€ novel-draw.js # ไธป้€ป่พ‘ โ”‚ โ”‚ โ””โ”€โ”€ TAG็ผ–ๅ†™ๆŒ‡ๅ—.md # TAG ็ผ–ๅ†™ๆŒ‡ๅ— โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ scheduled-tasks/ # ๅฎšๆ—ถไปปๅŠก โ”‚ โ”‚ โ”œโ”€โ”€ embedded-tasks.html # ๅ†…ๅตŒไปปๅŠก UI โ”‚ โ”‚ โ”œโ”€โ”€ scheduled-tasks.html # ไธป UI โ”‚ โ”‚ โ””โ”€โ”€ scheduled-tasks.js # ้€ป่พ‘ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ story-outline/ # ๆ•…ไบ‹ๅคง็บฒ โ”‚ โ”‚ โ”œโ”€โ”€ story-outline-prompt.js # Prompt ๆจกๆฟ โ”‚ โ”‚ โ”œโ”€โ”€ story-outline.html # UI โ”‚ โ”‚ โ””โ”€โ”€ story-outline.js # ้€ป่พ‘ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ story-summary/ # ๅ‰งๆƒ…ๆ€ป็ป“ + ่ฎฐๅฟ†็ณป็ปŸ โ”‚ โ”‚ โ”œโ”€โ”€ story-summary-ui.js # UI ้€ป่พ‘ โ”‚ โ”‚ โ”œโ”€โ”€ story-summary.css # ๆ ทๅผ โ”‚ โ”‚ โ”œโ”€โ”€ story-summary.html # UI๏ผˆๅซๅ‘้‡่ฎพ็ฝฎ๏ผ‰ โ”‚ โ”‚ โ”œโ”€โ”€ story-summary.js # ไธปๅ…ฅๅฃ๏ผšไบ‹ไปถ/UI/iframe ้€š่ฎฏ โ”‚ โ”‚ โ”œโ”€โ”€ data/ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ config.js # ้…็ฝฎ็ฎก็† โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ db.js # ๅ‘้‡ๅญ˜ๅ‚จ๏ผšL1/L2 Vectors (Dexie/IndexedDB) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ store.js # ๆ ธๅฟƒๅญ˜ๅ‚จ๏ผšL2ไบ‹ไปถ + L3ไธ–็•Œ็Šถๆ€ โ”‚ โ”‚ โ”œโ”€โ”€ generate/ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ generator.js # ่ฐƒๅบฆๅ™จ๏ผš่ฐƒ็”จ LLM -> ่งฃๆž -> ๆธ…ๆด— -> ๅˆๅนถ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ llm.js # LLM API ไธŽ Prompt ๅฎšไน‰ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ prompt.js # ๆณจๅ…ฅๅฑ‚๏ผšๆ ผๅผๅŒ– + ้ข„็ฎ—่ฃ…้… โ”‚ โ”‚ โ””โ”€โ”€ vector/ โ”‚ โ”‚ โ”œโ”€โ”€ chunk-builder.js # L1 ๅˆ‡ๅˆ†ไธŽๆž„ๅปบ โ”‚ โ”‚ โ”œโ”€โ”€ chunk-store.js # ๅ‘้‡ CRUD ๆ“ไฝœ โ”‚ โ”‚ โ”œโ”€โ”€ embedder.js # ๅ‘้‡ๅŒ–ๆœๅŠก (Local/Online) โ”‚ โ”‚ โ”œโ”€โ”€ embedder.worker.js # ๆœฌๅœฐๆจกๅž‹ Worker โ”‚ โ”‚ โ”œโ”€โ”€ entity.js # ๅฌๅ›žๅฎžไฝ“/่พ…ๅŠฉ็ป“ๆž„ โ”‚ โ”‚ โ””โ”€โ”€ recall.js # ๅฌๅ›žๅผ•ๆ“Ž๏ผšๅŠ ๆƒQuery + ๅฎžไฝ“ๅŠ ๅˆ† + MMRๅŽป้‡ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ template-editor/ # ๆจกๆฟ็ผ–่พ‘ๅ™จ โ”‚ โ”‚ โ”œโ”€โ”€ template-editor.html # UI โ”‚ โ”‚ โ””โ”€โ”€ template-editor.js # ้€ป่พ‘ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ tts/ # TTS โ”‚ โ”‚ โ”œโ”€โ”€ tts-api.js # API ้€‚้… โ”‚ โ”‚ โ”œโ”€โ”€ tts-auth-provider.js # ้‰ดๆƒๆไพ›่€… โ”‚ โ”‚ โ”œโ”€โ”€ tts-cache.js # ็ผ“ๅญ˜ โ”‚ โ”‚ โ”œโ”€โ”€ tts-free-provider.js # ๅ…่ดนๆไพ›่€… โ”‚ โ”‚ โ”œโ”€โ”€ tts-overlay.html # Overlay UI โ”‚ โ”‚ โ”œโ”€โ”€ tts-panel.js # ้ขๆฟ้€ป่พ‘ โ”‚ โ”‚ โ”œโ”€โ”€ tts-player.js # ๆ’ญๆ”พๅ™จ โ”‚ โ”‚ โ”œโ”€โ”€ tts-text.js # ๆ–‡ๆœฌๅค„็† โ”‚ โ”‚ โ”œโ”€โ”€ tts-voices.js # ่ฏญ้Ÿณ้…็ฝฎ โ”‚ โ”‚ โ”œโ”€โ”€ tts.js # ไธปๅ…ฅๅฃ โ”‚ โ”‚ โ”œโ”€โ”€ ๅฃฐ้Ÿณๅคๅˆป.png # ่ฏดๆ˜Žๅ›พ โ”‚ โ”‚ โ”œโ”€โ”€ ๅผ€้€š็ฎก็†.png # ่ฏดๆ˜Žๅ›พ โ”‚ โ”‚ โ””โ”€โ”€ ่Žทๅ–IDๅ’ŒKEY.png # ่ฏดๆ˜Žๅ›พ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ variables/ # ๅ˜้‡็ณป็ปŸ โ”‚ โ”œโ”€โ”€ var-commands.js # ๅ˜้‡ๅ‘ฝไปค/ๅฎ/่ทฏๅพ„่งฃๆž โ”‚ โ”œโ”€โ”€ varevent-editor.js # ๅ˜้‡็ผ–่พ‘ๅ™จ/ๆณจๅ…ฅๅค„็† โ”‚ โ”œโ”€โ”€ variables-core.js # ๅ˜้‡็ณป็ปŸๆ ธๅฟƒ โ”‚ โ””โ”€โ”€ variables-panel.js # ๅ˜้‡้ขๆฟ UI โ”‚ โ””โ”€โ”€ widgets/ # ้€š็”จ UI ็ป„ไปถ โ”œโ”€โ”€ button-collapse.js # ๆŒ‰้’ฎๆ”ถ็บณ โ””โ”€โ”€ message-toolbar.js # ๆถˆๆฏๅทฅๅ…ทๆก ``` ## ๐Ÿ“„ ่ฎธๅฏ่ฏ ่ฏฆ่ง `docs/LICENSE.md`