懶惰之最|GitHub 實測

換 AI 又要重講網站需求?ai-memory 的筆記與交班實測

2026-10-31|專案:akitaonrails/ai-memory|Markdown 版

重點摘要

  • ai-memory 3.3.0 實測可從另一支程式完整讀回一份自製蛋糕網站需求筆記。
  • 搜尋「取貨」在本次單份筆記資料中命中1筆。
  • 同一張交班單依序認領兩次,首次claimed,第二次none_pending且handoff為null。
  • 筆記全文、命中數、首次認領、下一步、未決問題與第二次空值共6項斷言通過。
  • 結論: 筆記與交班API可重現保存、讀回、搜尋及依序認領;未實測AI自動接手專案。
  • 適合: 經常切換AI程式工具、希望留下專案決定與下一步的人
  • 不適合: 期待安裝後AI就會自動完成專案的人
實測項目 結果
示範筆記 1份
取貨搜尋 1筆命中
首次認領 claimed
第二次認領 none_pending / null
資料核對 6項通過

幫店裡改預訂網站,昨天才談好「取貨前三天預訂、只到店付款」。今天換另一個 AI 工具,卻得重新找聊天、重講規則,還要提醒它下一步做到哪裡。ai-memory 想解決的,就是讓這些決定留在工具之外,換工作階段時仍有筆記與交班資料可查。

這次用自己寫的蛋糕網站需求,實跑固定版本 3.3.0 的筆記寫入、另一支程式讀取、關鍵字搜尋與交班認領。需求是示範資料,沒有真實店家或顧客資訊。測試設備為 Mac mini M4 Pro(12 核、64GB),受測執行檔是 Linux ARM64 版。沒有把私人對話送進去,也沒有呼叫付費模型。

先準備工具,不急著接全部 AI

官方 README 的一般入口是安裝後執行 setup,讓它協助設定服務與代理工具。不過那會涉及原有工作環境;這篇先重現最小測試,手動啟動一個只聽本機的 HTTP 服務,再用 Python 標準函式庫呼叫它。你需要 Python 3、Git,以及能跑 ARM64 Linux 執行檔的環境。其他系統必須改選同版本對應的官方檔案,不能直接執行這份 ARM64 版。

以下是本次真的跑過的下載與驗證指令。固定版本能避免未來最新版改了參數卻無法對照;SHA-256 與同份官方發布的校驗檔一致,代表取得的檔案與校驗檔相符,並不是額外的安全保證。

python - <<'INNER'
import urllib.request,json,hashlib,tarfile,os
base='https://api.github.com/repos/akitaonrails/ai-memory/releases/tags/v3.3.0'
d=json.load(urllib.request.urlopen(base));n='ai-memory-linux-aarch64.tar.gz'
for name in [n,n+'.sha256']:
 a=next(a for a in d['assets'] if a['name']==name);urllib.request.urlretrieve(a['browser_download_url'],'/tmp/'+name)
h=hashlib.sha256(open('/tmp/'+n,'rb').read()).hexdigest();expected=open('/tmp/'+n+'.sha256').read().split()[0];assert h==expected;print('RELEASE',d['tag_name'],'SHA256_OK',h);os.makedirs('/tmp/aimbin',exist_ok=True);tarfile.open('/tmp/'+n).extractall('/tmp/aimbin',filter='data')
INNER
/tmp/aimbin/ai-memory --version

另開一個終端機,讓服務保持執行。這次直接啟動服務,不執行 setup,也不接入既有 AI 設定:

/tmp/aimbin/ai-memory --data-dir /tmp/aimdemo serve --transport http --bind 127.0.0.1:49374

從寫下一份需求開始

下面這段會建立示範筆記、讀回完整內容、搜尋「取貨」,最後建立交班單並連續領取兩次。請在另一個終端機執行;建議使用新的示範資料目錄,否則舊筆記與尚未認領的工作可能影響筆數。這裡的 MCP 是工具呼叫介面,並沒有額外啟動 AI 模型。

```bash cat > ./test_memory.py <<'INNER' import urllib.request,json URL='http://127.0.0.1:49374/mcp' def rpc(name,args): data=json.dumps({'jsonrpc':'2.0','id':1,'method':'tools/call','params':{'name':name,'arguments':{'workspace':'demo','project':'cake',**args}}}).encode() d=json.load(urllib.request.urlopen(urllib.request.Request(URL,data=data,headers={'Content-Type':'application/json','Accept':'application/json, text/event-stream'}))) assert 'error' not in d,d assert not d.get('result',{}).get('isError'),d texts=d['result'].get('content',[]) return json.loads(next(t['text'] for t in texts if t['type']=='text')) body='# 蛋糕預訂網站\n已決定:取貨前三天預訂;只到店付款,不做線上刷卡。\n目前進度:首頁介紹已寫好。\n下一步:加上取貨日期欄位。' w=rpc('memory_write_page',{'path':'notes/cake.md','body':body});print('WRITE',json.dumps(w,ensure_ascii=False)) r=rpc('memory_read_page',{'path':'notes/cake.md'});print('READ',json.dumps(r,ensure_ascii=False)) q=rpc('memory_query',{'query':'取貨','limit':5});print('QUERY',json.dumps(q,ensure_ascii=False)) h=rpc('memory_handoff_begin',{'summary':'首頁介紹已寫好;取貨前三天預訂,只到店付款。','next_steps':['加上取貨日期欄位'],'open_questions':['店休那天可不可以取貨?']});print('BEGIN',json.dumps(h,ensure_ascii=False)) a=rpc('memory_handoff_accept',{});print('ACCEPT1',json.dumps(a,ensure_ascii=False)) b=rpc('memory_handoff_accept',{});print('ACCEPT2',json.dumps(b,ensure_ascii=False)) open('/tmp/actual.json','w').write(json.dumps(dict(write=w,read=r,query=q,handoff=h,first=a,second=b),ensure_ascii=False,indent=2))

INNER python ./test_memory.py```

實際找回什麼?

核對項目 本次結果
筆記內容 與寫入文字逐字一致
搜尋「取貨」 1 筆命中
第一次領交班單 claimed,附下一步與未決問題
第二次領同一張 none_pending,handoff 為 null
資料斷言 6 項通過

從實際錄影抽格:需求與搜尋結果

讀回的不是一句模糊摘要:三天前預訂、到店付款、首頁已完成,以及下一步要補取貨日期,全都還在。搜尋則幫忙從筆記找到相關內容;這次資料只有一份,所以「命中一筆」不代表它在大型資料庫也一定找得準。

交班單另外保留「店休那天可不可以取貨?」這個未決問題。第一次認領得到下一步,第二次回覆沒有待領項目。注意,這證明的是本次依序領取不重複;沒有測多人同時搶領,也沒有測 AI 是否會照交班內容完成網站。

從實際錄影抽格:第一次與第二次認領結果

影片中的網頁是我們自製的即時 API 檢視器,方便放大這些結果,並非 ai-memory 的原生操作介面。完整原始回傳另外留下收據,畫面不是手填成功文字。

我會怎麼用

如果常在不同 AI 程式工具間接續同一個專案,我會先用它保存重要決定、完成位置與下一步,再逐步接入實際工作。只用一個工具、很少中斷專案的人,未必需要立刻多維護一層服務。

本次沒有驗證自動擷取聊天、真實 Claude 與 Codex 接力、跨電腦同步、大型資料庫或長期記憶整理。最重要的收穫是需求和交班資料確實可查,並不是安裝後 AI 就自動記得一切。遇到連線失敗先確認服務仍在執行、位址和埠號一致;看到 none_pending 只代表沒有待領項目,不代表工作已完成。

專案與授權:ai-memory、3.3.0 發布頁、MIT 授權。測試日期:2026 年 10 月 31 日。

測試設備:Mac mini M4 Pro(12 核、64GB)。內容依實際執行結果撰寫,數據為撰寫當時的實測值。

← 所有實測