OfficePower
BUILDINGOfficePower 不是「再做一個 chatbot」。它處理的是企業真正導入 AI 之後才會浮出來的問題:誰能建立 agent?agent 能讀哪些文件?用哪個模型?花了多少錢?出了事怎麼停?員工在 Discord、LINE、Web 問問題時,IT 還管不管得到?OfficePower is not another chatbot. It handles the problems that appear after a company seriously adopts AI: who can create agents, which files they can read, which model they use, how much they spend, how to stop them, and whether IT still has control when employees ask through Discord, LINE, or the web.
這個專案的切法,是把「AI agent」從個人玩具推到企業運作層級。它有控制台、有 Agent Spec 編譯管線、有 Hermes / Direct / OpenAB runtime adapter、有 App Pack 生成器、有員工身分綁定、有 LiteLLM 費用閘道,還有乾淨容器測試。重點不是會不會 call LLM,而是能不能把 AI 放進公司制度裡運轉。The angle here is moving AI agents from personal tools into enterprise operations. It has a control console, an Agent Spec compiler, Hermes / Direct / OpenAB runtime adapters, an App Pack generator, employee identity binding, a LiteLLM cost gateway, and clean-room container testing. The point is not calling an LLM; the point is making AI operate inside company rules.
為什麼我做這個Why I built this
我做 OfficePower,是因為公司真的開始用 AI agent 之後,問題很快就不是「模型會不會回答」,而是誰能建立、誰能使用、能讀哪些資料、花多少錢、出事時怎麼停。AI 如果要進公司,不只需要 prompt,而需要一套可以治理的運作層。I built OfficePower because once a company seriously starts using AI agents, the hard problem quickly moves beyond whether the model can answer. Who can create agents, who can use them, which data can they read, how much do they spend, and how do you stop them when something goes wrong? If AI enters a company, it needs an operating layer that can be governed, not just prompts.
它解決什麼問題The problem it solves
公司開始用 AI 時,最早的問題通常不是模型不夠聰明,而是 AI 沒有被納入管理。每個部門各自做 bot、各自貼 key、各自丟文件、各自算不清成本;等到資料權限、員工身分、稽核、停用、預算上限出問題,才發現 demo 跟營運差很遠。OfficePower 的切法是:先把 AI 員工變成可建立、可部署、可授權、可計費、可停用的公司資產。When companies start using AI, the first hard problem is usually not model intelligence; it is unmanaged AI. Teams create separate bots, paste separate keys, upload separate files, and lose track of cost. By the time data permission, employee identity, audit, shutdown, and budget issues appear, the gap between demo and operation is obvious. OfficePower starts by turning AI workers into company assets that can be created, deployed, permissioned, metered, and stopped.
產品做了什麼What the product does
Agent 建立與編譯Agent creation and compilation
`/agents` 不是單純 prompt 表單,而是 8 步建立精靈與 10 分頁編輯器:基礎、人設、MCP、資料、管道、用量、防護、Runtime、記憶、自我升級與紀錄都在同一個地方。`/agents` is not just a prompt form. It includes an 8-step creation wizard and a 10-tab editor for persona, MCP, data, channels, usage, guardrails, runtime, memory, self-upgrade, and logs.
中立 Agent SpecNeutral agent spec
平台把 AgentConfig 轉成中立 `agent.yaml`,再由 RuntimeAdapter 編譯到 Hermes、Direct 或 OpenAB。控制平面不被單一 agent framework 綁死。The platform turns AgentConfig into a neutral `agent.yaml`, then RuntimeAdapters compile it for Hermes, Direct, or OpenAB. The control plane is not locked to one agent framework.
App Pack 工廠App Pack factory
`/apps` 可以一鍵啟用 HR、Sales 等 pack;`/apps/generate` 透過訪談產生 agent、skills、app template、dataset 與知識掛載,讓「部門 AI 助理」變成可複製流程。`/apps` enables HR, Sales, and other packs with one click; `/apps/generate` interviews the operator and creates agents, skills, app templates, datasets, and knowledge mounts so departmental AI helpers become repeatable.
文件與知識庫Files and knowledge bases
`/files` 支援上傳、本機掛載、Google Drive 唯讀掛載、AI 自動分類與知識庫授權;agent 透過平台受控通道查文件,不是把所有資料塞進 prompt。`/files` supports uploads, local mounts, read-only Google Drive mounts, AI classification, and knowledge-base permissions. Agents query files through controlled platform channels instead of stuffing every document into prompts.
員工身分與通道Employee identity and channels
員工名錄、Email OTP、LINE / Discord / Web 身分綁定把「誰在問」接回公司資料面;未綁定就先走驗證,不直接把問題丟給模型。Employee directory, email OTP, and LINE / Discord / Web identity binding connect “who is asking” back to company data. Unbound users go through verification before the model is invoked.
AI / Agent 整合AI / Agent integrations
Hermes Runtime 真的會跑The Hermes runtime actually runs
部署不是下載設定檔而已:provisioner 會建立 Hermes profile、寫 SOUL.md / config.yaml / .env、注入秘密、啟動 gateway,讓 Discord bot 實際上線。Deployment is not just downloading a config file: the provisioner creates a Hermes profile, writes SOUL.md / config.yaml / .env, injects secrets, and starts the gateway so the Discord bot actually goes online.
Direct / Hermes / OpenAB AdapterDirect / Hermes / OpenAB adapters
Direct 在平台內執行;Hermes 可以部署成長駐 bot;OpenAB 可輸出原生 config。新增 runtime 時重點在 adapter,不是重寫整個控制台。Direct runs inside the platform; Hermes can deploy a long-lived bot; OpenAB can export native config. Adding a runtime means writing an adapter, not rebuilding the console.
MCP 能力層MCP capability layer
檔案、skills、datasets、memory 透過平台 MCP / op-* 能力下發;Capability Registry 與 token 存活閘門讓停用 agent 時資料面也會斷。Files, skills, datasets, and memory are exposed through platform MCP / op-* capabilities. The Capability Registry and token liveness gates cut data access when an agent is unpublished.
LiteLLM 模型閘道LiteLLM model gateway
Agent 流量走 LiteLLM per-agent virtual key,支援用量歸因、預算上限與封鎖詞;平台自身的 packgen / enhance 則可直連 provider,gateway 掛掉不拖垮控制台。Agent traffic goes through LiteLLM per-agent virtual keys for spend attribution, budgets, and blocked terms; platform features like packgen / enhance can call providers directly so a gateway outage does not take down the console.
Agent 自我升級Agent self-upgrade
Enhance 分頁讓 agent 讀自己的使用數據、訪談操作者痛點、產生 UpgradePlan,再由人審核後套用;不是讓 AI 自己亂改自己。The Enhance tab lets an agent inspect its usage data, interview the operator, generate an UpgradePlan, and apply changes only after human review. It is not uncontrolled self-modification.
品質不是口號Quality signals
Demo 能對 IT 說話A demo that speaks to IT
demo runbook 的主軸不是炫模型,而是 15 分鐘裝好、HR agent 上 Discord、讀真文件、費用看得到、封鎖詞擋得住。這是 IT 決策者聽得懂的 demo。The demo runbook is not model theater: install in 15 minutes, put an HR agent on Discord, answer from real documents, show spend, and block forbidden terms. That is a demo an IT buyer understands.
乾淨容器測試Clean-room container testing
`scripts/container-test.sh up` 把 Next.js 控制平面、Hermes runtime、Discord bot 放進可丟棄容器,避免測試時污染 Dylan 真實的 `~/.hermes`。`scripts/container-test.sh up` puts the Next.js control plane, Hermes runtime, and Discord bot into a disposable container so testing does not pollute Dylan’s real `~/.hermes`.
秘密不進編譯產物Secrets never reach compiled output
CompiledConfig 只放 `fromSecret` 引用;deploy 時才把 Discord token、provider key、MCP token 注入 runtime。前端 API 只看得到 hasToken / hasKey。CompiledConfig only stores `fromSecret` references; deploy injects Discord tokens, provider keys, and MCP tokens at runtime. Frontend APIs only see hasToken / hasKey.
直接記錄架構困難Hard problems written down
challenge.md 把第三方 runtime 拿不到可信 user identity、runtime 自持通道繞過平台治理、JSON store 天花板都寫出來。這不是避談風險的 demo,而是有工程判斷的 prototype。challenge.md openly records hard problems: trusted user identity in third-party runtimes, self-hosted runtime channels bypassing platform governance, and the JSON store ceiling. This is not a risk-free demo; it is an engineering-aware prototype.
有停用與撤權機制Shutdown and revocation built in
Capability Registry 加上 agent live gate;unpublish / delete 會撤 token、停容器,避免已下架 agent 繼續拿資料。The Capability Registry adds an agent live gate; unpublish / delete revokes tokens and stops containers so unpublished agents cannot keep reading data.