2026/04/20

倉頡五代升級攻略:Win 10/11 使用者的完美解決方案 (2026 加入一鍵更換、含倉頡三代升級)

作者:吳祐賓

 

 

你使用倉頡打字的時候,有沒有感受到奇怪的味道:

* 晚上的「晚」永遠都排在第二個字

* 「卜竹竹手一」打不出「産」?而「木中中女」打不出「樓」?

 

這代表你也是微軟倉頡四代的受災戶

 

在學習倉頡五代後,一直覺得微軟倉頡和新倉頡的倉頡四代碼表很不友善,一直到最近看到倉頡之友的【替換微軟倉頡碼表,盡享倉頡補完計劃的樂趣】,才知道原來微軟倉頡也可以更新碼表,終於能享受到輸入文字的樂趣了!

 

首先,本篇文章適用範圍:Windows 10 2004 版以上。記得,Windows 更新有時會覆蓋原來倉頡四代的碼表,記得要再回來更新 (2026/03/18 文末追加:一鍵更換 DLC)

 

 

倉頡碼表下載點

 

下載:MSCJData_Cangjie 開頭字樣檔案

例如:

 

 

給倉頡三代的使用者 (習慣打法為:「木中田女」=樓;「戈土心」=應) 

 

倉頡三代補完計劃替換碼表下載地址:https://github.com/Arthurmcarthur/Cangjie3-Plus/releases

 

 

GitHub 上 Cangjie3 倉頡三代碼表 20230909 版本的釋出與下載頁面截圖

 

 

給倉頡五代的使用者 (習慣打法為:「木中中女」=樓;「戈人土心」=應)

 

倉頡五代補完計劃替換碼表下載地址:https://github.com/Jackchows/Cangjie5/releases

 


GitHub Jackchows/Cangjie5 專案 Releases 頁面,顯示 v4.1-beta 最新版本與更新內容

 

安裝步驟

 

  1. 任務管理器裏結束兩個Microsoft IME進程。
  2. 進入 C:\Windows\System32\zh-hk 目錄,刪除
    • ChtCangjie.sdc
    • ChtCangjie.spd
    • ChtCangjieExt.lex
    三個文件(刪除前請備份),然後將此處提供的 ChtCangjieExt.lex,複製到該目錄。




  3. 打開「包含香港增補字符集字元(HKSCS)」開關。

 

 

完成上述步驟後請重新開機,接下來就可以好好體驗倉頡五代所帶來的暢快輸入感!

 

相信更多愛用倉頡的愛好者不滿足於預設的內容。不過因為我個人沒用到進階設定,想要了解更多細節的倉頡愛好者,歡迎再閱讀補完計畫說明檔。


總結

 

使用倉頡補完計畫優點

 

  • 字碼編排最貼近符合倉頡歷代改版標準。
  • 可以使用倉頡五代輸入方式。 
  • 重難(ZX)符號輸入完整呈現。
  • 還有微軟倉頡獨門快速鍵 100% 保留,例如:
    Ctrl+, ,
    Ctrl+' 、
    Ctrl+. 。
    Ctrl+; ;
    Ctrl+Shift+; :

    `+ +
    `- -
    `/ /
    `/ 向下鍵 ÷
    `* 向下鍵 ×
    `+ 向下鍵 ±

    Ctrl+[ 【 向下鍵 「...
    Ctrl+] 】 向下鍵 」...

    Ctrl+Alt+, 叫出特殊符號表 (輸入法整合器) 

 

使用倉頡補完計畫缺點


  • Z開頭的符號碼無法使用,只能使用微軟輸入法的符號快速輸入鍵輸入。 (20220904 MSCJData 版本已解決此問題)
  • 由於微軟倉頡的排序邏輯寫死在程序中,與碼表沒有關聯。補完計畫在調整此問題已將部首、筆畫、兼容區字符移除,RIME 則無此問題

 

整體來說優點大於缺點,能暢快享受輸入文字的樂趣,在這邊分享給大家。

 

2026/03/03 附記:

為什麼我執意要使用微軟輸入法引擎?

1. PIME 容易當機 (Python 不知道為什麼就閃退) 

2. 小小輸入法在 WinUI (Win App 2.0) 是不能用的,它只能在傳統應用程式下使用

3. 其它的自由倉頡、RIME 等輸入法引擎,操作習慣都要重新熟悉,新設備也需要另外安裝。但熟悉微軟輸入法引擎下,新環境我只需要忍耐字碼位置就好,比較不會換了新設備就變智缺化 (笑)

 

 

【2026/03/19 重大更新】一鍵修復 Windows 內建倉頡(三代/五代)選字排序、補完缺字!

 


 

 

上述人工步驟在每次被 Window Update 陰了後,就很懶得重複做,於是我讓 AI 寫了批次檔來做自動更新,原始碼已在 Github 開源供各位取用

 

Github 專案網址:https://github.com/Eden5Wu/Windows-Cangjie-Updater 


三大特色

  • 自動升權:因為會修改註冊檔,所以會要求使用者提供系統管理員權限 
  • 互動式選單:官方有四款需求導向目錄,為此寫了選單,預設為「台灣優先」
  • 自動備份 :腳本會自動備份舊碼表,改壞了就換回來即可


原本是寫 bat 批次檔,但倉三和倉五來源目錄皆以中文命名,剛好又是 bat 的罩門,為避免另外說明造成你我困擾,我決定改為 PowerShell (ps1) 來處理


視 bat 為本命的愛好者,也可以在上述 Github 中下載 bat 來使用,程式碼固定為「台灣優先」,有需要再自行修改

 

 

實現一鍵安裝的倉頡更新,感覺真是太好啦!

若是哪天又被天殺的微軟「更新」蓋掉,只要再對  .ps1 檔案按右鍵 ->「用 PowerShell 執行」來安裝,3 秒鐘就修復完成!

 

真是爽快!

 

常見問題

💡 Q:執行時一閃而過,或是出現「禁止執行指令碼」的紅字報錯?

A: 這是因為 Windows 預設基於安全考量鎖定了 PowerShell 腳本執行。請照以下步驟解鎖:

  1. 按下 Win + X 鍵,選擇 「終端機 (系統管理員)」。(就是Windows PowerShell)

  2. 貼上指令:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 並按 Enter。

  3. 輸入 Y 並按確認。

完成後再次對著腳本按「右鍵 -> 使用 PowerShell 執行」即可正常運作

 


 

Ubuntu 24.04 / 26.04 安裝 Fcitx5 新酷音、繁體倉頡與嘸蝦米 (2026 免手動複製檔案) Ubuntu install Traditional Chinese input Chewing and Cangjie

作者:吳祐賓

 


2026/04/20 更新摘要


沒想到 2026 年,Linux 還是擺脫不了自己下指令安裝輸入法。

 

2023 寫這篇時步驟還很零碎,當時是這麼寫的:

 

Ubuntu 安裝 Taiwan 新酷音和倉頡。

因為網路上安裝步驟很零碎,所以記錄在這裡。

 

2026 年 Ubuntu 更普及,雖然也是要手動安裝,但過程大幅簡化!

現在,短短一行整合指令,就能解決你的問題! 



2026 更新做法

現在 Ubuntu 24.04 之後的版本,只需要一行指令即可安裝「新酷音」、「繁體倉頡」與「嘸蝦米」:


sudo apt update && sudo apt install fcitx5 fcitx5-chewing fcitx5-table-extra fcitx5-chinese-addons

 

安裝完後,直接在 Fcitx5 設定介面搜尋「倉頡五代」、「嘸蝦米」即可看到繁體版本。



歷史存檔:2023/12/2 的手動安裝紀錄(舊版 Ubuntu 適用)

 

安裝 Fcitx5 新酷音 (注音 chewing)

有注音才能夠在 Terminal 進入"下載"資料夾

# 安裝新酷音注音輸入法
sudo apt install fcitx5 fcitx5-chewing fcitx5-chinese-addons
重新開機後即會看到鍵盤圖示在桌面右下角出現,右鍵選單會有新酷音。在設定畫面裡可以看到 Fcitx5 也安裝其它的輸入法。如下圖所示。





 

 

安裝 Fcitx5 倉頡、嘸蝦米等 (fcitx5-table-extra)

 

前一步驟安裝好 Fcitx5 後可以在簡體中文(中國)裡看到倉頡,它可以使用沒有問題。若你想使用繁體中文(台灣),我們繼續看下去。

繁體中文的 Fcitx5 倉頡確實存在,但它是透過 fcitx5-table-extra 套件提供的。但這個套件還在 Debian FTP Masters 審核。這裡就改使用 pkgs.org 提供編譯好的檔案。

這裡下載 Arch Linux Extra aarch64 (結稿時的版本為:fcitx5-table-extra-5.1.0-1-any.pkg.tar.xz)。下載後解壓縮,如下圖所示。


解壓縮後使用 Terminal 將目錄裡的資料複製到 /usr/share 目錄裡。可以使用以下指令:

sudo cp -r usr/share /usr/
# or
sudo cp -r usr/share/* /usr/share/


複製完成後,重新開機,接著就可以在 fcitx5 控制台裡看到繁體中文(台灣)區塊中看到增加的輸入法,如倉頡第五代、嘸蝦米等。如下圖所示。


現在可以享受新增的輸入法囉!



和你分享。




VMWare Tools install

sudo apt-get update
sudo apt-get install open-vm-tools open-vm-tools-desktop

How to share folder between host and VM

建立分享目錄,如下圖所示:

使用 "vmware-hgfsclient" 指令確認分享目錄是否出現。

將所有分享目錄掛載指令:

sudo vmhgfs-fuse -o allow_other .host:/ /mnt/hgfs

只是每次開機都要做這個動作,還在想這個問題要怎麼解決,目前就先建立捷徑在桌面上使用。


Ubuntu-sharing Mounting and Auto Mounting

網友 @darrenpmeyer https://gist.github.com/darrenpmeyer/b69242a45197901f17bfe06e78f4dee3 這篇文章寫得太完美,照著他的步驟做就可以完成一切,這裡把關鍵的 Mounting 和 Auto-Mounting 的內容照原文貼上,以免原文搬走後找不到的情況。

Mounting

To mount the filesystem, run:

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

The shared folders will now be in subdirectories of /mnt/hgfs
Setting up auto-mounting


Add the following line to /etc/fstab:

.host:/    /mnt/hgfs    fuse.vmhgfs-fuse    auto,allow_other    0    0





See also

 

2026/04/19

【Delphi 現代化轉型】Day 3:授權降階計畫:用 Horse 跑出 API,每人年省 $2,000+ 支出

作者:吳祐賓

 


 

 

 

『DataSnap 還能撐多久?』

這是我近幾年來讀者私訊我最多的一句話。

 

站在資深開發者與書籍作者的角度,我看見的是技術與財務的雙重枷鎖 ── 每年支付昂貴的 Enterprise 授權費用,卻換來一個不再進化的工具。

 

EMBT 已明確將 DataSnap 列為「僅維護」狀態,不再投入新功能。這意味著繼續使用,等同每年持續支付同樣高的授權費用,但卻累積越來越難轉移的技術債,並讓招募年輕開發者變得更加困難。 


身為 DataSnap 的資深信徒,我比任何人都更關注這套架構的長遠生命力,更何況我背負著曾經支持我「Delphi in Depth DataSnap 網站應用程式全端開發」一書的眾多讀者,我,有義務帶領信任我的讀者「走出埃及」。
 

我決定在此提出具體的『降階增效』方案。

 

這是我對信任我的讀者與Delphi 同好們的承諾,也是企業轉向輕量化、現代化架構的最佳時機。

 

為了不讓過去的技術累積變成長期的負資產,我透過這幾年的實戰驗證,歸納出一條低風險、高報酬的現代化路徑。這不是單純的技術更換,而是一場提升開發靈活性並立即優化軟體授權支出的戰略調整。 

 

經過這幾年的摸索,我研究後的結論為:以 Horse 框架取代 DataSnap 的核心 REST/JSON RPC 功能。

 

透過 Horse 框架,進行一場不傷筋骨的變革:保留商業邏輯,切斷高昂的授權代價。 

 

Horse 的設計概念貼近現代 Express.js 風格,只需幾個步驟,就能讓後端開發安全地從 Enterprise 降階到 Professional,直接省下每人每年數千美元的授權成本,同時讓程式碼更容易被新一代開發者接手。


實作環節

 

如果你是第一次看到這篇文章,建議可先閱讀系列文章,但這不妨礙本篇對技術的評估。 

 

 

 

建立新的 Delphi 專案

  1. 開啟 Delphi IDE

  2. 點擊選單 File > New > Console Application(Horse 非常適合開發 Console 模式的伺服器)

  3. 將專案存檔到一個資料夾中(例如 C:\D\horseDemos\

  4. 關閉 Delphi,因為 boss 設定路徑時會修改 .dproj 的 Search Path 和 Library Path 內容

 

 

建立新的 Delphi 專案

 

使用 Boss 進行專案初始化 

  1. 開啟【命令提示字元】進入前述專案資料夾目錄
  2. 輸入 boss init 進行 boss 初始化
  3. 期間的精靈介面詢問的問題皆以 Enter 輸入預設值


輸入 boss init 後的初始化過程


使用 Boss 安裝 Horse 套件

  • 輸入 boss install horse
  • 等待 boss 下載與安裝
  • 看到 Success 字樣即安裝完成 

 

 

輸入 boss install horse 後的安裝流程

 

開啟 Delphi 專案,並將 horse 導入

  1. 開啟一開始建立的 Delphi 專案,並輸入以下的 horse beginner code
  2. 按下 F9 執行,若看到 Windows Defender 安全性警示畫面,是因程式會在系統開啟 Port 來使用,故按【允許存取】即可
  3. 看到命令提示字元啟動黑畫面即代表啟動成功
  4. 執行 Chrome / Edge / Firefox 等任一瀏覽器,網址列輸入 http://localhost:9000/ping
  5. 看到 "pong" 字樣即大功告成



program horseSrvr;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, Horse;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    // 定義一個簡單的 GET 路由
    THorse.Get('/ping',
      procedure(Req: THorseRequest; Res: THorseResponse)
      begin
        Res.Send('pong');
      end);

    // 啟動伺服器,監聽 9000 端口
    THorse.Listen(9000);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.


Windows Defender 會阻擋需要開啟 Port 的應用程式,記得按下允許存取鍵

輸入網址後,就可以看到第一個 horse 現代後端服務啟動


這 20 幾行程式碼所實現的功能,在 DataSnap 中需要處理複雜的引導精靈與大量的背景單元,現在可以輕鬆掌握了每一行程式碼的意圖。


使用 horse,擺脫高昂枷鎖的開始

和 DataSnap 相比,幾行 Code 就能擺脫枷鎖,省下那 $2,000 授權費的關鍵竅門。

 

當時 DataSnap 設立之初,就是為了做 Enterprise 應用,現在 DataSnap 被廢止開發,最核心的功能被廢了一大半,那麼, Enterprise 還剩什麼?

 

Enterprise 對我來說剩下 FireDAC 提供的企業級資料庫驅動程式的功能,如 Oracle、Mircosoft SQL Server 等

 

這部份我是以 dbExpress + Devart driver 進行維護主軸,故 FireDAC 對我的誘因不足。

 

各位從這三篇技術文章,可以看出,技術選型的重要與開發工具商的承諾的重要性。

 

在 AI 快速驅動開發轉型的時代,我們不能再被舊時代的授權合約與框架綁架。

 

透過 Horse,可以實現了財務上的『降階增效』,更讓團隊的技術棧與全球主流的 RESTful 架構接軌。

 

不只是省錢,更是為了確保當企業需要招募新一代開發者時,能給出的是一張通往未來的門票,而非歷史的包袱。

 

人的未來性,才是用人留人的根本,您說是吧! 

 

未來會有更多關於 horse 技術文章的產出,有任何問題,都可在留言區分享討論。 

 




 

 

2026/04/18

【Delphi 現代化轉型】Day 2:內戰 — Boss 移殖引爆的防毒軟體的免疫攻擊

作者:吳祐賓





Boss 要怎麼裝進 Delphi 環境?

 

在 Delphi 專案中,每次要加入第三方元件,最花時間的不是寫程式,而是反覆手動調整 Search Path 和 Library Path。有了 Boss 之後,這件事從可能花上幾小時,縮短到 30 秒就能完成。

 

Boss for Delphi
Boss for Delphi and Lazarus from HashLoad github


進入 HashLoad Boss 首頁,由 readme.md 得知有兩種 Boss 安裝方法,原文是這樣的:

 

📦 Installation

  • Download setup
  • Just type boss in the terminal
  • (Optional) Install a Boss Delphi IDE complement

Or you can use the following the steps below:

  1. Download the latest version of the Boss
  2. Extract the files to a folder
  3. Add the folder to the system path
  4. Run the command boss in the terminal

 

看不懂沒關係,我講給你聽。

 

原則上 Boss 和 Delphi / Lazarus 各自獨立的系統,互不規範與限制,Boss 除了安裝 Github 3rd 元件外,會順帶把 3rd 元件路徑自動加入到該專案檔(.dproj)裡,開發者就不用再人工去設定 Search PathLibrary Path

 

知道這個前提後,可以知道:

 

  1. Boss 可獨立作業
  2. Boss 要能夠在 "命令提示字元 (CMD) " 下工作 

 

Boss 為什麼必須安裝在 RAD Studio 的 bin 目錄裡

 

進入 "https://github.com/hashload/boss/releases" 下載 Boss 程式並解壓縮。

 


 

 

Boss 只是普通 EXE 執行檔,不需要也沒有額外的安裝程式。

要能夠隨開命令提示字元就能夠操作 Boss,只能夠手工處理,通常你會先建立新資料夾,把 Boss 放到此資料夾,最後再設定系統環境路徑 (Path 系統變數) ...

 

非常囉嗦! 

 

如果你具備系統管理員身份,你就按以下步驟做就好了! 如果你連系統管理員身份都沒有...你還是看前面非常囉嗦的流程吧。

 

RAD Studio 安裝目錄下的 bin 資料夾,在安裝之初就有被加入到 Windows Path 變數中,所以上述只需一句話就安裝好 Boss 了:

 

把下載來的 boss.exe 放到 RAD Studio 的 bin 目錄裡。

註1:有多個 Delphi 時,任一 bin 目錄都可以,效果相同)

 

為了讓 Boss 使用起來最方便,我自己是把 boss.exe 複製到 RAD Studio 的 bin 目錄,這樣每次開 CMD 就能直接執行,不用額外設定環境變數。  

 

另外 Optional: Boss Delphi IDE complement,雖然能綁定到 Delphi IDE,但已被 npm 訓練習慣的我已經不會偏好此味,有興趣的同好可以自行研究。 

 

 

首次執行 Boss

 

首次執行 Boss,不帶任何參數,Boss 會自動安裝它所需要的環境,之後你可以使用 Boss --help 呼叫手冊閱讀。

 


 

 help 指令很重要,可以看 Boss 有哪些指令與指令說明:

 

boss --help
boss <command> --help 

 

Boss 有更高的機率是被防毒軟體擋下

 

事情總是不會如我們的預期,每每在開始 Boss 時,第一個出來 Say Hello 的永遠是防毒軟體!

 

 


 

Delphi 的二進位檔(尤其是開源工具)常被防毒軟體(如 Windows Defender 或防毒軟體)誤判,沒想到連 Go 語言寫的 Boss 程式也會被誤判。記得要允許 Boss 執行。

 

 

建置環境時間將從數小時變成 30 秒

 

測試時可先建立新專案,本篇建立了 New VCL Console Application,放置在 D:\D\vclDemos\horseDemos 路徑。 

 


 

在專案目錄執行 boss init ,奇妙的事發生了。boss 會啟用精靈介面,引導你設定此專案專案需要吃哪些外部套件,初期只要逐步 Enter 使用預設值即可。

 

完成後該目錄下就會建立 boss.json,這就是 boss 的初始化程序。

 

以前你手動在 IDE 處理的 Search Path 和 Library Path 可能要花上幾小時, 在完成 Boss 初始化後,只需要 30 秒就可以完成了!

 

省下這個時間,代表著新專案能更快上工、團隊成員交接更快,更減少了因路徑設定錯誤造成的延誤。

 

透過 Boss,把原本繁瑣的重複工作自動化,讓開發者把時間花在真正重要的程式邏輯上。這也是本系列想打造更現代化 Delphi 開發流程最重要的一小步。

 

 

下一篇,我們來看這套工具如何把空無一物的專案資料夾,瞬間變成具備生產力的專案內容。 

2026/04/17

【Delphi 現代化轉型】Day 1:決戰版控夢魘—用 Boss 解決 3rd 元件的版控地獄

作者:吳祐賓

 


 

 

昨天又被 3rd Party 元件版本問題搞得有點煩。

以前大家習慣全域裝一套元件,所有專案共用,結果不同專案要不同版本時就亂成一團。

如果你曾經歷過以下事情:

 

  • Delphi 7 升級到 XE 以上
  • DevExpress VCL 或 Github 開放專案 (如 mORMot, Spring4D等) 元件底層大改版

 

那你一定會感受到來自工程師的怨念。絕對!


Delphi Boss 套件庫工具 -- 將 npm 概念加入 Delphi


Boss Logo -- from Github


Boss 這工具就是專門來處理這件事的。它讓每個專案都能有自己獨立的元件版本,概念很像 Node.js 的 node_modules。

 

例如:A 專案和 B 專案同時用到 C 的 3rd 元件,但 C 的 2.0 和 3.0 的函式名稱大改變,以前沒有 Boss 時,通常我們只會選擇其一,然後就用到逼不得已再升級(降級)。

 

現在使用 Boss,你就可以在專案中安裝 3rd 元件的指定版本,每個專案都各自安放獨立的 3rd 資料夾。

 

  • 好處:可維護性提高,不需要每次開專案都擔心缺失元件的問題
  • 代價:元件原始碼會因每個專案都有一份,重複檔案會造成硬碟空間佔用

 

除非你是程式碼潔癖癌末患者,我認為現在硬碟動不動就幾個 TB 的時代,用空間換版本更替掃雷時間,這投報率太高,你不用看看嗎?

 

 

2026/03/04

2026 年,使用 Intel 迷你 PC 打造 AI 伴侶,使用 SillyTavern + ollama-ipex-llm

 作者:吳祐賓

 

SillyTavern 預載的 Seraphina 角色卡
可供初次載入的聊天對象

 

 

 

2025 年,我寫了篇【告別 AI 訂閱費?我的 Intel 迷你電腦 AI 本機實戰(LM Studio / Ollama / IPEX-LLM)】,在 2026 年來看,實在是太困難了,後來重建的時候發現它變簡單了。

 

一、環境準備

先在 D 槽或不需系統管理員權限的位置,建立一個資料夾, 例如:IPEX_LLAMA

 

二、安裝 SillyTavern

首先要安裝 node.js,安裝 LTS 版本即可

SillyTavern Github

看是要直接從網站打包 zip 下載,還是使用以下指令安裝 SillyTavern 都可以。

git clone https://github.com/SillyTavern/SillyTavern -b release 

 

執行【Start.bat】啟動 SillyTavern。啟動後,瀏覽器會自動開啟 http://127.0.0.1:8000


三、安裝 Ollama-IPEX-LLM

Intel 使用 IPEX-LLM 讓 Arc / Iris XE 顯示晶片能夠儲存並運算 GGUF 模型

附帶一提,

IPEX-LLM專案已於2026年1月28日被Intel官方archive(設為唯讀) 

目前 Ollama-IPEX-LLM 不僅堪用且好用,待日後若使用其它替代方案,會再另寫新文章

 

Ollama-IPEX-LLM Github 

步驟 1: 下載免安裝連結

https://github.com/ipex-llm/ipex-llm/releases/tag/v2.3.0-nightly

下載後解壓縮到一個資料夾中 

步驟 2:  啟動 Ollama Serve

打開命令提示字元(cmd),並輸入指令 cd /d PATH\TO\EXTRACTED\FOLDER 進入解壓縮後的資料夾
在視窗中執行 start-ollama.bat 即可啟動 Ollama Serve

 

四、安裝模型

回到原來命令列,使用以下方式設置模型:

ollama run openhermes:7b-mistral-v2.5-q4_K_M

 

* 只要支援中文的模型,內容都會被和諧,講不出垃圾話,還是原生的英文最沒有拒絕回答的傾向,雖然新版模型文字上很優雅,但 OpenHermes 還是最合我的味道

題外話, NVIDIA RTX 2060 6G 下

經測試,q4_K_M 約 4.13 G,適合 6G 顯卡使用

q5_K_M 約 5.1 G,6G 會稍微吃緊

效能比 3050 8G 要好,當然 8 G 的話能吃的上下文就更多了 

 

五、 完成連接

 


 

 

  1. 回到 SillyTavern 瀏覽器頁面。
  2. 點擊上方插頭圖示 (API Connections)。
  3. API 類型選擇 Ollama。
  4. API URL 確認為 http://127.0.0.1:11434。
  5. 點擊 Connect,燈號變綠即大功告成!


AI 伴侶角色卡與設定內容未完待續...

 

 

 

 

2025/12/17

Horse: DataSnap 平替方案

 作者:吳祐賓

 

 

Horse: DataSnap 平替方案

 

評估:

1. 開放原始碼,不會來陰招,在套件裡安插後門來監視你

2. MIT 授權,避免無謂的糾紛 

 

Horse 借鏡 Express.js 設計概念所開發出的 WebAPI 框架

它基於 Boss 之上

Boss 是受 npm 啟發的 Delphi 套件管理工具,用來輕鬆安裝 Horse 等開源套件,可視為 GetIt 的平替

缺點就是 Boss 這名字很大眾,很難找到相關資料

 

Boss 安裝

Boss 安裝檔

https://github.com/hashload/boss/releases 

操作環境,應是泛 Win32 平台都可使用,目前在 Windows Server 2012 下仍能執行 (v3)

Boss Github

https://github.com/HashLoad/boss

 

Horse 安裝 

https://github.com/HashLoad/horse

boss install horse

 

如果不想用 Boss,怎麼安裝 Horse?

官方推薦用 Boss,因為最方便,但有簡單的手動方式:

  1. 去 Horse 的 GitHub 頁面:https://github.com/HashLoad/horse
  2. 點擊綠色的 Code 按鈕 → Download ZIP,下載整個專案壓縮檔。
  3. 解壓縮後,找到裡面的 src 資料夾(這就是 Horse 的核心原始碼)。
  4. 在你的 Delphi 專案中:
    • 把 src 資料夾複製到你的專案目錄下(或任何你喜歡的位置)。
    • 在 Delphi IDE 裡:Project → Options → Delphi Options → Library → Library path,加入這個 src 資料夾的完整路徑。
  5. 之後在你的 .dpr 或 unit 裡直接 uses Horse; 就能用了。

(官方文件也提到過類似方式:「Download the latest version of Horse and include the src/ folder in your project's Library Path.」)

 

Horse 專案超簡單就能用 Delphi IDE 的 F9 直接執行和 debug!因為它本質上是個 Console Application(控制台程式),啟動後會開一個 HTTP server,一直運行聽取請求(不會自動結束)。

步驟-by-步驟教學(從零開始):

  1. 在 Delphi IDE 建立新專案

    • File → New → Other → Console Application(選擇 Delphi 的 Console Application)。
    • 存檔到你喜歡的資料夾,例如 Project1.dpr。
  2. 加入 Horse 的 src 路徑(如果你是手動安裝):

    • Project → Options → Delphi Options → Library → Library path。
    • 加入你下載的 Horse src 資料夾完整路徑(例如 C:\Horse\src)。
    • OK 存檔。
  3. 寫程式碼(取代預設的 .dpr 內容): 把下面這段最簡單的範例貼到你的 .dpr 檔案(整個取代原本的 begin..end):

    pascal
    uses
      Horse;  // 這行很重要

    begin
      // 註冊一個路由:GET /ping 回傳 pong
      THorse.Get('/ping',
        procedure(Req: THorseRequest; Res: THorseResponse)
        begin
          Res.Send('pong');
        end);

      // 啟動 server,監聽 9000 port
      THorse.Listen(9000);

      // 這行會讓程式保持運行(可選,但建議加)
      Writeln('Server is running on http://localhost:9000');
      Writeln('Press ENTER to stop...');
      Readln;
    end.

 

執行(F9)

  • 直接按 F9(或 Run → Run)。
  • 程式會編譯,然後在 IDE 的輸出視窗顯示:

Server is running on http://localhost:9000
Press ENTER to stop... 

 

Debug(除錯)怎麼做?

完全跟一般 Delphi 程式一樣,超方便:

  • 在程式碼上設斷點(點左邊灰色區域,紅點出現)。
    • 例如在 Res.Send('pong'); 這行設斷點。
  • F9 啟動。
  • 用瀏覽器發請求到 /ping。
  • 當請求進來觸發那段程式碼時,IDE 會自動停在斷點!
  • 你可以用 F8(step over)、F7(step into)、觀察變數(Watch)、Req.Query、Req.Body 等。
  • 因為是多執行緒(Horse 用 Indy 或其他處理請求),但 Delphi IDE 對多執行緒 debug 支援很好,斷點一樣會命中。

小Tips:

  • 如果你用 Boss 安裝,會自動把 src 加到專案,步驟更少。
  • 想加 JSON、CORS 等功能?之後用 Boss 安裝 middleware(如 boss install horse-jhonson)。
  • 正式部署時,可以編譯成 Windows Service 或 Linux daemon,但開發時 Console 就夠了。

 

Horse 專案**完全可以編譯成 Windows Service** 來正式部署!這樣就能在背景自動運行、不依賴使用者登入、開機自啟動,非常適合生產環境的 Web API 服務。

### 步驟-by-步驟教學:

1. **建立 Service 專案**:
   - 在 Delphi IDE:File → New → Other → Delphi Projects → Service Application。
   - 這會產生一個新的專案,包含一個 TService 類別(例如 MyService: TService)。
   - 存檔專案(例如 HorseService.dproj)。

2. **加入 Horse 原始碼**:
   - 同樣手動或用 Boss 安裝 Horse 的 src 資料夾。
   - Project → Options → Library path → 加入 Horse src 路徑。

3. **寫程式碼**(在 Service 的 unit 中):
   - 在你的 Service unit(例如 Unit1.pas)加入 `uses Horse;`。
   - 把原本 Console 的程式碼移到 Service 的事件裡:
     ```pascal
     unit Unit1;

     interface

     uses
       Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes,
       Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr, Vcl.Dialogs, Horse;

     type
       TMyHorseService = class(TService)
         procedure ServiceCreate(Sender: TObject);
         procedure ServiceStart(Sender: TService; var Started: Boolean);
         procedure ServiceStop(Sender: TService; var Stopped: Boolean);
         procedure ServiceDestroy(Sender: TObject);
       private
         { Private declarations }
       public
         function GetServiceController: TServiceController; override;
         { Public declarations }
       end;

     var
       MyHorseService: TMyHorseService;

     implementation

     {$R *.dfm}

     procedure ServiceController(CtrlCode: DWord); stdcall;
     begin
       MyHorseService.Controller(CtrlCode);
     end;

     function TMyHorseService.GetServiceController: TServiceController;
     begin
       Result := ServiceController;
     end;

     procedure TMyHorseService.ServiceCreate(Sender: TObject);
     begin
       // 可在這裡初始化一些東西
     end;

     procedure TMyHorseService.ServiceStart(Sender: TService; var Started: Boolean);
     begin
       // 註冊路由
       THorse.Get('/ping',
         procedure(Req: THorseRequest; Res: THorseResponse)
         begin
           Res.Send('pong');
         end);

       // 啟動 Horse server(非阻塞)
       THorse.Listen(9000);  // 或你想要的 port

       Started := True;  // 告訴 Windows 服務已啟動
     end;

     procedure TMyHorseService.ServiceStop(Sender: TService; var Stopped: Boolean);
     begin
       // 停止 Horse server(Horse 較新版本有 Stop 方法,若沒有可忽略或用其他方式)
       // THorse.Stop;  // 如果你的 Horse 版本支援
       Stopped := True;
     end;

     procedure TMyHorseService.ServiceDestroy(Sender: TObject);
     begin
       // 清理資源
     end;

     end.
     ```

4. **編譯與安裝 Service**:
   - 編譯專案(Ctrl+F9),產生 .exe 檔(例如 HorseService.exe)。
   - 以**管理員權限**開啟命令提示字元,執行:
     ```
     HorseService.exe /install
     ```
     - 這會自動註冊到 Windows Services(用 sc.exe 或內建方式)。
   - 去「服務」管理員(services.msc),找到你的服務(名稱預設是專案名,可在 TService 的 Name/Description 屬性改)。
   - 設定啟動類型為「自動」,然後啟動服務。

5. **卸載 Service**(如果需要):
   ```
   HorseService.exe /uninstall
   ```

### 注意事項:
- **不要用 Writeln 或 Readln**:Service 沒有 console,這些會出錯(有些人遇過 I/O error 105,就是因為這個)。改用 TService.LogMessage('Server running...') 記錄到 Event Log。
- **多執行緒安全**:Horse 本身多執行緒,Service 也支援,沒問題。
- **Debug**:開發時,先用 Console 版測試。正式 debug Service 可以用 Attach to Process(Run → Attach to Process),或加參數讓它跑成 Console(進階技巧)。
- **推薦工具**:HashLoad 有個 horse-wizard(GitHub 上),可以直接產生 WinService 版的 Horse 專案模板,超方便!搜尋 "HashLoad horse-wizard" 下載用。
- **防火牆**:記得開 port(例如 9000)。

這樣部署後,你的 Horse API 就變成真正的背景服務了,穩定又專業!如果遇到特定錯誤(如 Access Violation),通常是 DataModule 初始化順序問題,把 Create 移到 ServiceStart 裡試試。

<未完待續>