DeepSeek Harness Remote
DeepSeek Harness Remote 可將手機或另一台電腦與你運行 DeepSeek Harness 的電腦安全連接,隨時隨地繼續你的工作,方便隨時查看進度並繼續工作。
AI 翻譯
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證High-throughput screen-to-camera file transfer.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗High-throughput file transfer from a screen to a camera. The sender plays a file as an animated grid of coloured cells; the receiver films it and rebuilds the file. No network, no pairing, no return channel.
中文说明 · Developer guides · Protocol (English, STE) · 协议(中文) · Test vectors · Rust crate
Animated QR codes are easy to make but slow: one QR version 25 frame holds about 1.2 KB, and the square shape leaves most of a phone or monitor screen unused. Lumen Code is used the same way, by pointing a camera at a screen, and carries more per frame:
| Animated QR (v25, typical) | Lumen Code v1 | |
|---|---|---|
| Bits per cell | 1 | 2 (C4, default) or 3 (C8) |
| Shape | square | fills the screen (adaptive width and height, aspect up to 2.4) |
| Cell size | fixed by version | chosen from the physical screen size |
| Data per frame, phone screen | ~1.2 KB | ~2.2 KB (C4) / ~3.4 KB (C8) |
| Data per frame, 13" laptop | ~1.2 KB | ~6.9 KB (C4) / ~10.3 KB (C8) |
| Lost frames | usually repeated cyclically | fountain code: every frame is new data |
| One corner hidden by glare | frame lost | decodes from the other three corners |
At the default 12 frames per second, a laptop screen sends roughly 80–125 KB/s of raw capacity. The rate a receiver actually gets depends on its camera, and the receiver page shows it live. Performance breaks the speed down item by item.
Online: https://lumencode.link. Open Send on the sending screen and choose a file, then open Receive on the receiving phone. Both pages work on phones and desktops. Nothing is installed, and the file never leaves the two devices.
Photosensitivity warning: while sending, the code flashes and changes colour up to 60 times a second. People who are sensitive to flashing light should not look at it. The web pages and the native apps show this warning before a code plays.
JS | WASM), which produce bit-identical frames. The receiver uses WASM by default; switching during a scan keeps the progress.To run the web app yourself (SvelteKit, in src/website):
cd src/website && bun install
bun run dev # http://localhost:5173 (the camera works on localhost)
bun run dev:https # https://<lan-ip>:5173 for phones (self-signed certificate)
bun run build # prerendered pages and a Cloudflare Worker in .svelte-kit/cloudflare
The native apps do the same transfer on one shared Rust core (src/app: app logic, scan pipeline and the protocol crate). Each platform shell only draws the UI and calls the platform. The apps look and behave like the web pages, and add what native code allows: camera planes read in place, capture at up to 120 fps on iPhone and 60 fps on Android, following the sender's rate, the app's own exposure control on Android, frame timing locked to 120 Hz screens, haptics, screen brightness, and less work when the phone gets hot.
| App | Shell | Build and run | Guide |
|---|---|---|---|
| iOS 17+ | SwiftUI | src/ios/scripts/run.sh | src/ios |
| Android 10+ | Jetpack Compose | cd src/android && ./gradlew :app:installDebug | src/android |
| macOS, Windows, Linux | GPUI | cd src/desktop && cargo run --release | src/desktop |
Desktop builds are on the Releases page: a signed and notarized macOS image, and Windows and Linux archives. The desktop app is tested on macOS. The Windows and Linux builds, webcam included, are new and have not yet been tried on real machines.
The iPhone and Android apps are coming to the App Store and Google Play at US$2.99, paid once (no subscription, no in-app purchases, no ads). The web version and the desktop builds stay free, and anyone can build every app from this repository for free.
There is no package to install: take the code from this repository, pinned to a tag or a commit. A coding agent can follow the steps below as written.
| You build | Take | Then read |
|---|---|---|
| A web page or a Node program | the folder src/core/ — ES modules, no build step, no dependencies. For the faster engine add dist/wasm/lumen.wasm; src/core/wasm-engine.js loads it | Integration guide §3.2–§3.3 |
| A Rust program | lumen-code = { git = "https://github.com/mondaylabsltd/lumen-code" } in Cargo.toml; the library is lumen (no dependencies) | src/rust/README.md |
| An app in another language (Swift, Kotlin, C, …) | the C ABI of the same crate: src/rust/include/lumen.h, built with --features ffi | Integration guide §3.5 |
| A new implementation | the specification and test/vectors/test-vectors.json | Integration guide §3.7 |
Every integration must follow these rules (specification §10.4, §11, §13):
The developer guides explain this with figures and numbers. The full, normative description is docs/PROTOCOL.md.
docs/PROTOCOL.md, *.zh-CN.md protocol specification (English STE / Chinese)
docs/guide/ developer guides (how it works, scanner, integration, performance, dashboard)
src/core/ JavaScript reference implementation (protocol library, ES modules)
src/website/ the web app (SvelteKit): home, sender, receiver, in English and Chinese
src/rust/ Rust reference implementation (zero dependencies, C ABI, WASM)
src/app/ shared core of the native apps (app logic, scan pipeline, uniffi bindings)
src/ios/ src/android/ src/desktop/ native shells (SwiftUI, Jetpack Compose, GPUI)
src/web/, dist/ the previous static site (still deployed until the switch to src/website); dist/wasm/lumen.wasm is the WASM engine
src/tools/ WASM build, the previous site's build and dev server, figure and link-preview generators
test/ Node tests, camera simulator, robustness suites
test/vectors/test-vectors.json conformance vectors (generated by test/vectors.js)
npm test # conformance vectors, fuzz/property tests, core, packets/blocks, end-to-end through a camera model, JS<->WASM
npm run test:fuzz # the fuzz/property tests with 20 times more cases
npm run test:robustness # perspective, rotation, mirroring, blur, bloom, moiré, motion, exposure
cd src/rust && cargo test --release # the same vectors, differential tests against JS, fuzz/property tests, decoding of JS-simulated frames
cd src/app && cargo test --release # native app core: app logic, camera pipeline, rolling-shutter simulation
node test/bench.js; cd src/rust && cargo run --release --example measure -- bench # throughput of each stage
cd src/website && bun run test:e2e # the web app in Chromium: a recorded transfer as its webcam, both engines, both languages
The camera simulator (test/camera.js) models perspective, barrel distortion, optical blur, colour crosstalk, white balance, vignetting, bloom, moiré, motion blur, 4:2:0 chroma subsampling and noise. In a randomised "hand-held, badly aimed" batch in 4-colour mode, about 27–28 of 30 frames and 86–89 % of all codewords decode. The frames that fail have about 3 camera pixels per cell plus heavy blur.
| Scanner | Phone-size code | Laptop-size code |
|---|---|---|
| JavaScript (V8) | 14–16 ms | 41–45 ms |
| Rust → WebAssembly | 9–10 ms | 21 ms |
| Rust native | 7–9 ms | 16 ms |
The receiver also skips frames it has already decoded (it reads only the header, about 8 ms in JS), locks its scan rate to the sender's frame rate (about 1.6 scans per sender frame instead of one per camera frame), and has the GPU crop and scale only the region around the code to about 6 pixels per cell before a worker sees it. Panels over the video use no background blur, and the camera turns off when a transfer completes. Together these cut the work several times over and keep phones cool.
tj.appsdata.org, see the privacy policy) from src/website/src/app.html. Remove it there, and from the CSP in src/website/vite.config.ts, if you host your own copy.