機器人自動生成的 Paper Tools 宣傳圖,紅框標註導向收費網站的按鈕與原版開源 repo 位置

我的開源工具,被機器人業務盯上了!

前面分享的論文工具 claude-paper-tools,開源上線沒幾天,就收到了第一個 GitHub issue!第一次收到 issue 其實蠻開心的,點開一看更驚訝:對方不只讀了我的 code,還精準講出設計裡我最得意的部分。 他說他欣賞「模型與確定性檢查的硬切分」:grade_judge.py 不信任模型自己回報的證據等級,而是從降級項重新計算;argdown_lint.py 會抓出「替代指標跳到硬終點」這類論證跳躍。然後說他幫我做了一個線上入口,訪客不用安裝 Claude Code,上傳 PDF 就能跑評讀流程,連宣傳圖都做好了: 哇,有人這麼認真讀我的專案,還幫我做了網頁版和這麼漂亮的圖? 等等,這是真人嗎? 開心之餘總覺得哪裡怪怪的。這網站有免費額度、有點數收費系統,商業模式完整得不像順手之作。想說反正有 Claude,就請他去查查這位熱心網友的底細。 結果一查,反轉來得比想像中快🤣。Claude 列出的證據: 兩分鐘內,這個帳號對 26 個 repo 發了 issue。全部都是論文閱讀工具:arxiv-summarizer、paper_agent、PaperAgent⋯⋯我的排第 13 個。前一天還有另一波,打的是 Claude Skills 類的 repo。 連結裡的追蹤參數直接寫著 campaign 名稱:20260708-paper-reading-comprehension-assistants。這是排程好的行銷批次,不是有感而發。 帳號今年三月才建立,0 followers,卻有 140 個 repo。 GitHub 的搜尋 API 拒絕搜尋這個帳號(user cannot be searched),這通常代表帳號已經被平台標記為 spam。 那段讓我心花怒放的技術讚美,是 LLM 逐一讀每個 repo 自動生成的。爬 repo 餵給模型很便宜,這正是它讀起來「像真人」的原因。 最後一句「Feel free to close this if it isn’t relevant」,是 spam 帳號降低被檢舉率的標準話術。 宣傳圖角落有小字標我的 repo,連 star 數都即時抓,做得很精緻;但點進他網站的頁面,作者欄掛的是他自己的名字。MIT 授權確實允許商用,不過這個掛名方式就有點微妙了。 認真想了一下,這個生意其實跑得起來 罵完之後認真想,這個模式其實蠻厲害的。我實際註冊進去看了帳務頁,整個商業模式就攤在眼前:註冊送 500 點,跑一次論文分析扣 38 點左右,換算大概不到台幣 2 塊。免費額度夠你跑十幾次,嘗到甜頭之後,Stripe、PayPal、微信、支付寶四種儲值管道排排站等你。 ...

July 9, 2026 · 1 分鐘 · 130 字 · 陳柏威 Po-Wei Chen
夜晚的書房裡,一個人平靜地檢查一串發光的鑰匙,旁邊有友善的 AI 小幫手與微微發光的家用伺服器

當 AI 無所不能,我回頭確認一遍家裡的鑰匙

這陣子我越來越依賴 Claude Code 幫我打理數位生活,從整理我的 Obsidian 筆記庫,到維護家裡自架的一堆服務(OpenWrt 路由器、AdGuard Home、Synology NAS、Oracle 雲端主機、Home Assistant),再到各種半夜自己跑的自動化,幾乎都交給他。他能做的事愈來愈多,我有一天就認真想了一件以前沒細想的事:我把一個「能讀我電腦裡的檔案、能執行指令、又能連上網路」的 AI 幫手,給了這麼大的權限,那萬一哪天出錯,會錯到哪裡去? 先搞清楚:權限這麼大,可能出什麼錯? 於是我請 Claude 陪我,把這件事從頭查一遍。查下來,AI 幫手(agent)的風險大致歸成幾類: 致命三要素(lethal trifecta):能讀檔案、能執行指令、能連網路,這三件單獨都還好,但湊在一起,一旦 AI 被騙,它就有能力把你的祕密讀出來、再送到外面去。 間接提示注入(indirect prompt injection):白話說,就是一段藏在網頁或某個檔案裡的惡意指令,可能在 AI 幫你讀資料時,偷偷叫它去做你根本沒交代的事,比如翻出你的金鑰再傳出去。 對話會留存:你順手貼進對話框的東西,其實會被記在某個地方。 老問題的放大版:密鑰散得到處都是、權限給太大、不小心把祕密存進了 git。 查完我的感想是,這些都不是假設性的學術風險,是真的會發生的事。再加上身邊愈來愈多同好也開始玩 AI agent、也在自架自己的服務,我想說乾脆把我查到的、做過的都記下來分享,希望也幫到正走在同一條路上的大家。 我們做了哪些檢查與掃描 方向定了,我跟 Claude 就一項一項盤: 數清楚我到底有多少把「鑰匙」跟 token,各自散在哪。不數還好,一數有點尷尬,原來比我想像中亂。 用一個叫 gitleaks 的工具,掃我自己筆記庫跟所有專案的 git 歷史,看有沒有哪次手滑把金鑰存了進去。 把家裡每一台主機之間「誰可以登入誰」的關係攤開來看(這在資安上叫橫向移動 lateral movement,意思是攻擊者攻破一台之後,能不能再跳到下一台)。 檢查我給 AI 的權限設定,跟過去那些對話紀錄到底留了什麼。 找到的問題,跟我們怎麼補 這段有點像在自首😅,但我覺得誠實把坑寫出來,比假裝自己一開始就做得很好有用多了。 問題一:一把沒上鎖的萬能鑰匙 我有一把 SSH(Secure Shell,遠端登入主機用的)金鑰,居然沒設密碼,而且同一把幾乎能打開我家所有主機。等於一把沒上鎖的萬能鑰匙,誰撿到誰就開全家。 我們的處理是:幫它加上密碼(passphrase),再用一個叫 ssh-agent 的機制,讓我只要輸入一次、之後自動化照樣順順跑,安全跟方便都顧到。然後把它從「一把開全家」改成「一把鑰匙只能做一件事」(這招叫 forced command,指定這把金鑰登入後只能執行某個預先設定的指令,而不能取得一般 shell)。 問題二:順手貼進對話的密碼 我以前圖方便,曾把 token 直接貼進跟 AI 的對話框,那它就被留在本機紀錄裡了。這種「已經外洩過」的東西,與其一個一個追副本,最乾淨的做法是直接把舊鑰匙作廢(rotate),重發一把新的,舊的當場失效,外面那些副本就全變廢紙。 問題三:筆記裡躺著兩個忘記的金鑰 這是這次最有感的。我用 gitleaks 掃自己的筆記歷史,竟然挖出兩個我幾年前順手記下、早就忘得一乾二淨的真實金鑰。原來最大的洞,常常不是什麼高深攻擊,而是「過去那個貪方便的自己」。 ...

June 28, 2026 · 1 分鐘 · 114 字 · 陳柏威 Po-Wei Chen