重構叢集待辦清單
依可能的程式碼行數精簡量、安全性和廣度排序。
1. 頻道外掛設定與安全樣板
最高價值的叢集。
多個頻道外掛中重複的模式:
config.listAccountIdsconfig.resolveAccountconfig.defaultAccountIdconfig.setAccountEnabledconfig.deleteAccountconfig.describeAccountsecurity.resolveDmPolicy
典型範例:
extensions/telegram/src/channel.tsextensions/googlechat/src/channel.tsextensions/slack/src/channel.tsextensions/discord/src/channel.tsextensions/matrix/src/channel.tsextensions/irc/src/channel.tsextensions/signal/src/channel.tsextensions/mattermost/src/channel.ts
可能的抽取形式:
buildChannelConfigAdapter(...)buildMultiAccountConfigAdapter(...)buildDmSecurityAdapter(...)
預期節省:
- ~250-450 行
風險:
- 中等。每個頻道的
isConfigured、警告和正規化略有不同。
2. 擴充套件執行時單例樣板
非常安全。
幾乎每個擴充套件都有相同的執行時持有者:
let runtime: PluginRuntime | null = nullsetXRuntimegetXRuntime
典型範例:
extensions/telegram/src/runtime.tsextensions/matrix/src/runtime.tsextensions/slack/src/runtime.tsextensions/discord/src/runtime.tsextensions/whatsapp/src/runtime.tsextensions/imessage/src/runtime.tsextensions/twitch/src/runtime.ts
特殊變體:
extensions/bluebubbles/src/runtime.tsextensions/line/src/runtime.tsextensions/synology-chat/src/runtime.ts
可能的抽取形式:
createPluginRuntimeStore<T>(errorMessage)
預期節省:
- ~180-260 行
風險:
- 低
3. 安裝引導提示與設定修補步驟
涵蓋面大。
許多安裝引導檔案重複:
- 解析帳號 id
- 提示白名單項目
- 合併 allowFrom
- 設定 DM 策略
- 提示密鑰
- 修補最上層 vs 帳號範圍的設定
典型範例:
extensions/bluebubbles/src/onboarding.tsextensions/googlechat/src/onboarding.tsextensions/msteams/src/onboarding.tsextensions/zalo/src/onboarding.tsextensions/zalouser/src/onboarding.tsextensions/nextcloud-talk/src/onboarding.tsextensions/matrix/src/onboarding.tsextensions/irc/src/onboarding.ts
既有的輔助接縫:
src/channels/plugins/onboarding/helpers.ts
可能的抽取形式:
promptAllowFromList(...)buildDmPolicyAdapter(...)applyScopedAccountPatch(...)promptSecretFields(...)
預期節省:
- ~300-600 行
風險:
- 中等。容易過度泛化;保持輔助函式窄且可組合。
4. 多帳號設定 schema 片段
擴充套件間重複的 schema 片段。
常見模式:
const allowFromEntry = z.union([z.string(), z.number()])- 帳號 schema 加上:
accounts: z.object({}).catchall(accountSchema).optional()defaultAccount: z.string().optional()
- 重複的 DM/群組欄位
- 重複的 markdown/工具策略欄位
典型範例:
extensions/bluebubbles/src/config-schema.tsextensions/zalo/src/config-schema.tsextensions/zalouser/src/config-schema.tsextensions/matrix/src/config-schema.tsextensions/nostr/src/config-schema.ts
可能的抽取形式:
AllowFromEntrySchemabuildMultiAccountChannelSchema(accountSchema)buildCommonDmGroupFields(...)
預期節省:
- ~120-220 行
風險:
- 低至中等。有些 schema 簡單,有些特殊。
5. Webhook 與監控器生命週期啟動
良好的中等價值叢集。
重複的 startAccount / 監控器設置模式:
- 解析帳號
- 計算 webhook 路徑
- 記錄啟動
- 啟動監控器
- 等待 abort
- 清理
- 狀態 sink 更新
典型範例:
extensions/googlechat/src/channel.tsextensions/bluebubbles/src/channel.tsextensions/zalo/src/channel.tsextensions/telegram/src/channel.tsextensions/nextcloud-talk/src/channel.ts
既有的輔助接縫:
src/plugin-sdk/channel-lifecycle.ts
可能的抽取形式:
- 帳號監控器生命週期輔助
- webhook 支援的帳號啟動輔助
預期節省:
- ~150-300 行
風險:
- 中至高。傳輸細節很快會偏差。
6. 小型精確複製清理
低風險清理項目。
範例:
- 重複的 gateway argv 偵測:
src/infra/gateway-lock.tssrc/cli/daemon-cli/lifecycle.ts
- 重複的埠號診斷呈現:
src/cli/daemon-cli/restart-health.ts
- 重複的 session-key 建構:
src/web/auto-reply/monitor/broadcast.ts
預期節省:
- ~30-60 行
風險:
- 低
測試叢集
LINE webhook 事件 fixtures
典型範例:
src/line/bot-handlers.test.ts
可能的抽取:
makeLineEvent(...)runLineEvent(...)makeLineAccount(...)
預期節省:
- ~120-180 行
Telegram 原生指令驗證矩陣
典型範例:
src/telegram/bot-native-commands.group-auth.test.tssrc/telegram/bot-native-commands.plugin-auth.test.ts
可能的抽取:
- 論壇上下文建構器
- 拒絕訊息斷言輔助
- 表格驅動的驗證案例
預期節省:
- ~80-140 行
Zalo 生命週期設置
典型範例:
extensions/zalo/src/monitor.lifecycle.test.ts
可能的抽取:
- 共用的監控器設置 harness
預期節省:
- ~50-90 行
Brave llm-context 不支援選項測試
典型範例:
src/agents/tools/web-tools.enabled-defaults.test.ts
可能的抽取:
it.each(...)矩陣
預期節省:
- ~30-50 行
建議順序
- 執行時單例樣板
- 小型精確複製清理
- 設定與安全建構器抽取
- 測試輔助抽取
- 安裝引導步驟抽取
- 監控器生命週期輔助抽取