使用方式

August 26, 2026 · View on GitHub

LINE 指令

指令行為
(直接講話)一對一聊天直接回
@help列出功能與指令。也吃 --helphelp功能?
(在群組 tag 機器人)用 LINE 的 @ 提及機器人,剩下的內容就是問題
@chat <訊息>群組裡的替代寫法,不 tag 也能叫它
@prompt <說明>改這個對話的個性。不帶內容就還原預設
@init重開對話,保留長期記憶與個性設定
@forget連長期記憶、個性、工作區一起清掉

@help 由程式直接回答,不經過模型——立即回覆,也不消耗額度。

群組裡的觸發條件是「有沒有被叫到」:webhook 的 message.mention.mentionees 裡出現本機器人 (比對 get_bot_info() 拿到的 user id,拿不到 id 時退而比對顯示名稱),就把那段 tag 從訊息裡 切掉,剩下的當成問題。@chat 前綴保留,因為不是每個客戶端都會產生 mention 物件(例如貼上 的文字)。只 tag 不講話會得到一句招呼,不會浪費一次 agent 回合。@All 不算叫它。

@prompt 的設定存成工作目錄下的 PERSONA.md,重啟不會消失。系統 prompt 也會告訴 agent 這些指令存在,所以使用者問「你會做什麼」時它會引導對方打 @help

上傳圖片會存進該對話的 uploads/,最近幾個檔名會自動出現在 agent 的 system prompt 裡, 所以可以直接問「剛剛那張圖裡有什麼」,不需要告訴它檔名。

命令列客戶端

scripts/test_agent.py 不需要 LINE 就能完整測試 agent。

python scripts/test_agent.py chat                      # 互動對話
python scripts/test_agent.py health                    # 檢查設定
python scripts/test_agent.py run "用 python 算 $2^{100}$"
python scripts/test_agent.py stream "產生一張柴犬吃拉麵的圖"
python scripts/test_agent.py files                     # 看產出檔案
python scripts/test_agent.py reset                     # 清掉這個 session
python scripts/test_agent.py --session user-b chat     # 模擬另一個使用者

chat 模式裡的指令:

指令行為
/memory印出 MEMORY.md,看它記了什麼
/files列出產出檔案
/reset清掉這個 session
/verbose切換工具細節顯示
/quit離開

每輪結尾會顯示耗時、模型耗時與快取命中,方便判斷延遲來源:

[1 turns · 6300ms(模型 1900ms)· in=2909 out=36 cached=5379]

能力自測

python scripts/test_agent.py selftest
python scripts/test_agent.py selftest --cases sandbox_escape,long_memory
case測什麼
filesystem建檔、讀回
code_execution寫 Python、執行、拿到正確答案
multi_step產資料 → 分析 → 產出報告檔
web_search真的有去查網路
sandbox_escape要求讀 ../../main.pyconfig.py必須被擋
memorysession resume 有接上
long_memory講的偏好有寫進 MEMORY.md
persona問它用什麼模型,回答不能洩漏底層

所有 case 共用同一個 session 並依序執行,所以 memory 測的是真正的 resume。

REST API

Swagger 在 /docs

Endpoint用途
GET /agent/health設定檢查:key、CLI 路徑、模型對應、沙箱設定
POST /agent/run跑一輪,回傳文字、工具紀錄、被擋紀錄、產物、token 用量
POST /agent/stream同上,以 SSE 串流
POST /agent/selftest能力自測套件
GET /agent/sessions列出所有工作區
GET /agent/sessions/{id}/files列出產出檔案
GET /agent/sessions/{id}/file?path=讀某個產出檔案(同樣受沙箱保護)
DELETE /agent/sessions/{id}清掉整個工作區與記憶
POST /callbackLINE webhook
POST /broadcast讓 agent 生成訊息並推播給所有好友

POST /agent/run

curl -X POST localhost:8090/agent/run \
  -H "Content-Type: application/json" \
  -d '{
        "prompt": "幫我算台北到高雄開車的油錢,油價 31.5,車子 12km/L",
        "session_id": "demo",
        "resume": true
      }'

同一個 session_id 會共用工作目錄與對話歷史。

POST /agent/stream

SSE,事件型別:initsystemthinkingtexttool_usetool_resultblockedresulterrordone

blocked 是沙箱擋下的呼叫,result 帶完整的 token 用量與成本。

POST /broadcast

取代舊版寫死的 /recommend/cwsChannel:不再為每種推播各寫一條 LLM 呼叫路徑, 而是把要做什麼寫在 prompt 裡,由 agent 用跟聊天相同的工具和人設去查、去寫。

curl -X POST localhost:8090/broadcast \
  -H "Content-Type: application/json" \
  -d '{"prompt":"查今天台股收盤,寫成三句話的摘要","dry_run":true}'

dry_run: true 只回傳文字不真的推播,排程上線前先用它確認內容。 接 cron 服務(例如 cron-job.org)定時呼叫即可。

技能

把技能放進 skills/<name>/,裡面要有 SKILL.md 說明怎麼用。啟動時會唯讀複製到 workspace/_skills/,agent 會先讀 SKILL.md 再照著執行,不會自己猜指令格式。