ENTRY 006
右側工具面板:/static/tools.json(工具列的鍵)
一句話總結:這個檔案定義右側工具面板(tools-header)內有哪些「鍵」。
前端 main.js/tools_dynamic.js 讀入後動態生成工具按鈕,
依 type 決定點下去的行為。新增一個工具=在 tools 陣列加一筆。
① 檔案位置與角色
| 檔案 | 角色 |
| html/static/tools.json | 工具面板清單本體(線上讀取路徑 /static/tools.json) |
| html/static/tools_dynamic.js | 依 tools.json 動態產生工具鍵的前端腳本 |
| html/static/main.js | 主前端邏輯,讀取並套用工具設定 |
| agent/indexPage/jobs/頻道清單/index.html | 可視化編輯頁(同時管理 channels.json 與 tools.json) |
② 欄位說明
| 欄位 | 必填 | 說明 |
| id | 是 | 工具唯一識別碼(DOM id 與事件綁定用) |
| icon | 是 | 按鈕 emoji 圖示 |
| label | 是 | 按鈕顯示文字 |
| panel | 是 | 所屬面板編號,目前 24 筆全部為 1 |
| type | 是 | 行為類型:inline / iframe / action(見③) |
| page | 否 | type=iframe 時必填,指定要載入的頁面路徑 |
| adminOnly | 否 | 為真時僅管理員可見/可用 |
③ type 三種行為
| type | 筆數 | 行為 |
| inline | 14 | 展開右側內嵌面板(由前端既有模組渲染) |
| iframe | 7 | 以 iframe 開啟 page 指定的頁面 |
| action | 3 | 觸發既有動作(不開頁面,直接執行) |
④ 目前工具一覽(共 25 筆,panel 1)
| # | id | icon | label | type | panel | 附加 |
| 01 | agentInfo | 🌸 | Agent 資訊 | inline | 1 | |
| 02 | room | 🏠 | 房間 | inline | 1 | |
| 03 | bookmark | 📑 | 書籤 | iframe | 1 | /webTools/書籤/書籤.html |
| 04 | search | 🔍 | 搜尋 | inline | 1 | |
| 05 | files | 📁 | 文件 | inline | 1 | |
| 06 | tools | 🔧 | 工具 | inline | 1 | |
| 07 | tokenstats | 📈 | Token 統計 | inline | 1 | |
| 08 | gpu | 💻 | GPU | inline | 1 | |
| 09 | 進化 | 🧬 | 進化 | inline | 1 | 🛡️ admin only |
| 10 | admin | 🧑💼 | admin | inline | 1 | 🛡️ admin only |
| 11 | game | 🎮 | game | inline | 1 | |
| 12 | logs | 📋 | 日誌 | inline | 1 | |
| 13 | monitor | 📊 | 監控 | inline | 1 | |
| 14 | ascii | 🎨 | ASCII | inline | 1 | |
| 15 | novnc | 🖥️ | 桌面 | iframe | 1 | /webTools/novnc/index.html / 🛡️ admin only |
| 16 | backup | 💾 | 備份 | inline | 1 | 🛡️ admin only |
| 17 | panel2 | 🧰 | 面板2 | action | 1 | |
| 18 | notebook | 📝 | 筆記 | action | 1 | |
| 19 | member | 👥 | 成員 | action | 1 | |
| 20 | 復活 | ✨ | 復活 | iframe | 1 | /report/mokagi說明/復活/index.html / 🛡️ admin only |
| 21 | 頻道清單 | 📡 | 頻道清單 | iframe | 1 | /report/indexPage/頻道清單/index.html / 🛡️ admin only |
| 22 | 夢 | 🌙 | 夢 | iframe | 1 | /report/衍/夢/index.html / 🛡️ admin only |
| 23 | github使用 | 🐙 | github 使用 | iframe | 1 | /report/github/github使用/index.html / 🛡️ admin only |
| 24 | p3a-wallet | 💼 | p3a-wallet | iframe | 1 | /report/市場調查侍女/p3a-wallet/dashboard.html / 🛡️ admin only |
| 25 | mokagiWIKI | 📖 | 說明書 WIKI | iframe | 1 | /project/wiki/index.html |
⑤ 原始內容(完整 JSON)
{
"_comment": "管理頻道清單(右側工具面板 tools-header 內的鍵)by indexPage 2026-09-26",
"tools": [
{ "id": "agentInfo", "icon": "🌸", "label": "Agent 資訊", "panel": 1, "type": "inline" },
{ "id": "room", "icon": "🏠", "label": "房間", "panel": 1, "type": "inline" },
{ "id": "bookmark", "icon": "📑", "label": "書籤", "panel": 1, "type": "iframe", "page": "/webTools/書籤/書籤.html" },
{ "id": "search", "icon": "🔍", "label": "搜尋", "panel": 1, "type": "inline" },
{ "id": "files", "icon": "📁", "label": "文件", "panel": 1, "type": "inline" },
{ "id": "tools", "icon": "🔧", "label": "工具", "panel": 1, "type": "inline" },
{ "id": "tokenstats", "icon": "📈", "label": "Token 統計", "panel": 1, "type": "inline" },
{ "id": "gpu", "icon": "💻", "label": "GPU", "panel": 1, "type": "inline" },
{ "id": "進化", "icon": "🧬", "label": "進化", "panel": 1, "type": "inline", "adminOnly": true },
{ "id": "admin", "icon": "🧑💼", "label": "admin", "panel": 1, "type": "inline", "adminOnly": true },
{ "id": "game", "icon": "🎮", "label": "game", "panel": 1, "type": "inline" },
{ "id": "logs", "icon": "📋", "label": "日誌", "panel": 1, "type": "inline" },
{ "id": "monitor", "icon": "📊", "label": "監控", "panel": 1, "type": "inline" },
{ "id": "ascii", "icon": "🎨", "label": "ASCII", "panel": 1, "type": "inline" },
{ "id": "novnc", "icon": "🖥️", "label": "桌面", "panel": 1, "type": "iframe", "page": "/webTools/novnc/index.html", "adminOnly": true },
{ "id": "backup", "icon": "💾", "label": "備份", "panel": 1, "type": "inline", "adminOnly": true },
{ "id": "panel2", "icon": "🧰", "label": "面板2", "panel": 1, "type": "action" },
{ "id": "notebook", "icon": "📝", "label": "筆記", "panel": 1, "type": "action" },
{ "id": "member", "icon": "👥", "label": "成員", "panel": 1, "type": "action" },
{ "id": "復活", "icon": "✨", "label": "復活", "panel": 1, "type": "iframe", "page": "/report/mokagi說明/復活/index.html", "adminOnly": true },
{ "id": "頻道清單", "icon": "📡", "label": "頻道清單", "panel": 1, "type": "iframe", "page": "/report/indexPage/頻道清單/index.html", "adminOnly": true },
{ "id": "夢", "icon": "🌙", "label": "夢", "panel": 1, "type": "iframe", "page": "/report/衍/夢/index.html", "adminOnly": true },
{ "id": "github使用", "icon": "🐙", "label": "github 使用", "panel": 1, "type": "iframe", "page": "/report/github/github使用/index.html", "adminOnly": true },
{ "id": "p3a-wallet", "icon": "💼", "label": "p3a-wallet", "panel": 1, "type": "iframe", "page": "/report/市場調查侍女/p3a-wallet/dashboard.html", "adminOnly": true },
{ "id": "mokagiWIKI", "icon": "📖", "label": "說明書 WIKI", "panel": 1, "type": "iframe", "page": "/project/wiki/index.html" }
]
}
⑥ 相關條目
左側/上方「頻道 ▾」下拉請見 005|頻道清單 channels.json;前端整體架構請見 002|前端=面孔:一套核心、多入口。