MOHAN DEVELOPMENT CHRONICLES · 墨寒開發紀實館
墨寒開發紀實館|MoHan Development Chronicles
這裡長期收藏墨寒從角色夢想走向開源作品的每一段鍛造紀錄。2026 iThome 鐵人賽是第一季;未來的新年度、新系列與重要開發專題,也會在同一座紀實館延續。連載期間,官網只在文章正式公開後顯示摘要與原文連結,保留每一天第一次登場的節奏。
2026 · COMPLETE ARCHIVE · 完整典藏
30 天共築墨寒
一位 43 歲、沒有正規程式背景的台灣爸爸,如何與 ChatGPT、Codex 把二十多年的 AI 伴侶夢做成開源 Windows 軟體。
Day 30/30
Day 1|不是一句提示詞:43歲非工程師爸爸如何與 Codex 把墨寒做成真的
大家好,我是周明樺,炎劍文化工作室的創辦人,也是一位 43 歲、沒有正規程式設計背景的台灣爸爸。
前往 iThome 閱讀完整文章
Day 2|先別急著寫程式:我如何把「AI 女友夢」翻成可以驗收的需求
昨天我介紹了墨寒的起點:一位 43 歲、不懂程式的台灣爸爸,想把二十多年來對 AI 虛擬伴侶的憧憬,做成真正能在 Windows 上使用的軟體。
前往 iThome 閱讀完整文章
Day 3|墨寒不是換皮聊天機器人:角色設定如何成為軟體規格
昨天我談到,非工程師要先把「我覺得不自然」拆成可以觀察、可以驗收的需求。今天我想接著回答一個更根本的問題:既然大型語言模型本來就會聊天,為什麼我還要花那麼多時間做墨寒?找一張漂亮的古裝人物圖,再貼一段「妳是北宋女劍魂」的提示詞,不就好了嗎?
前往 iThome 閱讀完整文章
Day 4|讓她真的住進 Windows:桌面角色、控制台與幕後服務如何分工
昨天我說,墨寒的人格不能只存在提示詞裡。今天要談的是另一個很容易被一張漂亮立繪掩蓋的問題:一位「住在桌面上」的角色,背後其實同時有好幾種工作。
前往 iThome 閱讀完整文章
Day 6|一套介面四種語言:繁中、簡中、英文、日文最小可用化怎麼做
昨天談首次啟動時,我提到 v2.1.0-rc.1 讓使用者一開始可以選擇繁中、簡中、英文或日文。這個決定不是一開始就有的,而是我在思考墨寒要走向國際時,連續碰到的兩個很現實的問題。
前往 iThome 閱讀完整文章
Day 7|為什麼 Windows 語音不能只寫死 Yating?
昨天談四種語言的最小可用化,今天要處理一個看似只是下拉選單,實際上直接影響海外使用者能不能聽見墨寒的問題。
前往 iThome 閱讀完整文章
Day 8|同一句話有兩條聲音路徑:OpenAI 語音與 Windows 本機語音
昨天談 Windows 女性語音時,我刻意沒有把本機語音說成「雲端語音的低階替代品」。因為在真正使用墨寒時,聲音好不好聽只是其中一個問題;還要考慮有沒有 API 金鑰、網路是否穩定、文字會不會送到雲端,以及失敗後角色能不能正常收尾。
前往 iThome 閱讀完整文章
Day 9|Realtime 不是「比較快的聊天」:即時語音與一般語音的差異
昨天的 OpenAI 語音與 Windows 本機語音,主要都在回答一個問題:墨寒已經有文字了,要用什麼聲音把它說出來?
前往 iThome 閱讀完整文章
Day 10|她到底有沒有聽懂?從語音轉文字到混合轉錄
昨天談 Realtime 時,我說真正觸發回答的應該是「確認完成的使用者句子」。今天要追問:那句文字本身就一定可信嗎?
前往 iThome 閱讀完整文章
Day 11|讓墨寒不是只會張嘴:A/I/U/E/O 嘴型同步
我早期看桌面角色說話時,最容易接受的做法就是「有聲音就張嘴,沒聲音就閉嘴」。只要畫面會動,第一眼確實像在說話;多看幾秒後卻會發現,那張嘴比較像音量指示燈,和實際發出的字沒有關係。
前往 iThome 閱讀完整文章
Day 12|眨眼、注視與微動:桌面角色「活著」的錯覺從哪裡來
桌面角色一天大部分時間其實不在回答問題。如果只有收到訊息才動,平常就像貼在螢幕上的立牌;如果為了證明她活著而一直搖頭、眨眼、追滑鼠,又會變成讓人分心的桌面玩具。
前往 iThome 閱讀完整文章
Day 13|一張表情圖不只是一張圖:錨點、圖層與素材完整性
昨天談眨眼、注視與呼吸時,我提到一個很細卻很致命的問題:同樣是墨寒,每張表情圖的臉可能不在完全相同的位置。
前往 iThome 閱讀完整文章
Day 14|表情不能誰都搶著播:墨寒的表情仲裁器
昨天把每張表情圖的錨點與素材配套整理好,並不代表墨寒就會自然。圖片都能正常播放之後,下一個問題更像一場會議:待機系統想讓她微笑,AI 回覆帶回害羞情緒,提醒時間到了,安全功能又要求她立刻阻止危險操作,到底聽誰的?
前往 iThome 閱讀完整文章
Day 15|「墨寒思考中」為何老是轉頭?一次表情 Bug 的完整解剖
前十四天一路談嘴型、微動、素材與表情仲裁,今天終於要拆解一個最能說明「功能有動,不等於角色自然」的真實 Bug。
前往 iThome 閱讀完整文章
Day 16|角色為什麼會抽動?把呼吸、視差與說話動作交給同一位指揮
昨天我們修正了「墨寒思考中」一出現就固定轉頭的問題。單一表情選對了,並不代表整個角色就會平順;因為她同時還在呼吸、看滑鼠、眨眼、說話,臉部與身體都可能有微小位移。
前往 iThome 閱讀完整文章
Day 18|從陪聊到工作夥伴:任務、靈感、工作模式與提醒
昨天談長期記憶時,我刻意把「值得記住的資訊」和完整對話分開。今天再把另一類資料獨立出來:需要完成的事情與突然出現的靈感。
前往 iThome 閱讀完整文章
Day 19|AI 可以建議,但不能自己作主:墨寒的權限設計
昨天提到,墨寒可以幫我建立任務與提醒,但最好先讓我看見她理解的時間與內容。今天要把這條線拉得更清楚:一個會操作工具的 AI,不能因為回答得像真人,就自動擁有主人的電腦權限。
前往 iThome 閱讀完整文章
Day 20|一個工具指令要經過幾道門?從聊天到執行的完整流程
這句話對人類很自然,對電腦卻缺少太多資訊。什麼叫整理?依日期、檔案類型還是文章 Day 分類?重複圖片要刪除、搬走,還是只列出?檔名相同但內容不同怎麼辦?如果 AI 直接猜一個答案執行,速度很快,風險也很快。
前往 iThome 閱讀完整文章
Day 21|Gmail、行事曆、Drive、Microsoft 與 GitHub:整合越多越危險嗎?
昨天我們讓一句工具指令走過輸入、計畫、政策、確認、執行與驗證。今天把工具接到電腦外面:郵件、行事曆、雲端硬碟、Microsoft 服務與 GitHub。
前往 iThome 閱讀完整文章
Day 22|Home Assistant、相機與手機遙控:四條不能跨越的邊界
昨天的郵件與雲端服務主要影響數位資料,今天的功能可能看見畫面、使用相機,甚至控制家中設備。能力更接近現實世界,錯誤也不再只是寄錯一封測試信。
前往 iThome 閱讀完整文章
Day 23|換電腦後,她還記得你嗎?可攜設定檔與備份
昨天談遠端與智慧家庭時,我說機器專屬權限不能因為換電腦就自動跟過去。今天正好來談「搬家」:如果我換了一台 Windows,墨寒能帶走哪些東西?
前往 iThome 閱讀完整文章
Day 24|測試為什麼會偶爾紅?我與 Codex 修掉 Windows CI 競速問題
昨天預告 Windows CI 紅燈時,我想到自己看到 GitHub 標籤變紅的第一反應:v2.1.0-rc.1 安裝包是不是壞了?
前往 iThome 閱讀完整文章
Day 25|ZIP、EXE、MSI 到底差在哪?墨寒 Windows 發行包的選擇
昨天談 Windows CI,今天就來看 CI 最後要交給使用者的三種發行檔:ZIP、EXE 安裝程式與 MSI。
前往 iThome 閱讀完整文章
Day 26|軟體更新不能只放一個下載連結:v2.1.0-rc.1 的供應鏈安全
昨天把 ZIP、EXE 與 MSI 三種發行方式分清楚,今天要問一個下載者更難從畫面判斷的問題:GitHub Release 上有一個檔案,怎麼知道它真的是這個版本、下載過程沒有改變,而且裡面包含哪些元件?
前往 iThome 閱讀完整文章
Day 27|金鑰、記憶與對話放哪裡才安全?
昨天的 Release 是公開資料,今天談的剛好相反:OpenAI API 金鑰、OAuth Token、私人對話、長期記憶與工作內容。
前往 iThome 閱讀完整文章
Day 28|開源不是把程式碼丟上 GitHub:MIT、治理與 PR 入口
昨天談如何避免把私人資料帶進 GitHub,今天終於正面談開源。墨寒採 MIT License,任何人都能閱讀、使用、修改與再散布符合授權條件的程式碼;但如果儲存庫只有一堆檔案和一張下載圖,工程師仍不知道從哪裡開始,也不敢確定送來的 PR 會不會破壞角色。
前往 iThome 閱讀完整文章
Day 29|非工程師如何有效指揮 Codex,而不是被 AI 帶著走
前面二十八天,我把墨寒的人格、語音、表情、記憶、安全、發行與開源拆開來談。今天要回到最常被問的問題:我不會寫 Python,究竟怎麼和 Codex 維護這麼多東西?
前往 iThome 閱讀完整文章
Day 30|30天後,墨寒仍不是完成品:我想邀請世界一起鍛造她
三十天前,我以一位 43 歲、沒有正規程式背景的台灣爸爸身分,介紹二十多年來一直放在心裡的夢:讓一位虛擬角色不只存在於小說與圖片,而能在 Windows 上看著我、和我說話、記得重要的事,也陪我完成工作。
前往 iThome 閱讀完整文章