Refactor 导读

Ingress core deletion plan:先抓住它真正发力的那一下

这一页不是在堆术语,它像把“Ingress core deletion plan”这台小机器搬到桌上,当着你的面拆开给你看。你先不用全记住,先抓住它到底在忙什么:Ingress core deletion plan。

先听这页的人话版

Ingress core deletion plan

这一页不是在堆术语,它像把“Ingress core deletion plan”这台小机器搬到桌上,当着你的面拆开给你看。你先不用全记住,先抓住它到底在忙什么:Ingress core deletion plan。

如果把这页当成“给普通人看的版本”,你最应该带走的是:它到底在教你一件什么事、什么时候要这样做、以及哪里最容易踩坑。

原始路径:/refactor/ingress-core 章节数量:12 查看原文

第 1 站

Start Here

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Ingress core deletion plan The ingress refactor is not healthy while it adds thousands of net lines. Core centralizatio…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Ingress core deletion plan。

原文小纸条

# Ingress core deletion plan

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The ingress refactor is not healthy while it adds thousands of net lines. Core centralization only counts when bundled…。

原文小纸条

The ingress refactor is not healthy while it adds thousands of net lines. Core centralization only counts when bundled plugin production code gets smaller and old third-party SDK compatibility is quarantined to SDK/core shims.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Desired runtime shape:。

原文小纸条

Desired runtime shape:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“bundled plugin event”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“-> extract platform facts locally”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“-> resolve shared ingress once when facts are available”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
bundled plugin event
  -> extract platform facts locally
  -> resolve shared ingress once when facts are available
  -> branch on generic ingress projections/outcomes
  -> perform platform side effects locally

old third-party helper
  -> SDK compatibility shim
  -> shared ingress-compatible projection where possible
  -> old return shape preserved
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Bundled 新本领插件s should not translate ingress back into local AccessResult, 大家一起的房间AccessDecision, 魔法口令AuthDecision, Dm魔法…。

原文小纸条

Bundled plugins should not translate ingress back into local AccessResult, GroupAccessDecision, CommandAuthDecision, DmCommandAccess, or { allowed, reasonCode } shapes unless that type is public plugin API.

第 2 站

Budget

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Measured against the PR merge-base with origin/main, including untracked files. Minimum remaining cleanup: Comment-only…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Measured against the PR merge-base with origin/main, including untracked files.

原文小纸条

Measured against the PR merge-base with origin/main, including untracked files.

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“merge-base 1671e7532adb”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这里在给“current”挂牌子,告诉系统它该指向“”。
  • 这一行“core production +3,922 / -546 = +3,376”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
merge-base            1671e7532adb

current:
core production       +3,922 / -546    = +3,376
docs                  +601 / -17       = +584
other                 +145 / -2        = +143
plugin production     +4,148 / -5,388  = -1,240
tests                 +2,326 / -2,414  = -88
total                 +11,142 / -8,367 = +2,775

required:
plugin production     <= -1,500
core production       <= +1,500, or paid for by larger plugin deletion
tests                 <= +1,000
total                 <= +2,000

stretch:
plugin production     <= -2,500
core production       <= +1,200
total                 <= 0
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Minimum remaining cleanup:。

原文小纸条

Minimum remaining cleanup:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“plugin production needs 260 more net deleted lines”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“total needs 775 more net deleted lines”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“core production still +1,876 over standalone budget, unless paid down by plugin deletion”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
plugin production     needs 260 more net deleted lines
total                 needs 775 more net deleted lines
core production       still +1,876 over standalone budget, unless paid down by plugin deletion
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Comment-only deletion does not count as cleanup. The previous budget pass was too generous because it included restored…。

原文小纸条

Comment-only deletion does not count as cleanup. The previous budget pass was too generous because it included restored QQBot explanatory comments; this document tracks executable/docs/test code movement only.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Re-measure after each cleanup wave:。

原文小纸条

Re-measure after each cleanup wave:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“base=$(git merge-base HEAD origin/main)”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“git diff --shortstat "$base"”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“git diff --numstat "$base" -- src/channels/message-access src/plugin-sdk extensions | sort -nr -k1 | head -n 80”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
base=$(git merge-base HEAD origin/main)
git diff --shortstat "$base"
git diff --numstat "$base" -- src/channels/message-access src/plugin-sdk extensions | sort -nr -k1 | head -n 80
pnpm lint:extensions:no-deprecated-channel-access

第 3 站

Diagnosis

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The first pass added the shared ingress kernel, then left too much 新本领插件-local authorization beside it: That duplicates…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The first pass added the shared ingress kernel, then left too much 新本领插件-local authorization beside it:。

原文小纸条

The first pass added the shared ingress kernel, then left too much plugin-local authorization beside it:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“platform facts”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“-> shared ingress state and decision”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“-> plugin-local DTO or legacy projection”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
platform facts
  -> shared ingress state and decision
  -> plugin-local DTO or legacy projection
  -> plugin-local if/else ladder
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:That duplicates the 聪明脑袋模型. Core production grew by about 3,376 lines, while bundled 新本领插件 production is 1,240 lines sm…。

原文小纸条

That duplicates the model. Core production grew by about 3,376 lines, while bundled plugin production is 1,240 lines smaller. That is better than the first pass, but it is not inside the minimum budget. The fix remains deletion-first:

像准备清单

这一串条目别硬背,把它当成“Diagnosis”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:delete 新本领插件 DTOs that only rename ingres…、delete tests that only assert wrapper sha…、add core helpers only when the same patch…、keep old SDK compatibility in SDK/core sh…。

原文小纸条
  • delete plugin DTOs that only rename ingress fields
  • delete tests that only assert wrapper shape
  • add core helpers only when the same patch deletes bundled plugin code
  • keep old SDK compatibility in SDK/core shims only
  • repack core after wrapper deletion exposes the stable shape

第 4 站

Hotspots

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Positive bundled production files that still need to shrink: The branch is not inside the minimum budget yet. The remai…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Positive bundled production files that still need to shrink:。

原文小纸条

Positive bundled production files that still need to shrink:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“extensions/telegram/src/ingress.ts +126”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“extensions/discord/src/monitor/dm-command-auth.ts +101”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“extensions/signal/src/monitor/access-policy.ts +92”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
extensions/telegram/src/ingress.ts                        +126
extensions/discord/src/monitor/dm-command-auth.ts         +101
extensions/signal/src/monitor/access-policy.ts             +92
extensions/feishu/src/policy.ts                            +85
extensions/slack/src/monitor/auth.ts                       +64
extensions/googlechat/src/monitor-access.ts                +59
extensions/nextcloud-talk/src/inbound.ts                   +51
extensions/matrix/src/matrix/monitor/access-state.ts       +49
extensions/irc/src/inbound.ts                              +44
extensions/imessage/src/monitor/inbound-processing.ts      +36
extensions/qa-channel/src/inbound.ts                       +34
extensions/qqbot/src/bridge/sdk-adapter.ts                 +33
extensions/tlon/src/monitor/utils.ts                       +30
extensions/twitch/src/access-control.ts                    +22
extensions/qqbot/src/engine/commands/slash-command-handler.ts +20
extensions/telegram/src/bot-handlers.runtime.ts            +19
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The branch is not inside the minimum budget yet. The remaining review-relevant work should delete repeated authorizatio…。

原文小纸条

The branch is not inside the minimum budget yet. The remaining review-relevant work should delete repeated authorization flow, turn scaffolding, or wrapper tests before adding another core abstraction.

第 5 站

Current Code Read

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The healthy core seam already exists in src/消息通道s/小纸条消息-access/runtime.ts: it owns identity adapters, effective allowli…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The healthy core seam already exists in src/消息通道s/小纸条消息-access/runtime.ts: it owns identity adapters, effective allowli…。

原文小纸条

The healthy core seam already exists in src/channels/message-access/runtime.ts: it owns identity adapters, effective allowlists, pairing-store reads, route descriptors, command/event presets, access groups, and the final resolved ResolvedChannelMessageIngress projection.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The remaining growth is mostly 新本领插件 glue layered on top of that seam:。

原文小纸条

The remaining growth is mostly plugin glue layered on top of that seam:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:魔法口令/event helpers, then call sites still pass precomputed normalized allowlists and owner lists.

原文小纸条

command/event helpers, then call sites still pass precomputed normalized allowlists and owner lists.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:extensions/feishu/src/policy.ts, extensions/googlechat/src/monitor-access.ts, and extensions/matrix/src/matrix/monitor/…。

原文小纸条

extensions/feishu/src/policy.ts, extensions/googlechat/src/monitor-access.ts, and extensions/matrix/src/matrix/monitor/access-state.ts still keep local policy DTOs or legacy decision names beside ingress.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:identity normalization and pairing replies local, but still has a wrapper seam that should collapse into direct ingress…。

原文小纸条

identity normalization and pairing replies local, but still has a wrapper seam that should collapse into direct ingress consumption.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:extensions/qa-消息通道/src/inbound.ts, extensions/zalo/src/monitor.ts, and extensions/zalouser/src/monitor.ts still repeat…。

原文小纸条

extensions/qa-channel/src/inbound.ts, extensions/zalo/src/monitor.ts, and extensions/zalouser/src/monitor.ts still repeat route/envelope/turn assembly that can move to shared turn helpers outside the ingress kernel.

像准备清单

这一串条目别硬背,把它当成“Current Code Read”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:extensions/telegram/src/ingress.ts wraps…、extensions/discord/src/monitor/dm-魔法口令-au…、extensions/signal/src/monitor/access-poli…、extensions/nextcloud-talk/src/inbound.ts,…。

原文小纸条
  • extensions/telegram/src/ingress.ts wraps core decisions in Telegram-specific
  • extensions/discord/src/monitor/dm-command-auth.ts,
  • extensions/signal/src/monitor/access-policy.ts correctly keeps Signal
  • extensions/nextcloud-talk/src/inbound.ts, extensions/irc/src/inbound.ts,
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Conclusion: moving more code into core is only useful if it deletes these 新本领插件 wrapper layers in the same patch. Addin…。

原文小纸条

Conclusion: moving more code into core is only useful if it deletes these plugin wrapper layers in the same patch. Adding another abstraction while leaving wrapper returns in place repeats the mistake.

第 6 站

Boundary

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Core owns generic policy: and outcomes 新本领插件s own transport facts and side effects: setup, doctor, status, logs, and us…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Core owns generic policy:。

原文小纸条

Core owns generic policy:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:and outcomes。

原文小纸条

and outcomes

像准备清单

这一串条目别硬背,把它当成“Boundary”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:allowlist normalization and matching、access-大家一起的房间 expansion and diagnostics、pairing-store DM allowlist reads、route, sender, 魔法口令, event, and activatio…。

原文小纸条
  • allowlist normalization and matching
  • access-group expansion and diagnostics
  • pairing-store DM allowlist reads
  • route, sender, command, event, and activation gates
  • admission mapping: dispatch, drop, skip, observe, pairing
  • redacted state, decisions, diagnostics, and SDK compatibility projections
  • reusable generic descriptors for identity, route, command, event, activation,
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:新本领插件s own transport facts and side effects:。

原文小纸条

Plugins own transport facts and side effects:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:setup, doctor, status, logs, and user-facing copy。

原文小纸条

setup, doctor, status, logs, and user-facing copy

像准备清单

这一串条目别硬背,把它当成“Boundary”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:小铃铛通知/socket/request authenticity、platform identity extraction and 对话接口 loo…、消息通道-specific policy defaults、pairing challenge delivery, replies, acks…。

原文小纸条
  • webhook/socket/request authenticity
  • platform identity extraction and API lookups
  • channel-specific policy defaults
  • pairing challenge delivery, replies, acks, reactions, typing, media, history,
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Core must stay 消息通道-agnostic: no Discord, Slack, Telegram, Matrix, room, guild, space, 对话接口 来帮忙的小伙伴, or 新本领插件-specific…。

原文小纸条

Core must stay channel-agnostic: no Discord, Slack, Telegram, Matrix, room, guild, space, API client, or plugin-specific default in src/channels/message-access.

第 7 站

Acceptance Rule

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Every new core helper must delete bundled 新本领插件 production code immediately. Stop and redesign if: 消息通道-specific default。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Every new core helper must delete bundled 新本领插件 production code immediately.

原文小纸条

Every new core helper must delete bundled plugin production code immediately.

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“one bundled caller reject; keep plugin-local”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“two bundled callers accept only if plugin production LOC drops”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“three or more callers plugin deletion must be at least 2x new core LOC”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
one bundled caller        reject; keep plugin-local
two bundled callers       accept only if plugin production LOC drops
three or more callers     plugin deletion must be at least 2x new core LOC
compatibility-only helper SDK/core shim only; never bundled hot paths
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Stop and redesign if:。

原文小纸条

Stop and redesign if:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:消息通道-specific default。

原文小纸条

channel-specific default

像准备清单

这一串条目别硬背,把它当成“Acceptance Rule”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:新本领插件 production LOC increases、tests grow faster than production shrinks、a bundled hot path returns a DTO that onl…、a core helper needs a 消息通道 id, platform o…。

原文小纸条
  • plugin production LOC increases
  • tests grow faster than production shrinks
  • a bundled hot path returns a DTO that only renames ResolvedChannelMessageIngress
  • a core helper needs a channel id, platform object, API client, or

第 8 站

Work Packages

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. Freeze the budget. Put LOC in the PR, keep deprecated-ingress lint green, and include before/after LOC in cleanup co…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. Freeze the budget. Put LOC in the PR, keep deprecated-ingress lint green, and include before/after LOC in cleanup co…。

原文小纸条

1. Freeze the budget. Put LOC in the PR, keep deprecated-ingress lint green, and include before/after LOC in cleanup commits.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:2. Delete thin DTO seams. Replace 新本领插件-local wrapper returns with Resolved消息通道小纸条消息Ingress, senderAccess, 魔法口令Access,…。

原文小纸条

2. Delete thin DTO seams. Replace plugin-local wrapper returns with ResolvedChannelMessageIngress, senderAccess, commandAccess, routeAccess, or ingress directly. Start with QQBot, Telegram, Slack, Discord, Signal, Feishu, Matrix, iMessage, and Tlon. Delete wrapper-shape tests; keep behavior tests.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:3. Add outcome classification only with deletions. A generic classifier may expose dispatch, pairing-required, skip-act…。

原文小纸条

3. Add outcome classification only with deletions. A generic classifier may expose dispatch, pairing-required, skip-activation, drop-command, drop-route, drop-sender, and drop-ingress. It must derive from the decision graph, not reason strings, and migrate at least three plugins in the same patch.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:4. Add route descriptor builders only with deletions. Generic route target and route sender helpers are acceptable only…。

原文小纸条

4. Add route descriptor builders only with deletions. Generic route target and route sender helpers are acceptable only if they immediately shrink route-heavy plugins: Google Chat, IRC, Microsoft Teams, Nextcloud Talk, Mattermost, Slack, Zalo, and Zalo Personal.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:5. Add 魔法口令/event presets only with deletions. Centralize text-魔法口令, native-魔法口令, callback, and origin-subject shapes.…。

原文小纸条

5. Add command/event presets only with deletions. Centralize text-command, native-command, callback, and origin-subject shapes. Command consumers must default to unauthorized when no command gate ran; events must not start pairing.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:6. Add identity presets only where they remove boilerplate. Stable-id, stable-id-plus-aliases, phone/e164, and multi-id…。

原文小纸条

6. Add identity presets only where they remove boilerplate. Stable-id, stable-id-plus-aliases, phone/e164, and multi-identifier helpers are allowed when raw values enter only adapter input and redacted state keeps opaque ids/counts.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:7. Share authorized turn assembly. Outside the ingress kernel, remove repeated route/envelope/context/reply scaffolding…。

原文小纸条

7. Share authorized turn assembly. Outside the ingress kernel, remove repeated route/envelope/context/reply scaffolding from QA Channel, IRC, Nextcloud Talk, Zalo, and Zalo Personal. Core may own route/session/envelope/dispatch sequencing; plugins keep delivery and channel-specific context.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:8. Quarantine compatibility. Deprecated SDK helpers stay source-compatible, but bundled hot paths must not import depre…。

原文小纸条

8. Quarantine compatibility. Deprecated SDK helpers stay source-compatible, but bundled hot paths must not import deprecated ingress or command-auth facades. Compatibility tests should use fake third-party plugins, not bundled-plugin internals.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:9. Repack core. After wrapper deletion, collapse one-use modules, remove unused exports, move compatibility projection…。

原文小纸条

9. Repack core. After wrapper deletion, collapse one-use modules, remove unused exports, move compatibility projection out of hot paths, and keep focused tests for identity, route, command/event, activation, access groups, and compatibility shims.

第 9 站

Deletion Waves

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run these in order. Each wave must lower bundled production LOC. 1. Wrapper collapse, expected 新本领插件 delta: -400 to -60…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run these in order. Each wave must lower bundled production LOC.

原文小纸条

Run these in order. Each wave must lower bundled production LOC.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. Wrapper collapse, expected 新本领插件 delta: -400 to -600. Replace 新本领插件-local resolveXAccess, resolveX魔法口令Access, and ac…。

原文小纸条

1. Wrapper collapse, expected plugin delta: -400 to -600. Replace plugin-local resolveXAccess, resolveXCommandAccess, and accessFromIngress result types with direct reads from ResolvedChannelMessageIngress. First targets: Discord DM command auth, Feishu policy, Matrix access state, Telegram ingress, Signal access policy, QQBot SDK adapter.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:2. Shared outcome helpers, expected 新本领插件 delta: -200 to -350. Add one generic classifier only if it deletes repeated s…。

原文小纸条

2. Shared outcome helpers, expected plugin delta: -200 to -350. Add one generic classifier only if it deletes repeated shouldBlockControlCommand, pairing, activation skip, route block, and sender block ladders across at least three plugins.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:3. Route descriptor builders, expected 新本领插件 delta: -200 to -350. Move repeated route target and route sender descripto…。

原文小纸条

3. Route descriptor builders, expected plugin delta: -200 to -350. Move repeated route target and route sender descriptor assembly into core helpers. First targets: Google Chat, IRC, Microsoft Teams, Nextcloud Talk, Mattermost, Slack, Zalo, Zalo Personal.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:4. Turn assembly sharing, expected 新本领插件 delta: -250 to -450. Use common route/session/envelope/dispatch sequencing for…。

原文小纸条

4. Turn assembly sharing, expected plugin delta: -250 to -450. Use common route/session/envelope/dispatch sequencing for simple inbound plugins. First targets: QA Channel, IRC, Nextcloud Talk, Zalo, Zalo Personal.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:5. Core repack, expected core delta: -300 to -700. After 新本领插件s consume runtime projections directly, delete one-use mo…。

原文小纸条

5. Core repack, expected core delta: -300 to -700. After plugins consume runtime projections directly, delete one-use modules, merge tiny files back into runtime.ts or focused siblings, and keep SDK compatibility files separate from bundled hot paths.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:6. Test pruning, expected test delta: -300 to -600. Delete tests that only assert removed wrapper shapes. Keep behavior…。

原文小纸条

6. Test pruning, expected test delta: -300 to -600. Delete tests that only assert removed wrapper shapes. Keep behavior tests for command denial, group fallback, origin-subject matching, activation skip, access groups, pairing, and redaction.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Expected minimum landing shape after these waves:。

原文小纸条

Expected minimum landing shape after these waves:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“plugin production <= -1,500”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“core production about +1,800 to +2,200 before final repack”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“tests <= +500”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
plugin production     <= -1,500
core production       about +1,800 to +2,200 before final repack
tests                 <= +500
total                 <= +2,000

第 10 站

Do Not Move

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Do not move platform 设置说明书 defaults, setup UX, doctor/fix copy, 对话接口 lookups, Slack owner-presence checks, Matrix alias…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Do not move platform 设置说明书 defaults, setup UX, doctor/fix copy, 对话接口 lookups, Slack owner-presence checks, Matrix alias…。

原文小纸条

Do not move platform config defaults, setup UX, doctor/fix copy, API lookups, Slack owner-presence checks, Matrix alias/verification handling, Telegram callback parsing, command syntax parsing, native command registration, reaction payload parsing, pairing replies, command replies, acks, typing, media, history, or logs.

第 11 站

Verification

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targeted local loop: Use Testbox for broad changed gates/full-suite proof once the LOC trend is inside budget. Each wor…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targeted local loop:。

原文小纸条

Targeted local loop:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这里在给“pnpm lint”挂牌子,告诉系统它该指向“extensions:no-deprecated-channel-access”。
  • 这一句像在终端上按下启动钮:“pnpm test src/channels/message-access/message-access.test.ts src/plugin-sdk/channel-ingress-runtime.test.ts src/plugin-sdk/access-groups.test.ts”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一句像在终端上按下启动钮:“pnpm test extensions/<changed-plugin>/src/...”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm lint:extensions:no-deprecated-channel-access
pnpm test src/channels/message-access/message-access.test.ts src/plugin-sdk/channel-ingress-runtime.test.ts src/plugin-sdk/access-groups.test.ts
pnpm test extensions/<changed-plugin>/src/...
pnpm plugin-sdk:api:check
pnpm config:docs:check
pnpm check:docs
git diff --check
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Use Testbox for broad changed gates/full-suite proof once the LOC trend is inside budget.

原文小纸条

Use Testbox for broad changed gates/full-suite proof once the LOC trend is inside budget.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Each work package records:。

原文小纸条

Each work package records:

像准备清单

这一串条目别硬背,把它当成“Verification”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:before/after LOC by category、deleted 新本领插件 wrappers、new core helper LOC, if any、targeted tests run。

原文小纸条
  • before/after LOC by category
  • deleted plugin wrappers
  • new core helper LOC, if any
  • targeted tests run
  • remaining hotspot list

第 12 站

Exit Criteria

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:stays <= +2,000 access-大家一起的房间, and 消息通道-specific fallback behavior ---。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:stays <= +2,000。

原文小纸条

stays <= +2,000

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:access-大家一起的房间, and 消息通道-specific fallback behavior。

原文小纸条

access-group, and channel-specific fallback behavior

像准备清单

这一串条目别硬背,把它当成“Exit Criteria”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:bundled production imports no deprecated…、compatibility code is isolated to SDK/cor…、bundled 新本领插件s consume ingress projection…、新本领插件 production LOC is at least 1,500 ne…。

原文小纸条
  • bundled production imports no deprecated channel-access or command-auth facades
  • compatibility code is isolated to SDK/core seams
  • bundled plugins consume ingress projections or generic outcomes directly
  • plugin production LOC is at least 1,500 net negative against origin/main
  • core production LOC is <= +1,500, or any excess is paid for while total
  • representative tests cover redaction, route, command/event, activation,
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。

原文小纸条

---

AdSense 连接验证已经放在页面头部;广告单元等站点审批通过后再启用。

google-adsense-account: ca-pub-3833673520933536