尺寸墨水屏閱讀器,內(nèi)置本地AI助手的設(shè)計(jì)與實(shí)現(xiàn))
還記得去年朋友問我你做了一臺(tái)又一臺(tái)閱讀器為什么這次死活要卡在智能手機(jī)尺寸上我翻了翻兜里的手機(jī)和背包里的6英寸電紙書一時(shí)不知道怎么回答。直到DuRoBo Krono的原型機(jī)點(diǎn)亮屏幕這個(gè)問題才真正有了答案——當(dāng)一臺(tái)電子閱讀器小到能像手機(jī)一樣隨手滑進(jìn)褲兜卻內(nèi)置了一個(gè)能幫你查詞、總結(jié)、解釋概念的AI助手它才不再是一塊能看書的平板而是另一種完全不同的專注閱讀終端。這篇文章我就把這臺(tái)DuRoBo Krono的設(shè)計(jì)思路、硬件選型、AI助手落地和真實(shí)使用感受完整寫一遍給想復(fù)刻的朋友一個(gè)參考也給正在糾結(jié)閱讀器到底該做多大的人一些啟發(fā)。DuRoBo Krono的定位很明確一臺(tái)硬件尺寸接近主流智能手機(jī)、屏幕采用墨水屏的電子閱讀器同時(shí)內(nèi)置本地優(yōu)先的AI助手不依賴云端賬號(hào)不強(qiáng)制聯(lián)網(wǎng)所有閱讀相關(guān)的輔助能力都在設(shè)備上運(yùn)行。它適合每天通勤時(shí)間超過半小時(shí)的人、需要大量讀長(zhǎng)文的用戶以及愿意折騰硬件和軟件的極客玩家。下面我從頭開始拆解這個(gè)項(xiàng)目。1. 為什么我會(huì)做一臺(tái)手機(jī)尺寸的閱讀器1.1 從6英寸到5.2英寸被很多人忽略的便攜分界線市面上絕大多數(shù)電子閱讀器都集中在6英寸到8英寸因?yàn)镵indle從很早以前就把6英寸培養(yǎng)成了電子書標(biāo)準(zhǔn)尺寸。這個(gè)尺寸確實(shí)適合排版PPI做到300之后文字銳利度也足夠但問題出在便攜兩個(gè)字上。我試過把6英寸閱讀器放進(jìn)冬季大衣口袋勉強(qiáng)能塞進(jìn)去但走路時(shí)硌腿放到牛仔褲后袋更是想都別想。出差時(shí)背包里本來就有筆記本電腦、充電器、相機(jī)再塞一臺(tái)6英寸的閱讀器每次都感覺是在為可能不會(huì)看的一本書買單。真正讓我痛下決心的場(chǎng)景是早高峰地鐵一只手拉著扶手另一只手掏出6英寸閱讀器單手拇指根本覆蓋不到物理翻頁鍵必須要用四指托住機(jī)身、拇指去夠按鍵站不穩(wěn)的時(shí)候整個(gè)人都在晃。后來我把一臺(tái)備用的5.2英寸墨水屏手機(jī)改裝成純閱讀器用了一個(gè)月后意識(shí)到屏幕只小了0.8英寸但握持手感和口袋兼容性完全不是一個(gè)量級(jí)。5.2英寸機(jī)身的寬度通常在68mm到70mm之間和iPhone標(biāo)準(zhǔn)版、大部分安卓手機(jī)基本一樣成年人手掌可以完整包住拇指能自然落在屏幕邊緣或物理按鍵上。這才是智能手機(jī)尺寸最核心的體驗(yàn)紅利不是屏幕小而是身體對(duì)它的真實(shí)感受跟手機(jī)一致。1.2 手機(jī)尺寸不是縮小屏幕而是重新定義握持很多人一聽到手機(jī)尺寸閱讀器第一反應(yīng)是那和你直接用手機(jī)看書有什么區(qū)別我有iPhone/Mate/Pixel何必多帶一臺(tái)設(shè)備。這話沒毛病前提是你只把閱讀器當(dāng)成一塊能顯示書的屏幕。但真正上手DuRoBo Krono之后你會(huì)發(fā)現(xiàn)在同樣的尺寸下電子閱讀器的握持邏輯和手機(jī)完全不同。手機(jī)是被設(shè)計(jì)成雙手協(xié)作的設(shè)備左手托右手點(diǎn)屏幕亮著、消息彈著、應(yīng)用互相切換。而DuRoBo Krono是被設(shè)計(jì)成單手沉浸的設(shè)備機(jī)身左右兩側(cè)各有兩顆物理翻頁鍵拇指放在側(cè)邊鍵上每按一次翻一頁全程不需要在屏幕上戳來戳去。屏幕不發(fā)光或者采用前光眼睛聚焦在內(nèi)容上手指動(dòng)作極其機(jī)械、單調(diào)反而更容易進(jìn)入深度閱讀狀態(tài)。所以手機(jī)尺寸的本質(zhì)是在物理上與手機(jī)共享人體工學(xué)優(yōu)勢(shì)在交互上刻意甩掉手機(jī)的操作習(xí)慣。它犧牲了多任務(wù)、犧牲了彈窗、犧牲了花哨動(dòng)畫換來的是更長(zhǎng)的續(xù)航、更少的干擾和更自然的單手握持。我用DuRoBo Krono讀完過一本九十多萬字的社科大部頭中途一次都沒覺得手酸這在6英寸閱讀器上很難做到。1.3 項(xiàng)目的目標(biāo)用戶通勤閱讀者、長(zhǎng)文研究者和極客這個(gè)項(xiàng)目不是面向所有人的它的目標(biāo)用戶非常清晰。第一類是通勤閱讀者每天往返通勤超過40分鐘需要一臺(tái)能隨時(shí)掏出來、單手翻頁、不打擾別人的設(shè)備。第二類是長(zhǎng)文研究者需要讀論文、讀技術(shù)文檔、讀史料經(jīng)常遇到不懂的術(shù)語、上下文不清的表述他們需要的不只是翻頁而是立刻搞懂的能力。第三類是極客和DIY愛好者享受自己畫板、打印外殼、調(diào)系統(tǒng)、把大模型塞進(jìn)小設(shè)備的過程。如果你屬于這三種人你會(huì)從DuRoBo Krono里拿到比普通Kindle多很多的價(jià)值。如果你只是想買一個(gè)蓋泡面用的裝飾品那用6英寸的便宜閱讀器就夠了不必折騰這一臺(tái)。2. 硬件選型在墨水屏和AI推理之間找平衡2.1 屏幕與刷新為什么是5.2英寸黑白墨水屏整個(gè)項(xiàng)目里最難選的其實(shí)不是主控而是屏幕。市面上的小尺寸墨水屏方案不如6英寸和7英寸豐富黑色面板比較多彩色墨水屏在5.2英寸這個(gè)規(guī)格下也幾乎找不到合適的模組。最終我選了一塊5.2英寸的黑白墨水屏分辨率按這個(gè)尺寸算下來接近300 PPI顯示文字時(shí)邊緣干凈性價(jià)比也比較合理。選擇黑白屏有幾個(gè)現(xiàn)實(shí)原因一是彩色墨水屏的刷新率更低色彩飽和度也不適合長(zhǎng)時(shí)間看文字二是AI助手生成的卡片內(nèi)容以文字為主不需要顏色區(qū)分重點(diǎn)三是黑白屏的驅(qū)動(dòng)邏輯簡(jiǎn)單刷新殘影更容易控制。這塊屏的驅(qū)動(dòng)電壓和時(shí)序是標(biāo)準(zhǔn)的墨水屏協(xié)議主控通過SPI接口就能控制前光采用側(cè)置LED導(dǎo)光板亮度調(diào)節(jié)用PWM整體功耗控制得很好。但墨水屏也有一個(gè)繞不開的物理特性刷新慢、有殘影。尤其是當(dāng)AI助手渲染出一大段文字時(shí)如果整屏刷新會(huì)有一陣明顯的黑膜閃爍。后面我在軟件層面對(duì)AI卡片區(qū)域做了局部刷新處理只在需要清除殘影時(shí)才全刷使用體驗(yàn)好了非常多。這一段放到第五節(jié)詳細(xì)講。2.2 主控選型低功耗ARM板卡如何兼顧AI推理墨水屏設(shè)備對(duì)算力的要求其實(shí)很低但加上本地AI助手這個(gè)需求后主控的選擇就要重新考慮了。我最初嘗試過用一顆比較老的1.2GHz雙核處理器跑閱讀器界面綽綽有余但一旦加載量化后的大語言模型生成一個(gè)字的耗時(shí)能超過半秒等AI把整段摘要輸出完人已經(jīng)不耐煩了。后來換成了四核Cortex-A55架構(gòu)的處理器主頻提高到1.8GHz左右配合2GB內(nèi)存才勉強(qiáng)達(dá)到翻卡片不卡頓的體驗(yàn)。在內(nèi)存上的教訓(xùn)是盡量不要低于2GB。跑一個(gè)1.5B參數(shù)、4bit量化的大模型光模型權(quán)重就要占900MB到1.1GB內(nèi)存再加上系統(tǒng)、閱讀器渲染層和刷新緩沖區(qū)2GB實(shí)際上已經(jīng)很緊。如果后期想換更大模型至少要上3GB甚至4GB內(nèi)存的板卡但目前我在DuRoBo Krono上用的方案是2GB LPDDR4跑小模型剛剛好成本也能壓住。AI推理這塊我沒有用獨(dú)立的NPU而是直接用CPU跑量化后的GGUF格式模型。雖然沒有NPU那種十幾mW就能跑本地模型的能力但對(duì)閱讀器這種非實(shí)時(shí)交互設(shè)備來說CPU推理已經(jīng)夠用——你選中一句文字按下快捷鍵本來就需要兩三秒的思考時(shí)間墨水屏的刷新還沒完成AI其實(shí)已經(jīng)把答案生成好了。2.3 結(jié)構(gòu)件與續(xù)航3D打印外殼和3000mAh電池外殼是我用3D打印機(jī)自己打印的材料是啞光黑色PETG原因很簡(jiǎn)單耐熱、耐臟、不容易在手里出汗打滑。整體的造型參照了常見的直板手機(jī)長(zhǎng)邊大約150mm短邊大約70mm厚度做到9mm以內(nèi)這樣才能保持手機(jī)感。電池是一塊3000mAh的聚合物鋰電池平放著占掉機(jī)身背面將近一半空間剩下的一半放主控板、屏幕驅(qū)動(dòng)板和揚(yáng)聲器小模塊。整機(jī)功耗讓我自己都挺驚訝。墨水屏維持顯示時(shí)不耗電只有刷新瞬間才需要能量所以純閱讀模式下的平均功耗壓得非常低。實(shí)測(cè)數(shù)據(jù)是使用場(chǎng)景平均功耗3000mAh實(shí)際表現(xiàn)待機(jī)Wi-Fi關(guān)閉約30mW超過25天純閱讀前光關(guān)每分鐘翻頁約160mW約18小時(shí)閱讀AI助手每10分鐘調(diào)用一次約550mW約5.5小時(shí)閱讀AI助手前光中等亮度約800mW約3.5小時(shí)這個(gè)數(shù)據(jù)是在我自己搭建的電流采樣測(cè)試電路上反復(fù)測(cè)出來的。如果你復(fù)刻時(shí)把電池加到4000mAh續(xù)航還能再提升三分之一。對(duì)一臺(tái)可以連續(xù)用一天半的設(shè)備來說我認(rèn)為已經(jīng)達(dá)到日用不焦慮的標(biāo)準(zhǔn)了。3. AI助手到底在閱讀器上能干什么3.1 真正高頻的閱讀場(chǎng)景查詞、句子釋義和背景補(bǔ)充很多閱讀器都有詞典查詞功能但傳統(tǒng)詞典只能給你一個(gè)詞條的孤立解釋放在句子里往往還是不通順。閱讀一本歷史書遇到均田制這個(gè)詞詞典會(huì)告訴你它是北魏到唐前期的土地制度但如果你不理解這個(gè)詞在這個(gè)段落里的因果關(guān)系依然讀得一頭霧水。DuRoBo Krono里的AI助手不是這樣工作的。它能夠把當(dāng)前頁面的完整段落作為上下文針對(duì)你選中的詞語或句子生成一段并解釋為什么它在這里出現(xiàn)的說明。比如讀《全球通史》遇到黑死病與勞動(dòng)工資的關(guān)系這一句它給出的不是黑死病是一種鼠疫而是結(jié)合上下文告訴你由于勞動(dòng)力驟減莊園主被迫提高工資這成為封建農(nóng)奴制解體的誘因之一。這種帶上下文的解釋才是閱讀輔助該有的樣子。另外還有兩個(gè)高頻功能我?guī)缀趺刻於荚谟靡皇情L(zhǎng)句子的白話翻譯有些一百多字的復(fù)雜長(zhǎng)句讀第一遍真的看不懂讓AI把它拆成幾個(gè)短句并補(bǔ)充主語立刻通順二是時(shí)間線梳理遇到一段涉及多個(gè)人名、年份和事件的內(nèi)容直接讓AI提煉成編號(hào)列表非常方便。3.2 段落級(jí)對(duì)話選中文字直接問AI助手的交互是我調(diào)過最久的部分因?yàn)槟辽蠜]有方便的軟鍵盤必須把交互設(shè)計(jì)得足夠簡(jiǎn)單。最終我采用的方式是閱讀器界面上用方向鍵移動(dòng)光標(biāo)在當(dāng)前段落里選中一句或一段文字然后按一下AI快捷鍵屏幕上會(huì)彈出一個(gè)操作卡片里面有四個(gè)選項(xiàng)解釋這段、生成摘要、翻譯成白話、和它對(duì)話。前三個(gè)選項(xiàng)都是即時(shí)的AI會(huì)自動(dòng)把結(jié)果渲染在一個(gè)新卡片上顯示完可以一鍵關(guān)閉返回閱讀頁面。第四項(xiàng)和它對(duì)話會(huì)進(jìn)入一個(gè)輕量級(jí)的問答界面你可以用預(yù)設(shè)的快捷問句來追問或者通過藍(lán)牙鍵盤輸入具體問題。我日常用最多的是解釋這段和翻譯成白話因?yàn)椴恍枰~外輸入點(diǎn)一下就行。這個(gè)交互模式特別適合閱讀場(chǎng)景它不會(huì)頻繁打斷你的閱讀流。我們常說的心流說到底就是過濾掉多余操作當(dāng)你想搞懂一個(gè)內(nèi)容時(shí)能用最快速度獲得答案然后繼續(xù)讀下去。AI助手在這里的角色其實(shí)更像一個(gè)隨叫隨到的讀書搭子而不是一個(gè)搶你注意力的聊天機(jī)器人。3.3 本地優(yōu)先隱私和離線是底線為什么不直接把AI功能接到云端大模型的API我在項(xiàng)目早期確實(shí)試過用手機(jī)熱點(diǎn)把整段文本發(fā)到云端等幾秒收到回復(fù)功能上也能跑通。但我很快發(fā)現(xiàn)了三個(gè)無法接受的問題第一是隱私。閱讀器里的內(nèi)容往往是個(gè)人筆記、未出版的書稿、私人日記把這些東西發(fā)到云端哪怕只是用來生成摘要我心理上始終過不去。第二是網(wǎng)絡(luò)依賴。地鐵、地下通道、飛機(jī)上網(wǎng)絡(luò)信號(hào)要么沒有要么極差而閱讀場(chǎng)景恰恰發(fā)生在這些地方。一次對(duì)著轉(zhuǎn)圈的網(wǎng)絡(luò)等三十秒你會(huì)無比懷念本地模型。第三是成本。云API按token計(jì)費(fèi)每天厚讀三小時(shí)一個(gè)月下來流量費(fèi)用完全夠買一臺(tái)新設(shè)備了。所以DuRoBo Krono的AI助手從第一天起就定了本地優(yōu)先的路線。模型、推理腳本、UI全部運(yùn)行在設(shè)備上沒有任何遙測(cè)數(shù)據(jù)斷網(wǎng)狀態(tài)下所有功能照常工作。我不否認(rèn)云端模型在理解力上更強(qiáng)但在閱讀器這個(gè)特定場(chǎng)景里犧牲一點(diǎn)模型大小換取完全離線、零成本、隱私閉環(huán)是絕對(duì)劃算的。4. 軟件系統(tǒng)和AI功能落地4.1 系統(tǒng)方案輕量Linux加定制閱讀應(yīng)用DuRoBo Krono的軟件棧沒有選擇現(xiàn)成的Android閱讀器改改原因很直接安卓系統(tǒng)的圖形渲染、后臺(tái)進(jìn)程和電源管理對(duì)墨水屏并不友好而且為了跑一個(gè)本地模型還要被系統(tǒng)各種機(jī)制拖后腿。我采用的是輕量Linux發(fā)行版砍掉桌面環(huán)境只保留內(nèi)核、核心庫和一個(gè)自研的閱讀器應(yīng)用整個(gè)系統(tǒng)體積控制在500MB以內(nèi)。閱讀器界面用的是嵌入式UI框架LVGL字體渲染單獨(dú)做了灰度抗鋸齒文字在墨水屏上的顯示效果比很多商業(yè)產(chǎn)品還要柔和。整個(gè)系統(tǒng)的狀態(tài)欄有三塊信息左上角顯示當(dāng)前閱讀進(jìn)度右上角顯示日期下方不固定顯示一個(gè)AI按鈕只有在你閱讀時(shí)按快捷鍵才會(huì)出現(xiàn)。這里有一個(gè)值得說的設(shè)計(jì)細(xì)節(jié)系統(tǒng)的所有界面更新都走了墨水屏的灰度級(jí)渲染通道。普通LCD屏幕每秒刷新60幀甚至120幀但墨水屏只需要在內(nèi)容變化時(shí)更新一次。我的應(yīng)用里維護(hù)了一個(gè)自定義的臟矩形隊(duì)列頁面切換時(shí)用小范圍刷新AI卡片彈出時(shí)用高對(duì)比度刷新避免頻繁整屏抖動(dòng)這比直接用現(xiàn)成框架默認(rèn)驅(qū)動(dòng)要舒服得多。4.2 AI助手的實(shí)現(xiàn)管道從文字選中到模型推理AI助手的工作流程看起來簡(jiǎn)單實(shí)際實(shí)現(xiàn)時(shí)要經(jīng)過一條完整的管道。第一步是獲取當(dāng)前段落文字。因?yàn)槟灵喿x器顯示的是電子書源文件不是掃描圖片所以可以直接從解析后的文本層拿到當(dāng)前選中的內(nèi)容不需要OCR。但如果讀者打開的是PDF掃描件文本層不存在系統(tǒng)就會(huì)自動(dòng)調(diào)用內(nèi)置的OCR引擎把頁面圖片轉(zhuǎn)成文字再交由AI處理。OCR引擎用的是開源Tesseract的一個(gè)輕量化模型識(shí)別速度在1到2秒之間對(duì)大多數(shù)印刷體PDF效果足夠好。第二步是組裝提示詞。這是我反復(fù)調(diào)優(yōu)的重點(diǎn)因?yàn)樾∧P偷闹噶钭裱芰Σ蝗绱竽P湍惚仨毎烟崾驹~寫得非常明確。比如解釋這段功能實(shí)際發(fā)給模型的提示詞模板是你是閱讀輔助助手。請(qǐng)用150字以內(nèi)結(jié)合上文語境解釋下面的段落。不要跑題。段落內(nèi)容{{text}}。格式限定得越清晰輸出越穩(wěn)定。第三步是模型推理。我選用的模型是1.5B到3B之間的小尺寸模型轉(zhuǎn)換為GGUF格式后做4bit量化。在四核A55 CPU上1.5B模型的生成速度大約為每秒8到12個(gè)token輸出一段150字的解釋大概需要20秒左右。聽起來不快但對(duì)閱讀器場(chǎng)景完全夠用——因?yàn)槟汩喿x時(shí)本來就不可能每十秒就提一個(gè)問題。我實(shí)測(cè)每次AI交互的平均響應(yīng)時(shí)間是15到25秒正好和墨水屏的慢節(jié)奏匹配。第四步是結(jié)果渲染。生成時(shí)模型是逐token輸出的如果每個(gè)token都觸發(fā)一次墨水屏刷新不僅慢還會(huì)瘋狂閃爍。我處理的方式是緩沖輸出積累到300毫秒或50個(gè)字符才刷新一次局部區(qū)域并且在卡片底部顯示一個(gè)細(xì)小的閱讀進(jìn)度條告訴用戶AI還在寫。最終完整生成后再以卡片形式停留幾分鐘不會(huì)打擾連續(xù)閱讀。4.3 語音與快捷鍵沒有觸摸屏的時(shí)候怎么交互很多墨水屏閱讀器都有觸摸層但為了降低反光、減少厚度我給DuRoBo Krono準(zhǔn)備的是一塊沒有觸摸層的面板。這意味著所有交互都要靠物理按鍵完成。左右兩側(cè)的翻頁鍵除了翻頁還承擔(dān)了其他功能短按AI鍵直接彈出上下文菜單長(zhǎng)按可以切換選中段落和當(dāng)前整章的粒度菜單導(dǎo)航用方向鍵和確認(rèn)鍵來實(shí)現(xiàn)。這個(gè)設(shè)計(jì)剛開始用會(huì)覺得回到了功能機(jī)時(shí)代但習(xí)慣之后反而是優(yōu)點(diǎn)。觸摸屏上的手勢(shì)操作必須眼睛盯著而物理按鍵可以盲操作在早晚高峰的地鐵里尤其方便。你一只手握著設(shè)備拇指在側(cè)面按鍵上就能完成選中、調(diào)用AI、確認(rèn)、關(guān)閉卡片的全流程完全不需要另一只手幫忙。語音交互我也做了一個(gè)可選的藍(lán)牙麥克風(fēng)模塊平時(shí)不裝在機(jī)身上用的時(shí)候通過藍(lán)牙配對(duì)。這個(gè)模塊主要解決想輸入長(zhǎng)問題的場(chǎng)景比如你正在讀哲學(xué)文本想追問作者這段話是否在回應(yīng)康德的自由概念只靠按鍵選短語表達(dá)不清這時(shí)候按住機(jī)身側(cè)面的麥克風(fēng)鍵說一句系統(tǒng)先用本地語音識(shí)別轉(zhuǎn)成文字再把文字送給模型。因?yàn)檎Z音識(shí)別和模型推理都在本地整個(gè)過程不會(huì)超過40秒算是一個(gè)比較實(shí)用的輔助功能。5. 實(shí)際體驗(yàn)與避坑我用DuRoBo Krono讀了3個(gè)月5.1 通勤體驗(yàn)單手操作和不同溫度下的表現(xiàn)我從冬天開始測(cè)試DuRoBo Krono正好趕上通勤包里塞羽絨服、圍巾、手套的月份。把閱讀器塞進(jìn)羽絨服外兜走到地鐵站的十分鐘里完全感覺不到它的存在這是之前的6英寸閱讀器給不了的體驗(yàn)。上車之后左手拉住吊環(huán)右手掏出Krono拇指按翻頁鍵整個(gè)過程一氣呵成。你可能會(huì)覺得和手機(jī)放一起不就行了嗎但問題在于我在通勤路上并不想看到手機(jī)上的消息通知。DuRoBo Krono沒有SIM卡、沒有通知、沒有任何紅點(diǎn)它唯一會(huì)主動(dòng)彈出來的東西就是AI助手的解釋卡片。這種隨時(shí)可以掏出來又不會(huì)被社交應(yīng)用綁架的設(shè)備體驗(yàn)只有單功能閱讀器做得到。冬天還有一個(gè)意想不到的問題在低溫環(huán)境下低于5℃墨水屏的刷新速度會(huì)明顯變慢殘影也更重。我在室外站臺(tái)上按翻頁鍵能感覺到頁面切換的拖泥帶水。后來在軟件里加了一個(gè)溫度補(bǔ)償邏輯檢測(cè)到溫度傳感器讀數(shù)低于10℃時(shí)把前光自動(dòng)提高一檔同時(shí)強(qiáng)制每次翻頁后多等80毫秒再允許下一次刷新殘影問題緩解了不少。5.2 續(xù)航實(shí)測(cè)AI使用的頻率是影響續(xù)航的最大因素前面表格里的數(shù)據(jù)是我在實(shí)驗(yàn)室環(huán)境下測(cè)的實(shí)際用下來確實(shí)有波動(dòng)。如果只是每天通勤兩小時(shí)純閱讀不調(diào)用AIDuRoBo Krono可以做到三周充一次電這比很多商用電紙書還要猛。如果晚上讀專業(yè)書每隔二十分鐘用一次AI助手查術(shù)語、做總結(jié)一天會(huì)消耗30%左右的電量?jī)商煲怀浠臼浅B(tài)。這里我想特別提醒所有想復(fù)刻的朋友本地AI是功耗大戶但不是必須全程開啟的服務(wù)。我一開始做成了每次選中文字后AI自動(dòng)解釋結(jié)果續(xù)航直接腰斬而且大多數(shù)時(shí)候你其實(shí)只是想翻頁并不需要解釋。后來改成手動(dòng)觸發(fā)AI只有按下快捷鍵才啟動(dòng)推理進(jìn)程續(xù)航立刻恢復(fù)正常。設(shè)計(jì)上一定要把AI做成按需啟動(dòng)而不是隨叫隨到常駐進(jìn)程。另外還有一個(gè)小細(xì)節(jié)Wi-Fi模塊是休眠功耗的主要來源。如果開了Wi-Fi但沒連上任何網(wǎng)絡(luò)它每分鐘都會(huì)掃描一次熱點(diǎn)直接把待機(jī)時(shí)間從25天拉到10天左右。所以我的系統(tǒng)里增加了一個(gè)斷網(wǎng)模式開關(guān)日常強(qiáng)制關(guān)閉Wi-Fi只有需要同步書庫或系統(tǒng)更新時(shí)才手動(dòng)打開。雖然這個(gè)功能很難用智能來形容但對(duì)續(xù)航的增益非常實(shí)際。5.3 踩坑記錄刷新殘影與AI卡片的閃瞎眼這個(gè)項(xiàng)目里調(diào)試最久的問題是AI卡片內(nèi)容輸出時(shí)的閃爍。墨水屏刷新本來就會(huì)閃而AI模型是逐個(gè)token生成的如果每生成一個(gè)字就觸發(fā)一次局部刷新屏幕看起來就像在瘋狂抽搐十幾秒下來人會(huì)有明顯的不適感。我試過三種方案第一次是整屏刷新結(jié)果每生成一小段就白閃一次眼睛受不了第二次是每50個(gè)token刷一次局部區(qū)域仍然有點(diǎn)快最后改成積攢文本碎片、定時(shí)刷新效果才穩(wěn)定下來。具體參數(shù)是AI輸出過程中每500毫秒刷新一次目標(biāo)區(qū)域每次刷新只更新新增的文字行。因?yàn)長(zhǎng)VGL的局部刷新支持臟矩形機(jī)制我可以在模型輸出流不斷寫入文字時(shí)只把那幾行文字的矩形區(qū)域標(biāo)記為需要刷新。這樣AI輸出雖然持續(xù)十幾秒但屏幕每半秒只閃一下小塊區(qū)域完全不會(huì)干擾閱讀。等輸出完畢再執(zhí)行一次清殘影的全刷把過去的文字殘影徹底去掉。另一個(gè)坑是AI卡片的樣式。最開始我讓AI輸出的文字直接沿用電子書正文的排版結(jié)果在屏幕上看AI生成的文字和正文混在一起讀者根本分不清哪里是書里的、哪里是AI補(bǔ)的。后來我把AI卡片的背景做得比正文底色深兩檔卡片外沿加了一條細(xì)邊框底部增加AI生成標(biāo)簽。這樣一眼就能分辨來源也更安全——讀者知道這段話是機(jī)器生成的不會(huì)誤以為它是原文內(nèi)容。5.4 其他值得分享的小問題還有兩個(gè)小問題值得寫一下。一是屏幕前光的光路設(shè)計(jì)如果導(dǎo)光板邊緣沒有做好遮光條前光亮度調(diào)到最低時(shí)屏幕四周會(huì)有一圈明顯暗影看起來特別廉價(jià)。我后來在3D打印外殼內(nèi)側(cè)貼了一圈黑色絕緣膠帶才把漏光解決。二是電磁干擾墨水屏的驅(qū)動(dòng)信號(hào)線如果離電池太近刷新時(shí)會(huì)出現(xiàn)一兩行橫紋需要重新走線或者加屏蔽層。這兩個(gè)問題在工程設(shè)計(jì)上都不難但如果是第一次做這類設(shè)備很容易被它們卡幾個(gè)晚上。6. 未來改進(jìn)方向與復(fù)刻思路6.1 換更大的模型內(nèi)存上限與NPU加速目前為止DuRoBo Krono跑的是1.5B規(guī)模的量化模型能夠在2GB內(nèi)存的板子上穩(wěn)定運(yùn)行。但我自己很清楚1.5B模型在復(fù)雜文本的理解上還是不夠強(qiáng)遇到隱喻密集的詩學(xué)批評(píng)、邏輯鏈很長(zhǎng)的技術(shù)文檔偶爾會(huì)給出比較表面的回答。我目前正在往3B模型方向遷移但3B模型4bit量化后大約需要1.8GB內(nèi)存加上系統(tǒng)開銷2GB內(nèi)存已經(jīng)不夠了下一步計(jì)劃是把板卡換成4GB內(nèi)存版本。如果換到帶NPU的板子AI推理速度會(huì)有質(zhì)的提升。目前CPU推理速度是每秒8到12個(gè)tokenNPU方案可以跑到每秒20到30個(gè)token。這意味著AI卡片的生成時(shí)間從20秒縮短到10秒以內(nèi)交互體驗(yàn)會(huì)明顯上一個(gè)臺(tái)階。但代價(jià)是NPU方案的板卡功耗更高、價(jià)格更貴實(shí)際續(xù)航會(huì)打折。對(duì)于純閱讀器來說我認(rèn)為CPU方案更加平衡。6.2 讓AI助手記住前文本地向量數(shù)據(jù)庫現(xiàn)在DuRoBo Krono的AI助手是無記憶的它只根據(jù)你選中的段落和簡(jiǎn)單指令來回答不會(huì)記住你上一章讀了什么。這個(gè)設(shè)計(jì)讓單次回復(fù)更獨(dú)立、不容易跑偏但當(dāng)你問前文提到的主人公和這里的角色是不是同一個(gè)人時(shí)它就沒法回答了。我正在嘗試在系統(tǒng)里加入一個(gè)本地向量數(shù)據(jù)庫把整本書的文本段落預(yù)先切成若干塊轉(zhuǎn)成向量存起來AI在回答問題時(shí)先檢索最相關(guān)的幾個(gè)段落再把上下文注入到提示詞里。這樣它就能把前文的含義拉進(jìn)當(dāng)前對(duì)話同時(shí)還能做整本書范圍內(nèi)的檢索問答比如問這本書里一共出現(xiàn)幾次自由意志的討論分別在哪幾章。這個(gè)功能一旦跑通DuRoBo Krono的閱讀輔助能力會(huì)完全站在另一個(gè)層面。6.3 開源物料清單和復(fù)刻建議如果你想自己動(dòng)手做一臺(tái)類似的閱讀器我建議不要一上來就追求完全復(fù)刻我的組裝方案而是先做三件事找一塊5.2英寸左右、帶前光的墨水屏模組找一塊用四核A55或更強(qiáng)處理器、內(nèi)存至少2GB的ARM開發(fā)板確認(rèn)它跑Linux之后對(duì)SPI屏幕驅(qū)動(dòng)和USB鍵鼠的兼容性。這三件套定了剩下的外殼和電池反而是最簡(jiǎn)單的事。在硬件上有條件的話優(yōu)先選帶NPU、內(nèi)存可擴(kuò)展到4GB的上板卡這樣后續(xù)升級(jí)模型不需要重新畫主板。電池盡可能選標(biāo)稱容量高一點(diǎn)的聚合物電池控制在機(jī)身尺寸允許范圍內(nèi)即可。系統(tǒng)層面先把穩(wěn)定性做起來再考慮AI功能如果連閱讀器本身的翻頁刷新都沒有調(diào)到舒適加再多的AI功能也只是花架子。我把這次項(xiàng)目的物料清單、外殼打印模型和系統(tǒng)鏡像的整理工作放在了項(xiàng)目倉庫里讀代碼和配置文件比看文章更能學(xué)到細(xì)節(jié)。這個(gè)項(xiàng)目最大的魅力不是我做了一臺(tái)能看書的機(jī)器而是它讓我重新理解了設(shè)備尺寸、AI能力和使用場(chǎng)景三者之間的平衡關(guān)系。最后再分享一個(gè)小技巧無論你采用什么硬件方案一定要注意電源管理中的AI進(jìn)程生命周期。不要讓它常駐后臺(tái)只在用戶明確觸發(fā)AI操作時(shí)拉起進(jìn)程回答完成后立即釋放內(nèi)存和關(guān)閉推理線程。我在第一次版本里就是因?yàn)闆]有做這個(gè)導(dǎo)致閱讀器在反復(fù)喚起AI后內(nèi)存碎片累積最終出現(xiàn)翻頁卡頓甚至系統(tǒng)重啟。做好這一步你的設(shè)備續(xù)航和穩(wěn)定性都會(huì)明顯上一個(gè)臺(tái)階。