顯示具有 vim 標籤的文章。 顯示所有文章
顯示具有 vim 標籤的文章。 顯示所有文章

2026年9月4日 星期五

介紹一下 Rune - Zero-Trust AI Agent 的由來

2026 年 5 月 1 日下午帶著家人小孩們去新北大都會公園玩耍,腦中突然靈光一閃:既然 AI Agent 直接跑在系統上始終存在信任隱患,為何不自己寫一個能被 Linux 各種沙盒(Sandboxing)機制嚴格管控的 Agent?當下便拿出 iPad,透過 Terminus 連線並運用已年訂閱的 Gemini CLI 開始實作 Prototype。到了傍晚天剛暗下來時,Rune 的雛形就已經跑起來了。

隨著開發推進,我發現自己需要一套輕量的 Markdown Wiki 來瀏覽並集中存放各類 AI Agent 產出的 Context,但又不想安裝龐大複雜的 Obsidian——我單純只想 review 這些內容,順便整合進內建的 AI Agent。於是順理成章將 Rune 擴展出 Web UI 服務,這便是 Rune Notes 的由來。接著又覺得多人共用、群聊會很有意思,便串接了 GitHub & OAuth2 認證。

起初我只透過 RESTful API 搭配 Agent Skill,但整體體驗不如預期,於是進一步實作了 MCP 支援。為了確認與各家 Agent 的相容性,在測試過程中還順手送了個 patch 給 Hermes Agent,修復它原先在 MCP 上的問題,確保它能順暢對接 Rune Notes 的 MCP 機制。之後為了省去手動複製貼上網頁內容的麻煩,又順手搓出 Rune Chat 這套支援 Firefox 與 Chrome 的瀏覽器擴充功能。此外我還試著擴展了 Vim plugin,雖然目前流暢度仍有進步空間,但秉持「有需求就自己動手做」的原則,慢慢迭代就好。目前編譯後的 binary 大小不到 8 MB,極度輕量但功能相當齊全。

都看到這裡了,不妨順手到 GitHub 點個 Star 吧!我也準備好了 Docker image 方便本地部署,只要搭配 Tailscale,就能無痛搭建出私密的個人筆記庫或小型團隊的 Markdown Wiki 共筆平台。

現在在瀏覽器上我非常仰賴 Rune Chat:不論是刷 LeetCode、HackerRank、讀 O'Reilly Media 線上書籍,還是整理公司雜務與會議筆記,遇到任何網頁內容都能隨手呼叫這位私人助理。所有資料全數保留在本地,搭配 ZDR LLM 或本地模型,隱私與安全性完全在掌控之中。Rune 本身採 Zero-Trust 設計,在權限配置上完全不予放行,它本質上就只能單向地在筆記系統內處理文件。雖然目前難免還有點小瑕疵與毛病,但整體體驗已經相當順手。

說來有趣,Rune 最初其實純粹是為了不浪費 Google Gemini 年訂閱而敲出來的專案——早期全靠 Gemini CLI 一路推進,後期則切換到了 Antigravity CLI 繼續開發。

2010年12月19日 星期日

在 Mac OS X 10.4.11 上使用 MacPorts 1.9.1 來建立 Perl 以及 Python 的開發環境

在安裝 MacPorts 1.9.1 之前要把 Xcode 裝好
然後去下載 MacPorts 1.9.1 來安裝
之後再使用 root 權限執行下面這段 script 就大功告成啦~ :D
gist: 747325
#! /bin/bash
# Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
# Mac OS X 10.4.11 + MacPorts 1.9.1 -- 2010/12/19

set -e -x

# Upgrade MacPorts
port selfupdate
port upgrade outdated || (port deactivate subversion && port clean subversion && port install subversion)

# Install Perl
port install perl5 +perl5_12

# Install Python
port install python27 +no_tkinter
port install python_select
python_select python27

# Install Vim
port install vim +perl +python27

# Install Git
port install git-core +python27

# Clean
port -u uninstall
以上這段 script 安裝了 perl/python/vim/git

2009年10月1日 星期四

Vim 編輯 Python 的設定

最近空閒時間都在學習寫 Google App Engine 上面的 Python 程式
剛剛研究了一會整理出這個簡單的設定
function! s:python_custom()
    function! s:man(keyword)
        execute '!pydoc ' . a:keyword
    endfunction
    setlocal tabstop=4 expandtab shiftwidth=4
    setlocal foldmethod=indent foldcolumn=4 foldlevel=3 foldnestmax=3
    command! -nargs=1 Man call s:man(<f-args>)
    cnoremap K :!pydoc <cword><CR>

endfunction
if has("autocmd")
    autocmd Filetype python call s:python_custom()
endif
開啟 Python 檔案時自動用縮排來 Folding 最多三層
縮排跟 Tab 都設定為 4 個空白
在關鍵字上按下 K 會透過 pydoc 去查詢使用說明
或是直接輸入 :Man list 這樣的指令
把上面那段 script 加到 .vimrc 裡面就可以使用了

2009年5月18日 星期一

Vim 套用 Markdown syntax

Markdown 是一套類似 WIKI 語法,可以快速生成 HTML 文件的工具。
因為自己有在使用 Vim 去編輯 Markdown 的檔案
所以找了一下給 Markdown 使用的 syntax
下載回來後放在 ~/.vim/syntax 底下
然後再新增編輯 ~/.vim/filetype.vim
augroup filetypedetect
    au BufNewFile,BufRead *.mkd      setfiletype mkd
augroup END
這樣一來就可以指定 .mkd 副檔名的檔案都使用 Markdown 的 syntax
另外 Markdown 也是 GitHub 上面官方支援的文件格式之一

2008年10月20日 星期一

Vim :set cursorline :set cursorcolumn



剛剛增加了兩個快速鍵到 ~/.vimrc 當中
nmap <S-F11> :set cursorline!<BAR>set nocursorline?<CR>
nmap <S-F12> :set cursorcolumn!<BAR>set nocursorcolumn?<CR>
效果就有如上圖囉~ 有水平跟垂直的標線~ ^o^

2008年7月8日 星期二

Vim 小技巧: 自動移除行尾多餘空白

在 $HOME/.vimrc 裡面加上
autocmd FileType c,cpp,java,php,perl,python,ruby,sh autocmd BufWritePre  :call setline(1,map(getline(1,"$"),'substitute(v:val,"\\s\\+$","","")'))
這樣就可以在每次存檔的時候,自動地把行尾多餘空白都移除掉囉~ 很好用吧~ ^~^

2008年7月6日 星期日

:help changelog

Vim 裡面有個組合鍵在寫 ChangeLog 的時候特別地好用
不過這個組合鍵只有在開啟 ChangeLog 這個檔案名稱才會起作用
組合鍵:
'\' + o

另外就是在 $HOME/.vimrc 可以指定使用者名稱
let changelog_username = "Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>"

有在寫 GNU Style ChangeLog 的人才會覺得這個功能好用吧~ :P

2008年6月19日 星期四

:help new-vimgrep

Vim 7.X 有一個相當實用的功能 vimgrep
相關的說明可以參考 :help new-vimgrep
我自己則是定義了三個快速鍵來使用
nmap <s-f9> viwy:vimgrep /\<<C-R>"\>/g **/*.[ch] **/*.[ch]pp **/*.java **/*.p[ly] **/*.rb<CR>
nmap <c-n> :cn
nmap <c-p> :cp
這樣就可以很方便地在 C/C++/Java/Perl/Ruby/Python 的程式碼樹當中快速搜尋關鍵字~
使用 Ctrl+n 來跳到後一個出現的地方
使用 Ctrl+p 來跳到前一個出現的地方
連 Google Search 都沒有這麼好用~ :P

:help new-vim-server

其實早在 Vim 6.X 的時候就有的一個功能
在 Ubuntu 8.04 上面要裝上 gvim 才能夠使用
就是先執行一個 vim 來當 server
vim --servername VIM file1.txt
然後再執行
vim --remote-tab file2.txt
就可以把 file2.txt 開個 tab 在前面那個 vim-server 裡面了~
詳細的說明可以參考 :help new-vim-server

2008年5月1日 星期四

vim + ydict

我很久以前有改寫過一個 ydict 的 Yahoo! 命令列字典
放在
http://fd.idv.tw/tux/ydict

後來在 $HOME/.vimrc 裡面加上一行
map <C-K> viwy:!ydict <C-R>"<CR>

然後就是每天爽爽地使用 vim 上的 Ctrl+K 快速翻譯英文或中文
或是拿來做為英文的錯字檢查
剛剛有人覺得我這個使用方式還蠻好用的就順便寫篇文章分享給更多人知道~ ^_^

2007年3月26日 星期一

vi 無所不在

根據小道消息(有人告訴我)
bash 中也有 vi
就是使用 set -o vi
這時候就可以開始使用 vi 模式
一開始會是 Insert Mode
當按下 Esc 後會進入 Command Mode
hjkl 左下上右
hl 會在目前的指令前後移動
jk 會在 history 前後項移動
另外像是 /? 可以搜尋啟動 vi 模式後所打過的指令
還有 x,X 可以刪除字元
dd 可以整行刪除
0 可以移到指令"前頭"
^ 可以移到指令"開頭"
$ 可以移到指令結尾
W,w,B,b,E,e 可以在單字間移動
v 會進入真正的 vi 介面
A,I,a,i 進入 Insert Mode
... 繁多不即備載
有興趣的朋友可以自己研究研究... ^_^
最後...
set -o 或是 set +o 可以看到其它可以玩弄的選項
所以想要離開 vi 模式就可以執行 set +o vi
不過這時候會覺得使用上會有點奇怪
像是上下鍵的 history 不見了
原來 bash 的預設值是設定成 emacs 模式
所以只要再執行 set -o emacs 就回復到原本的 bash 了
以上的操作是在 Fedora Core 6 上所觀察到的
其它的系統可能功能上稍有出入

2007年3月22日 星期四

什麼!vim 可以編輯 tarball !

這是真的!
剛剛在 Fedora Core 6 上
不小心對 tarball 使用了 vim
突然發現可以直接對 tarball 裡面的檔案做編輯
查了一下
# rpm -ql vim-common | grep tar.vim
/usr/share/vim/vim70/autoload/tar.vim
/usr/share/vim/vim70/syntax/tar.vim
原來是裝 tar.vim 這個 plugin 的關係啊!
喔齁齁~~~ ^o^

2007年3月13日 星期二

vim :TOhtml

#include <stdio.h>

int main(int argc, char *argv[])
{
printf("Hello World!\n");
return 0;
}

喔~ 效果還不錯喔~ ^_^