{
  "name": "modified",
  "title": "改造版 opencode 包级 + 装配层双层 DAG (v1.18.35 + 自进化)",
  "version_note": "官方 36 包（v1.18.35）+ 装配层 87 组件 + 外部服务 10",
  "nodes": [
    {
      "id": "oc-ui",
      "name": "@opencode-ai/ui",
      "short": "ui",
      "group": "G9-UI组件",
      "group_name": "G9-UI组件",
      "kind": "package",
      "layer": 3,
      "layer_type": "package",
      "implementation": "SolidJS UI 组件库。src/components/ 含 50+ 基础组件（button/avatar/dialog/context-menu/diff-changes/icon 等，每个 .tsx 配套 .css 与 .stories.tsx），基于 @kobalte/core 无障碍原语；exports 将 ./components/*.tsx 直接映射为组件子路径（package.json:37）。同时提供 hooks（use-filtered-list）、context（dialog/file/i18n/marked/worker-pool）、theme 主题系统、i18n 词典、v2 新一代组件目录及 storybook 脚手架（src/storybook/scaffold.tsx）。",
      "provides": [
        "50+ 基础 UI 组件（按钮/对话框/下拉/悬浮卡/图标等）",
        "Markdown 渲染管线（marked.tsx + worker-pool + shiki 流式高亮）",
        "Theme 主题解析与上下文（theme/index.ts、theme/context.tsx）",
        "i18n 多语言词典与 plural 规则（i18n/en.ts、context/i18n.tsx）",
        "File/Dialog/WorkerPool 等全局 context",
        "图标集：provider/file/app 三类 sprite（provider-icons/types.ts 等）"
      ],
      "key_modules": [
        "components/index.ts(x): 组件汇总导出（经 exports 映射到各 .tsx）",
        "components/diff-changes.tsx: 差异变更展示组件",
        "context/marked.tsx: markdown 解析 Provider（marked + shiki 流式）",
        "context/worker-pool.tsx: Web Worker 池",
        "hooks/use-filtered-list.tsx: 模糊搜索列表 hook",
        "theme/resolve.ts: 主题变体解析（被 desktop 复用）",
        "storybook/scaffold.tsx: storybook 预览脚手架"
      ],
      "why_design": "将跨 app/session-ui/enterprise 复用的无头基础组件与渲染原语独立成库，保证视觉一致性与按需导入（sideEffects 仅 css）。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-function",
      "name": "@opencode-ai/function",
      "short": "function",
      "group": "G13-边缘服务",
      "group_name": "G13-边缘服务",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "Cloudflare Workers 上的会话分享同步服务。src/api.ts:15-114 定义 SyncServer Durable Object：WebSocket 订阅连接（fetch 握手 101 + ctx.acceptWebSocket，api.ts:20-37）、publish 将 session/info|message|part 变更写入 R2 Bucket 并广播给订阅者（api.ts:45-66）、share/assertSecret/clear 管理分享密钥与数据清理；Hono 路由提供 /share_create、/share_delete、/share_sync 等端点（api.ts:116-150）。",
      "provides": [
        "Durable Object 实时同步（WebSocket 广播 session 变更）",
        "R2 持久化分享数据（publish 写入 Bucket，api.ts:55）",
        "分享密钥管理（share/assertSecret，api.ts:68-92）",
        "Hono HTTP API（share_create/share_delete/share_sync）",
        "GitHub App 认证（@octokit/auth-app 依赖）"
      ],
      "key_modules": [
        "api.ts: 全部逻辑（SyncServer DO + Hono 路由）"
      ],
      "why_design": "作为云端分享的后端同步服务，利用 Cloudflare Durable Object 的 WebSocket 能力实现跨客户端实时会话同步，与 function 名（FaaS 云端函数）对应。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-client",
      "name": "@opencode-ai/client",
      "short": "client",
      "group": "G3-客户端",
      "group_name": "G3-客户端",
      "kind": "package",
      "layer": 3,
      "layer_type": "package",
      "implementation": "面向 Web/桌面的客户端库。src/contract.ts:1-17 复用 protocol 的 makeDefaultApi 定义 ClientApi 与 Location/SessionLocation 中间件，并声明 groupNames/endpointNames 映射（src/contract.ts:19-51）；src/index.ts:1-2 从 generated/ 导出类型化客户端；src/generated/ 与 src/generated-effect/ 由 script/build.ts 依据 contract 生成（普通 + Effect 两版），src/effect.ts:3-25 转出 schema 数据类型并保证不 import core/server（文件头注释 src/effect.ts:1-2）。",
      "provides": [
        "客户端 Api 契约（基于 protocol 默认 Api，packages/client/src/contract.ts:14-17）",
        "生成的普通客户端（packages/client/src/generated/client.ts）",
        "生成的 Effect 客户端（packages/client/src/generated-effect/client.ts）",
        "类型 re-export 与错误类型（packages/client/src/effect.ts:4-25、generated/client-error.ts）",
        "group/endpoint 名称映射（packages/client/src/contract.ts:19-51）"
      ],
      "key_modules": [
        "contract.ts: 客户端契约与名称映射",
        "index.ts: 统一出口",
        "effect.ts: Effect 风格客户端与类型转出",
        "generated/client.ts: 生成的 HTTP 客户端",
        "generated-effect/client.ts: 生成的 Effect 客户端",
        "generated/types.ts: 生成类型"
      ],
      "why_design": "面向 app/web 前端生成类型安全的 HTTP 客户端，并通过协议层复用服务端同款端点契约；强调不得反向依赖 core/server（src/effect.ts:1-2），保持客户端纯净。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-httpapi-codegen",
      "name": "@opencode-ai/httpapi-codegen",
      "short": "httpapi-codegen",
      "group": "G14-工具",
      "group_name": "G14-工具",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "构建期源代码生成工具。compile(Api) 反射一个权威 HttpApi 共享契约；emitPromise/emitEffect/emitEffectImported 独立产出客户；write(output,dir) 经 prettier 格式化后落盘。Effect 客户经 effect/unstable/httpapi 解码域值；Promise 客户零 Effect 直接 fetch。",
      "provides": "从 HttpApi+Effect Schema 契约生成领域化客户端 TS 源码：类型化输入、解包 {data:A}、void/stream 映射、统一 ClientError、operations 元数据。",
      "key_modules": [],
      "why_design": "把 HTTP 客户端生成从 OpenCode Core 解耦成私有独立包，测试即规范；契约作为唯一共享源，Promise 与 Effect 双投影解耦；manifest 防重复生成破坏。",
      "why_modified": "",
      "how_use": "定义 HttpApi 契约→compile 得 Contract→选 emitPromise 或 emitEffect→write 到目录。产物头部注明 Generated by @opencode-ai/httpapi-codegen. Do not edit.",
      "how_scenario": "@opencode-ai/client 在服务器契约一改时重新生成 src/generated；app/session-ui/sdk-next 消费该 client 做远端与内嵌调用。",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-app",
      "name": "@opencode-ai/app",
      "short": "app",
      "group": "G10-应用",
      "group_name": "G10-应用",
      "kind": "package",
      "layer": 1,
      "layer_type": "package",
      "implementation": "OpenCode 桌面/Web 前端的 SolidJS 主应用。src/app.tsx 组装全部 Provider（Server/SDK/ServerSync/Settings/Tabs/Command 等约 20 个 context，app.tsx:41-66）并注册 Session/Home/NewSession/Legacy 等路由；src/entry.tsx:5-11 通过 render 挂载 AppInterface 与 PlatformProvider；src/index.ts:1-30 导出 AppBaseProviders、AppInterface 及全部 context hooks（useServer/useSettings/useTabs 等）。桌面专属能力（desktop-menu.ts、updater.ts、wsl/ 目录）以子路径导出供 desktop 包复用。",
      "provides": [
        "AppInterface 与 AppBaseProviders 根组件（SolidJS 应用壳）",
        "Server/SDK/ServerSync/Tabs/Settings/Command 等全套全局 context",
        "Session 会话页、Home 主页、NewSession 页、布局（新旧两套）页面",
        "WSL 服务器探测/管理类型与桌面菜单、更新器（updater.ts）",
        "i18n 中英双语词典与 locale 规范化（i18n/、context/language.tsx）",
        "draft-store 草稿持久化与 file-picker 常量（utils/draft-store.ts:30）"
      ],
      "key_modules": [
        "app.tsx: 根组件，装配 20+ Provider 与全部路由",
        "entry.tsx: 浏览器挂载入口（render + PlatformProvider）",
        "context/server.ts: ServerConnection 连接管理与 server-sdk/server-sync",
        "pages/session/index.ts: 会话页与 SessionRouteErrorBoundary",
        "pages/home/index.tsx: 新主页（NewHome）",
        "wsl/types.ts + wsl/context.tsx: WSL 发行版探测与服务器上下文",
        "updater.ts: 应用更新状态机（UpdaterState）",
        "index.ts: 公共导出面（contexts/hooks/常量/类型）"
      ],
      "why_design": "作为 UI 应用壳层，将 session-ui/ui 的无状态组件与 server/core 的业务逻辑粘合为完整应用，同时为 desktop 提供可复用的桌面子模块（菜单/更新/WSL）出口。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① titlebar-tab-nav.tsx 会话 tab 加右键上下文菜单(MenuV2)：重命名/关闭 tab，与 TabPreviewPopover 联动。② dialog-connect-provider.tsx desktop 平台在 Console device auth(v1) 时给 opencode provider URL 追加 client_id=opencode-desktop。③ message-timeline.tsx saveTitleEditor 空编辑守卫；onBlur 改为保存标题；onKeyDown 跳过 IME 输入。④ open-in-app-v2.tsx 图标 20px。⑤ 新增 e2e/regression/session-rename.spec.ts。"
    },
    {
      "id": "oc-protocol",
      "name": "@opencode-ai/protocol",
      "short": "protocol",
      "group": "G2-通信协议",
      "group_name": "G2-通信协议",
      "kind": "package",
      "layer": 4,
      "layer_type": "package",
      "implementation": "通信协议层。src/api.ts:26-86 用 effect/unstable/httpapi 定义 OpenCode HttpApi 结构：注册 Health/Location/Agent/Session/Message/Model/Provider/Integration/Credential/Permission/FS/Command/Skill/Event/Pty/Question/Reference/ProjectCopy 共 18 个 Group（src/api.ts:38-55），并挂 Authorization/SchemaError 中间件（src/api.ts:63-64）。src/errors.ts:3-40 定义带 httpApiStatus 的 TaggedError（400/401/409/503 等）。src/groups/* 按资源定义端点与契约，middleware/authorization.ts:4-6 定义 Authorization 服务。",
      "provides": [
        "OpenCode HttpApi 协议定义（packages/protocol/src/api.ts:37-55）",
        "18 个资源端点组（packages/protocol/src/groups/*）",
        "统一错误契约（httpApiStatus 标注，packages/protocol/src/errors.ts:3-40）",
        "Authorization/SchemaError 中间件契约（packages/protocol/src/middleware/）",
        "OpenAPI 注解（packages/protocol/src/api.ts:56-62）"
      ],
      "key_modules": [
        "api.ts: HttpApi 结构与 makeDefaultApi",
        "errors.ts: 错误类型体系",
        "groups/session.ts: 会话端点组",
        "groups/event.ts: 事件端点组",
        "groups/fs.ts: 文件系统端点组",
        "middleware/authorization.ts: 鉴权契约",
        "middleware/schema-error.ts: schema 错误映射"
      ],
      "why_design": "协议与实现分离：protocol 只声明端点/中间件/错误的契约（server 注入具体服务身份，见 src/api.ts:25 注释），使 server、client、cli 对同一协议的不同实现方共享同一类型面。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-storybook",
      "name": "@opencode-ai/storybook",
      "short": "storybook",
      "group": "G11-文档站点",
      "group_name": "G11-文档站点",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "UI 组件开发文档站。.storybook/main.ts:13-29 用 storybook-solidjs-vite 定义框架并聚合 ui/session-ui/app 三包的 stories（stories glob 指向 ../../ui、../../session-ui、../../app/src）；同时用 mocks 目录对 app 的 context（local/file/prompt/layout/sdk/sync 等 15+ 个）做 SolidJS router 替换与 context mock（main.ts:36-50），使 app 组件能在 Storybook 中独立渲染；preview.tsx 提供全局预览配置。",
      "provides": [
        "聚合 ui/session-ui/app 三包组件的 Storybook 开发环境",
        "app context 全套 mock（main.ts:37-50 别名替换）",
        "Playground CSS 与主题工具插件（playground-css-plugin.ts、theme-tool.ts）"
      ],
      "key_modules": [
        ".storybook/main.ts: Storybook 配置与 context mock 别名",
        ".storybook/preview.tsx: 全局预览装饰器",
        ".storybook/mocks/: app context 模拟实现",
        ".storybook/playground-css-plugin.ts: 自定义 vite 插件",
        ".storybook/theme-tool.ts: 主题调试工具"
      ],
      "why_design": "为组件库提供隔离的开发/审查环境，通过 mock 掉 app 的副作用 context 使跨包组件可以独立预览与回归测试。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-session-ui",
      "name": "@opencode-ai/session-ui",
      "short": "session-ui",
      "group": "G9-UI组件",
      "group_name": "G9-UI组件",
      "kind": "package",
      "layer": 2,
      "layer_type": "package",
      "implementation": "会话级 UI 组件集，介于基础组件库与完整应用之间。src/components/ 提供 SessionTurn、SessionReview、MessagePart、message-file、session-diff、line-comment 等会话渲染组件，并含 markdown 流式渲染整套管线（markdown-stream.ts + markdown-worker.ts + markdown-cache.tsx，用 Worker 实现增量渲染）；src/pierre/ 提供 file-find/file-selection/diff-selection/media 等代码交互原语；src/context/data.tsx 提供会话数据 Provider（被 enterprise share 页复用）。",
      "provides": [
        "SessionTurn/SessionReview 会话轮次与评审组件",
        "MessagePart/message-file/session-diff 消息部件与差异展示",
        "Markdown 流式渲染管线（worker + stream + cache，markdown-stream.ts:12）",
        "文件查找/选择/差异选择交互原语（pierre/ 目录）",
        "会话数据 context（context/data.tsx）",
        "PromptInput v2 输入框（v2/components/prompt-input/）"
      ],
      "key_modules": [
        "components/session-turn.tsx: 单个会话轮次渲染",
        "components/session-review.tsx: 会话评审视图",
        "components/markdown-stream.ts: 流式 markdown 增量处理",
        "components/markdown-worker.ts: markdown 渲染 Web Worker",
        "components/message-part.tsx: 消息部件分发渲染",
        "components/session-diff.ts: 会话差异计算",
        "pierre/index.ts: 代码交互原语出口",
        "context/data.tsx: 会话数据 Provider"
      ],
      "why_design": "把会话级渲染（消息/轮次/评审/markdown 流）从 app 中剥离，使 app 与 enterprise 共享同一套会话表达，避免重复实现。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-console-function",
      "name": "@opencode-ai/console-function",
      "short": "console-function",
      "group": "G16-Console",
      "group_name": "G16-Console",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "Cloudflare Workers 端边函数集：auth.ts 是 OpenAuth issuer（GitHub/Google 登录 + Cloudflare KV 存储，签发 account/user subject），log-processor.ts 是 tail 处理器，把 Zen/Go 网关的请求日志转发到 Honeycomb 与数据湖，stat.ts 提供 TPS 限流统计查询端点。src/auth.ts:44 用 @openauthjs/openauth 构建 OAuth issuer，src/log-processor.ts:5 解析 _metric: 前缀日志聚合指标。",
      "provides": [
        "OAuth 登录 issuer：GitHub/Google provider + Cloudflare KV 会话存储（src/auth.ts:44）",
        "Subjects 定义：account/user 两级认证主体（src/auth.ts:25）",
        "网关日志采集：tail 事件 → Honeycomb batch + lake ingest（src/log-processor.ts:5）",
        "TPS 限流统计查询：按模型 id 聚合 30 分钟窗口 qualify/unqualify（src/stat.ts:7）"
      ],
      "key_modules": [
        "auth.ts:42 - OpenAuth issuer 默认导出，配置 GitHub/Google 与 KV storage",
        "log-processor.ts:5 - tail() 处理 Zen/Go 请求日志并转发 Honeycomb/数据湖",
        "stat.ts:7 - fetch() 处理 POST ids 查询 TPS 限流统计"
      ],
      "why_design": "独立于 app 的 Cloudflare Workers 入口：认证服务与日志/统计边函数需要各自独立的 worker 部署，无法打进 Console 主应用。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-console-app",
      "name": "@opencode-ai/console-app",
      "short": "console-app",
      "group": "G16-Console",
      "group_name": "G16-Console",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "Console 主站前端（SolidStart/SSR + Nitro on Cloudflare），包含营销落地页、认证回调、workspace 管理（billing/keys/members/settings/usage）、Zen 与 Go 两个 LLM API 网关，以及到 docs/stats/bench 的代理路由。src/app.tsx 挂载路由与 i18n，src/routes/zen/v1/chat/completions.ts 走统一 handler 做鉴权/计费/限流后转发到上游 provider，src/lib/stats-proxy.ts 反向代理 stats.opencode.ai。",
      "provides": [
        "营销/下载/企业页与多语言 i18n（20 语言，src/i18n/）",
        "OpenAuth 认证与 session 处理（src/routes/auth/、src/context/auth.ts）",
        "workspace 控制台：billing 充值、API key、成员、用量图表（src/routes/workspace/[id]/）",
        "Zen 网关：OpenAI/Anthropic/Google 兼容 API + key/IP 限流 + 用量计费（src/routes/zen/）",
        "Go 网关（轻量版 zen，src/routes/zen/go/）",
        "Stripe webhook、honeycomb webhook、enterprise lead 提交",
        "docs/stats/bench 站点反向代理（src/routes/docs/、src/routes/data/）"
      ],
      "key_modules": [
        "app.tsx:1 - SolidStart 应用根，挂 Router/FileRoutes/i18n/LanguageProvider",
        "routes/zen/util/handler.ts:1 - Zen/Go 网关统一处理器：鉴权、计费扣减、限流、provider 转发",
        "routes/zen/v1/chat/completions.ts:5 - OpenAI 兼容 completions 端点封装 handler",
        "lib/stats-proxy.ts:7 - 反向代理 stats.opencode.ai 并注入 locale 头与缓存头",
        "routes/stripe/webhook.ts:2 - Stripe 支付事件处理（充值/Lite/Black 订阅）",
        "context/auth.ts:1 - 请求级认证与 Actor 注入（session→user/workspace）",
        "routes/docs/[...path].ts:5 - docs.opencode.ai 代理并设置 locale cookie",
        "routes/workspace/[id]/usage/graph-section.tsx - 用量可视化（chart.js）"
      ],
      "why_design": "Console 是 opencode 的 SaaS 前端：既承担官网/营销/文档分发，也承载用户工作区管理与 Zen/Go 付费 LLM 网关，是 console-core 领域逻辑的界面与入口层。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① 新增 lib/inference-proxy.ts：/zen/v1/* 及 google generateContent 按 KeyTable→WorkspaceTable(provider, migratedAt) 转发到 ConsoleMigration.inferenceUrl 的由 provider 派生 /custom/conn_* 路径。② zen/v1/models.ts GET 走 proxyModels() 代理。③ zen/util/handler.ts full modelList 时先试 proxyInference(含 503 降级)。④ 新增 routes/zen/util/trainingConsent.ts。⑤ 新增 api/support/actions/reset-quota.ts。⑥ lib/stats-proxy.ts 加 Cache API。⑦ lib/request-country.ts 新增 muse-spark-1.3-contributor(-free) 限区。⑧ context/auth.ts getActor 内联 WorkspaceTable.migrated_at，已迁移工作区 redirect 到新 Console。⑨ go/index.tsx 重写：新增 Muse Spark 1.3 Contributor/Hy4 preview/Omen Alpha。⑩ billing reload-section 包 withActor。"
    },
    {
      "id": "oc-console-support",
      "name": "@opencode-ai/console-support",
      "short": "console-support",
      "group": "G16-Console",
      "group_name": "G16-Console",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "面向支持/客服的内部工具站（SolidStart SSR）。核心功能是用户数据 lookup：src/lib/lookup.ts 按 wrk_/key_/sk-/email 标识查询 workspace、billing、usage、订阅与禁用模型等全量数据，src/routes/lookup.tsx 展示查询结果，src/routes/index.tsx 提供查询表单。全部逻辑直接复用 console-core 的 schema 与 domain。",
      "provides": [
        "按 email/workspace id/API key 查询用户全量数据（src/lib/lookup.ts:41）",
        "workspace 详情：users/billing/go/payments/usage/disabledModels 分节（src/lib/lookup.ts:30）",
        "查询表单与结果展示页面（src/routes/index.tsx、src/routes/lookup.tsx）",
        "复用 console-core 数据库 schema 与 Black/Lite/Subscription 领域逻辑"
      ],
      "key_modules": [
        "lib/lookup.ts:41 - 核心 lookup 逻辑：标识解析 + 多表聚合查询",
        "routes/index.tsx:3 - 查询入口表单页",
        "routes/lookup.tsx:1 - 查询结果展示页"
      ],
      "why_design": "为内部客服提供只读审计工具，复用 console-core 数据层，避免暴露在生产 Console 前端中。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-console-mail",
      "name": "@opencode-ai/console-mail",
      "short": "console-mail",
      "group": "G16-Console",
      "group_name": "G16-Console",
      "kind": "package",
      "layer": 2,
      "layer_type": "package",
      "implementation": "邮件模板包：无 src/，全部为 emails/ 下的 jsx-email 模板与共享组件/样式。emails/templates/InviteEmail.tsx 是唯一业务模板（workspace 邀请邮件），被 console-core 的 User 邀请逻辑动态 import 渲染（console/core/src/user.ts:142）。包 exports 映射到 ./emails/templates/*，纯前端渲染无服务逻辑。",
      "provides": [
        "InviteEmail 邀请邮件模板（React/jsx-email，emails/templates/InviteEmail.tsx:26）",
        "共享邮件组件与内联样式（emails/components.tsx、emails/styles.ts）",
        "静态邮件资源：字体 woff2/logo/箭头图（emails/templates/static/）",
        "本地预览命令（email preview emails/templates）"
      ],
      "key_modules": [
        "emails/templates/InviteEmail.tsx:26 - 邀请邮件主模板（inviter/workspaceName/URL 参数化）",
        "emails/components.tsx:1 - 复用邮件 UI 组件（Text/Fonts/Title/A/Span）",
        "emails/styles.ts:1 - 邮件内联样式常量"
      ],
      "why_design": "将邮件模板与业务代码解耦，供 console-core 按需动态 import（避免 React 依赖进入 core 主包），同时独立可预览开发。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-console-core",
      "name": "@opencode-ai/console-core",
      "short": "console-core",
      "group": "G16-Console",
      "group_name": "G16-Console",
      "kind": "package",
      "layer": 1,
      "layer_type": "package",
      "implementation": "Console 后端领域层：基于 drizzle-orm + PlanetScale 的数据库访问、Actor 权限上下文、以及 Account/User/Workspace/Key/Billing/Subscription/Model/Provider 等 CRUD 与计费逻辑。src/drizzle/index.ts 封装事务与上下文，src/account.ts 处理账号创建/删除（含级联清理 key、coupon、auth），src/workspace.ts 创建 workspace 并默认生成管理员与 API key，src/billing.ts 对接 Stripe 做 credits 充值。",
      "provides": [
        "Database 封装：PlanetScale drizzle 客户端 + 事务/上下文（src/drizzle/index.ts:36）",
        "Actor 权限上下文：请求用户/角色/workspace 断言（src/actor.ts）",
        "账号生命周期：create/remove/fromID，删除级联清理（src/account.ts:13,27）",
        "workspace 创建与成员管理（src/workspace.ts:17）",
        "API Key 管理与角色隔离（src/key.ts:11）",
        "Stripe 计费：credits 充值/订阅/用量计费（src/billing.ts:22,29）",
        "模型/Provider 目录与 ZenData 模型成本定义（src/model.ts）",
        "订阅限额：free/lite/black 阶梯（src/subscription.ts:7）",
        "全量 drizzle schema SQL（src/schema/*.sql.ts，account/auth/billing/key/model/provider/referral/user/workspace/ip/benchmark）",
        "邀请邮件渲染（动态 import console-mail，src/user.ts:142）"
      ],
      "key_modules": [
        "drizzle/index.ts:11 - Database 命名空间：客户端、事务、Context 集成",
        "account.ts:13 - 账号创建/删除（含 key/coupon/auth 级联）",
        "workspace.ts:13 - workspace 创建，默认 admin 用户 + 默认 API key",
        "billing.ts:22 - Stripe credits 计费与余额查询",
        "key.ts:11 - API key 列表/创建，按角色过滤",
        "model.ts:10 - ZenData：模型成本、provider、限流配置 schema",
        "user.ts:16 - 用户 CRUD 与邮件邀请",
        "subscription.ts:7 - free/lite/black 订阅限额定义"
      ],
      "why_design": "将 Console 的业务领域逻辑从 app（前端/网关）与 function（worker）中独立出来，供 app、support、function 三方复用，避免数据库 schema 与计费逻辑重复实现。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① 新增 src/quota.ts：Quota.reset 事务清零 lite/subscription 用量计数。② schema/workspace.sql.ts WorkspaceTable 加 migrated_at 列。③ 新增迁移 20260903161929_parched_patriot。"
    },
    {
      "id": "oc-console-resource",
      "name": "@opencode-ai/console-resource",
      "short": "console-resource",
      "group": "G16-Console",
      "group_name": "G16-Console",
      "kind": "package",
      "layer": 2,
      "layer_type": "package",
      "implementation": "SST 资源访问抽象层，无 src/ 目录（文件在包根）。通过 Proxy 按运行环境暴露 Resource：resource.cloudflare.ts 在 Worker 内从 env.SST_RESOURCE_* 读取链接资源，resource.node.ts 在 Node 下回退到 sst 包并对 KV/Bucket 提供客户端实现。src/… 实际为 resource.cloudflare.ts:4 与 resource.node.ts:9 两个入口，按 exports production/import 条件切换。",
      "provides": [
        "统一 Resource 代理：读取 SST 链接的 secrets/KV/数据库配置（resource.cloudflare.ts:4）",
        "Node 环境回退：KV get/put/delete/list、Bucket no-op、Cloudflare API 客户端（resource.node.ts:9）",
        "条件导出：Cloudflare 与 Node 运行时的资源读取差异屏蔽（package.json exports）"
      ],
      "key_modules": [
        "resource.cloudflare.ts:4 - Worker 运行时 env 读取 Proxy（SST_RESOURCE_*）",
        "resource.node.ts:9 - Node/本地运行时 sst Resource 回退 + KV/Bucket 模拟"
      ],
      "why_design": "让 app/core/function 在 Cloudflare Worker 与本地 Node 两种环境共享同一套资源访问代码，隐藏 SST 环境差异。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-slack",
      "name": "@opencode-ai/slack",
      "short": "slack",
      "group": "G18-集成",
      "group_name": "G18-集成",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "Slack 机器人集成（@slack/bolt Socket Mode）。src/index.ts 创建 opencode 服务端实例（createOpencode）与 Slack App，按 channel+thread 键复用 session：首次消息创建 opencode session 并分享链接，后续消息走 session.prompt；同时订阅 message.part.updated 事件把 tool 完成状态回贴到 thread（src/index.ts:24-51）。",
      "provides": [
        "Slack Socket Mode 机器人（src/index.ts:4）",
        "每 thread 独立 opencode session 的创建/复用（src/index.ts:22,70-101）",
        "会话分享链接回帖（src/index.ts:96）",
        "tool 执行状态回帖（message.part.updated 订阅，src/index.ts:24-51）",
        "/test 命令与错误兜底回复（src/index.ts:138）"
      ],
      "key_modules": [
        "index.ts:1 - Slack App + opencode 服务端初始化",
        "index.ts:24 - 事件订阅循环：tool 状态 → thread 回帖",
        "index.ts:58 - 消息处理：session 创建/复用 + prompt 调用",
        "index.ts:96 - 会话分享 URL 发布"
      ],
      "why_design": "让用户直接在 Slack 线程内驱动 opencode agent，把聊天线程映射为独立 session；作为独立部署的集成入口，复用 @opencode-ai/sdk 而非内嵌实现。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-desktop",
      "name": "@opencode-ai/desktop",
      "short": "desktop",
      "group": "G10-应用",
      "group_name": "G10-应用",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "Electron 桌面壳。src/main/index.ts:15-51 聚合应用生命周期：spawnLocalServer 拉起本地 sidecar 服务、registerIpcHandlers 注册 IPC、createMenu 构建原生菜单、setupAutoUpdater 自动更新、WSL sidecar 管理（wsl/servers.ts）、migrate 数据迁移与 store 清理；src/preload 暴露安全的桥接 API；src/renderer 复用 @opencode-ai/app 渲染 Web UI（renderer/cli.ts:7 通过 window.api.installCli 安装 CLI）。",
      "provides": [
        "Electron 主进程：窗口/菜单/托盘/深链（main/windows.ts、main/menu.ts）",
        "本地 sidecar server 生命周期管理（main/server.ts spawnLocalServer）",
        "IPC 桥与 preload 安全 API（preload/index.ts）",
        "自动更新（main/updater.ts + electron-updater）",
        "WSL 发行版内服务器编排（wsl/）",
        "背景 CLI 与原生翻译注入（background-cli.ts、native-translations.ts）"
      ],
      "key_modules": [
        "main/index.ts: 主进程入口（生命周期/窗口/服务编排）",
        "main/server.ts: sidecar 本地服务器拉起与监听",
        "main/ipc.ts: IPC handler 注册",
        "main/updater.ts: 自动更新控制器",
        "preload/index.ts: 渲染进程安全桥",
        "renderer/index.tsx: 渲染进程入口",
        "wsl/servers.ts: WSL 服务器控制器"
      ],
      "why_design": "为 Web UI 提供原生桌面能力（本地服务托管/更新/菜单/WSL），是独立于 @opencode-ai/app 的 Electron 分发层。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-web",
      "name": "@opencode-ai/web",
      "short": "web",
      "group": "G11-文档站点",
      "group_name": "G11-文档站点",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "基于 Astro + Starlight 的文档与分享站点。src/pages/s/[id].astro:2-8 渲染会话分享页（Share.tsx 消费 opencode/session 类型，通过 API URL 拉取分享数据）；src/pages/[...slug].md.ts:19-34 提供 docs 内容 API（按 slug 返回 markdown 文档）；src/content/docs/ 含多语言（en/zh/ar/bs/de/...）文档与代码示例（大量引用 @opencode-ai/plugin 与 @opencode-ai/sdk 的用法）。devDependencies 引用 opencode 包（opencode: workspace:*）。",
      "provides": [
        "会话分享查看页（s/[id].astro + components/Share.tsx）",
        "docs 文档 API 端点（pages/[...slug].md.ts:19）",
        "Starlight 多语言文档站（content.config.ts + i18n/）",
        "分享 WebSocket 连接状态 UI（Share.tsx:15 status 机）"
      ],
      "key_modules": [
        "pages/s/[id].astro: 分享页 SSR 模板",
        "components/Share.tsx: 分享会话渲染组件",
        "components/share/part.tsx: 分享消息部件渲染",
        "pages/[...slug].md.ts: 文档 markdown API",
        "content.config.ts: Astro content 集合配置"
      ],
      "why_design": "独立部署的文档+分享前端，与桌面 app 完全解耦，仅通过 API URL 消费后端数据，作为云端分享生态的展示层。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① docs/go.mdx 新增 Muse Spark 1.3 Contributor/Hy4 preview/Omen Alpha 的定价/限区/请求数/训练约定，新增 'Where can I use it?' 章节、x-opencode-session 头说明。② providers.mdx 移除 Azure 模型发现描述(改纯资源名)，新增 Eden AI provider。"
    },
    {
      "id": "oc-codemode",
      "name": "@opencode-ai/codemode",
      "short": "codemode",
      "group": "G12-沙箱",
      "group_name": "G12-沙箱",
      "kind": "package",
      "layer": 1,
      "layer_type": "package",
      "implementation": "Code Mode 沙箱：基于 schema 描述的受限代码执行（package.json:5 描述）。src/interpreter/runtime.ts:1-3 用 acorn 解析 + typescript transpileModule 在受限解释器中执行 JS 子集，工具调用经 src/tool-runtime.ts 注入 host tools 并受 ExecutionLimits（超时/最大工具调用数/输出字节，src/codemode.ts:10-17）约束。src/openapi/ 提供从 OpenAPI spec 生成工具的运行时（src/openapi/index.ts），src/stdlib/ 提供 JS 子集标准库（string/number/date/collections 等 14 模块）。",
      "provides": [
        "受限 JS 解释器与 AST 执行（packages/codemode/src/interpreter/runtime.ts:1）",
        "工具调用沙箱运行时（packages/codemode/src/tool-runtime.ts）",
        "执行资源限制：timeout/maxToolCalls/maxOutputBytes（packages/codemode/src/codemode.ts:10-17）",
        "OpenAPI 工具生成器（packages/codemode/src/openapi/index.ts、spec.ts）",
        "JS 子集标准库（packages/codemode/src/stdlib/*）",
        "工具 schema 编解码（packages/codemode/src/tool-schema.ts）"
      ],
      "key_modules": [
        "codemode.ts: 顶层 API 与限制类型",
        "interpreter/runtime.ts: 沙箱解释器",
        "tool-runtime.ts: 工具调度运行时",
        "tool.ts: 工具定义模型",
        "tool-schema.ts: 工具 schema 编解码",
        "openapi/index.ts: OpenAPI→工具 转换",
        "stdlib/string.ts: 标准库模块"
      ],
      "why_design": "为 LLM 提供可审计、受限、确定性的代码执行环境（Effect-native），并支持基于 schema 描述的工具集，避免开放 shell 的安全风险（被 opencode 的 tool/code-mode.ts 桥接使用）。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-stats-app",
      "name": "@opencode-ai/stats-app",
      "short": "stats-app",
      "group": "G17-Stats",
      "group_name": "G17-Stats",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "OpenCode Stats 公共数据站点（SolidStart，Cloudflare preset，app.config.ts:1）。首页通过 @opencode-ai/stats-core/domain/home 拉取并渲染使用量排行榜、模型/Provider 对比、geo 分布与市场数据（src/routes/index.tsx:10-41），另有 compare 对比页与 [lab]/[model] 实验页，配合 d3-geo/topojson 世界地图。src/routes/stats-cache.ts 统一设置 CDN 缓存头。",
      "provides": [
        "统计首页：排行榜/用量趋势/Geo 地图/缓存命中率（src/routes/index.tsx）",
        "模型对比页（src/routes/compare/[firstFamily]/[secondFamily].tsx）",
        "模型实验室单模型页（src/routes/[lab]/[model].tsx）",
        "CDN 缓存控制与 Vary locale 处理（src/routes/stats-cache.ts:5）",
        "API：health/newsletter（src/routes/api/）",
        "多语言 i18n（20 语言）与 sitemap"
      ],
      "key_modules": [
        "routes/index.tsx:1 - 首页聚合视图：排行榜/geo/对比卡片",
        "routes/compare/[firstFamily]/[secondFamily].tsx:1 - 双模型族对比页",
        "routes/stats-cache.ts:5 - 缓存头与 Vary 注入",
        "routes/model-catalog.ts:1 - 模型目录加载/匹配",
        "routes/geo-map.ts:1 - d3 世界地图路径与标记",
        "stats-runtime.ts:3 - Effect 运行时桥接（runPromise）",
        "routes/stats-shell.tsx:1 - 页面骨架/主题/Header/Footer"
      ],
      "why_design": "独立的公共数据站（stats.opencode.ai），与 Console 分离部署；展示 opencode 生态模型使用统计，靠 stats-core 提供领域数据。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① model-catalog.ts 新增 isProviderlessLab/isKnownCatalogLab。② model-compare-detail.tsx 等适配 stealth 模型不显示 provider、country 扁平化、market share 图改进。"
    },
    {
      "id": "oc-stats-server",
      "name": "@opencode-ai/stats-server",
      "short": "stats-server",
      "group": "G17-Stats",
      "group_name": "G17-Stats",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "Stats 后端 Node HTTP 服务（Effect HttpRouter + Bun，Dockerfile 部署）。src/server.ts 用 NodeHttpServer 启动 3000 端口服务并注入 Ingest 层，src/router.ts 暴露 GET /health、/ready 与 POST / 数据摄取端点（Bearer 鉴权 + 并发信号量限流），src/ingest.ts 将事件批处理写入 AWS Firehose，src/stat-sync.ts 是每小时 Athena 同步 daemon。",
      "provides": [
        "摄取端点 POST /：事件批收 + Firehose 写入（src/router.ts:25、src/ingest.ts:38）",
        "健康检查 GET /health 与 /ready（含优雅停机判定，src/router.ts:23-24）",
        "Bearer 鉴权（timingSafeEqual，src/router.ts:56）",
        "每小时统计同步 daemon（src/stat-sync.ts:13）",
        "Docker 化部署（Dockerfile:1，turbo prune + bun install）"
      ],
      "key_modules": [
        "server.ts:12 - NodeHttpServer + Effect 组合启动",
        "router.ts:16 - 路由注册：health/ready/ingest",
        "ingest.ts:32 - Ingest Service：事件路由 + Firehose 批量写入",
        "stat-sync.ts:13 - 每小时 Athena 同步 daemon（全量/增量交替）",
        "shutdown.ts:1 - 优雅停机信号处理"
      ],
      "why_design": "作为摄取网关承接 Console function 的 lake 事件流，并独立承载统计同步 daemon；与 app 站点、core 领域解耦。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-stats-core",
      "name": "@opencode-ai/stats-core",
      "short": "stats-core",
      "group": "G17-Stats",
      "group_name": "G17-Stats",
      "kind": "package",
      "layer": 1,
      "layer_type": "package",
      "implementation": "Stats 后端核心（Effect + drizzle + PlanetScale）。src/athena.ts 封装 AWS Athena 查询服务（StartQuery/轮询/取结果），src/database.ts 提供 Effect 风格 DatabaseConfig/DrizzleClient，src/domain/ 下按 model/provider/geo/home/inference 分域定义聚合类型与查询，src/stat-sync.ts 实现 Athena → 数据库的增量/全量同步管线。src/index.ts 聚合导出全部命名空间。",
      "provides": [
        "Athena 查询服务：执行/轮询/分页取数（src/athena.ts:45）",
        "Effect 化数据库层：PlanetScale drizzle + schema + 迁移（src/database.ts:24,40）",
        "统计领域模型：StatBaseAggregate 聚合结构与 grain day/week（src/domain/stat.ts:6）",
        "Model/Provider/Geo 统计仓库与 upsert（src/domain/model.ts 等）",
        "首页聚合查询（getStatsHomeData，src/domain/home.ts:9）",
        "统计同步管线：Athena 查询 → 聚合 → 写入（src/stat-sync.ts:23）",
        "App 配置（stage/publicUrl）与运行时（src/config.ts、src/runtime.ts）"
      ],
      "key_modules": [
        "index.ts:1 - 命名空间聚合导出（Athena/Database/Domain/Runtime）",
        "athena.ts:45 - AWS Athena Effect 服务（重试/超时封装）",
        "database.ts:24 - DatabaseConfig/DrizzleClient Effect Layer",
        "domain/stat.ts:6 - 聚合统计结构与字段定义",
        "domain/home.ts:9 - 首页统计聚合查询类型",
        "stat-sync.ts:23 - Athena→DB 同步（incremental/full pass）",
        "runtime.ts:12 - ManagedRuntime 组装（AppConfig+DB+repos）"
      ],
      "why_design": "按 stats 独立生态划分：core 承载 Effect 领域服务与数据访问，供 app 查询、server 同步、Lambda 入口三方复用，README 明确 Runtime/DB/domain 全部在 core。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① domain/home.ts country 类型改为扁平 CountryEntry[]；新增进程内查询缓存(QUERY_CACHE_TTL_MS=5min, MAX_ENTRIES=256)。② database/schema.ts geoStat 新增复合索引。③ domain/inference.ts STEALTH_MODELS 归为 'unknown' provider。④ model-normalization.ts 新增 STEALTH_MODELS(omen-alpha)、MODEL_NAME_ALIASES 补 deepseek-v4-flash-0731。"
    },
    {
      "id": "oc-llm",
      "name": "@opencode-ai/llm",
      "short": "llm",
      "group": "G5-LLM请求层",
      "group_name": "G5-LLM请求层",
      "kind": "package",
      "layer": 4,
      "layer_type": "package",
      "implementation": "LLM 请求/协议层。src/index.ts:1-28 导出 LLMClient/Auth/Provider/Tool/ToolRuntime；核心 LLM 门面 src/llm.ts:45-48 提供 generate/stream 等请求方法。src/route/client.ts:29-49 定义 Route 结构（provider+protocol+endpoint+auth+transport）与 RequestExecutor；src/route/transport/http.ts、websocket.ts 实现 HTTP/WS 传输。内置 8 个 provider（src/providers/：anthropic、openai、google、azure、amazon-bedrock、openrouter 等，package.json:17-28）与 6 个协议适配（src/protocols/：anthropic-messages、openai-chat、openai-responses、gemini、bedrock-converse，package.json:29-35）。",
      "provides": [
        "统一 LLM 客户端门面 generate/stream（packages/llm/src/llm.ts:45）",
        "Route 路由抽象：endpoint/auth/transport/body schema（packages/llm/src/route/client.ts:36-48）",
        "HTTP 与 WebSocket 传输层（packages/llm/src/route/transport/http.ts、websocket.ts）",
        "多提供商适配：OpenAI/Anthropic/Google/Azure/Bedrock/OpenRouter/xAI 等（packages/llm/src/providers/）",
        "多协议编解码：chat/responses/messages/gemini/bedrock（packages/llm/src/protocols/）",
        "Tool 定义与执行运行时（packages/llm/src/tool.ts、tool-runtime.ts）",
        "上下文溢出检测（packages/llm/src/provider-error.ts:4）"
      ],
      "key_modules": [
        "llm.ts: 高层请求门面",
        "route/client.ts: Route 抽象与客户端服务",
        "route/executor.ts: 请求执行器",
        "route/transport/http.ts + websocket.ts: 双传输",
        "providers/index.ts: 提供商注册表",
        "protocols/shared.ts: 协议共享逻辑",
        "tool.ts: Tool 定义模型",
        "schema/events.ts: LLM 事件 schema"
      ],
      "why_design": "将多提供商/多协议的请求差异隔离在路由与协议适配层之下，向上提供单一 LLM 门面，支持 HTTP/WS 双通道并可被 http-recorder 录制回放（llm devDependency 依赖 recorder）。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-plugin",
      "name": "@opencode-ai/plugin",
      "short": "plugin",
      "group": "G7-插件SDK",
      "group_name": "G7-插件SDK",
      "kind": "package",
      "layer": 4,
      "layer_type": "package",
      "implementation": "插件 SDK。src/index.ts:20-80 定义 Plugin/PluginInput/Config/Hooks 等公共类型，基于 @opencode-ai/sdk 客户端访问服务；src/tool.ts:3-20 定义 ToolContext/ToolResult。提供 v2 双运行时：effect 版（src/v2/effect/：plugin/context/agent/command/skill/catalog/integration/filesystem/event 等 14 模块）与 promise 版（src/v2/promise/），并含 TUI 插件类型（src/tui.ts:1-40 基于 @opentui）。",
      "provides": [
        "插件公共类型与 Hooks 契约（packages/plugin/src/index.ts:20-80）",
        "工具 API：ToolContext/ToolDefinition/ToolResult（packages/plugin/src/tool.ts:3-20）",
        "Effect 原生 v2 插件 API：agent/command/skill/catalog/integration 注册（packages/plugin/src/v2/effect/plugin.ts）",
        "Promise 风格 v2 插件 API（packages/plugin/src/v2/promise/index.ts）",
        "TUI 插件接口（基于 @opentui，packages/plugin/src/tui.ts:19-33）",
        "shell 工具封装（packages/plugin/src/shell.ts）"
      ],
      "key_modules": [
        "index.ts: Plugin/PluginInput/Hooks 公共契约",
        "tool.ts: 工具定义与上下文类型",
        "tui.ts: TUI 插件接口",
        "v2/effect/plugin.ts: Effect 版插件定义",
        "v2/effect/integration.ts: 集成/认证注册",
        "v2/promise/index.ts: Promise 版插件 API",
        "shell.ts: Shell 封装"
      ],
      "why_design": "作为第三方扩展的稳定 SDK 面（发布到 npm，files 只含 dist），把 opencode 对插件的实现细节隔离在 core 内部，对外只暴露类型化、版本化的注册 API。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-tui",
      "name": "@opencode-ai/tui",
      "short": "tui",
      "group": "G8-终端UI",
      "group_name": "G8-终端UI",
      "kind": "package",
      "layer": 1,
      "layer_type": "package",
      "implementation": "终端 UI 应用。src/index.tsx:1 导出 run/TuiInput；src/app.tsx:1-50 用 @opentui/solid 渲染整棵组件树（SDK/Data/Location/Theme/Clipboard 等 Provider 与 Session 路由），构建在 @opencode-ai/sdk/v2 客户端之上（src/context/sdk.tsx:1）。src/plugin/runtime.tsx 加载 @opencode-ai/plugin/tui 插件，feature-plugins/ 内含 diff-viewer/notifications/which-key/sidebar 等内置插件（src/feature-plugins/builtins.ts:1）。",
      "provides": [
        "终端渲染运行时（src/app.tsx:1，基于 @opentui/solid）",
        "会话交互 UI：输入/补全/历史/frecency（src/component/prompt/*）",
        "对话框系统：模型/agent/主题/会话列表等 20+（src/component/dialog-*.tsx）",
        "内置 TUI 插件：diff-viewer/通知/which-key/侧栏（src/feature-plugins/builtins.ts）",
        "多 Context Provider：sdk/data/sync/theme/clipboard（src/context/*）",
        "V2 SDK 数据层接入（src/context/data.tsx、sdk.tsx）"
      ],
      "key_modules": [
        "index.tsx: run() 入口",
        "app.tsx: 应用壳与 Provider 树",
        "context/sdk.tsx: SDK 客户端接入",
        "plugin/runtime.tsx: TUI 插件运行时",
        "component/prompt/index.tsx: 输入区",
        "feature-plugins/system/diff-viewer.tsx: 差异查看器",
        "routes/session/index.tsx: 会话路由视图"
      ],
      "why_design": "将终端交互封装为独立可复用包，经 opencode 的 cli/tui/layer.ts 加载，同时支持 TUI 插件扩展（@opencode-ai/plugin/tui），使 CLI 与桌面端共用交互逻辑。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① 全量界面文案 unicode 省略号替换('...'→'…')。② 使用 @opentui/solid 的 Dynamic 替代 solid-js/web。③ prompt 无 session 时加 <text/> fallback。"
    },
    {
      "id": "oc-schema",
      "name": "@opencode-ai/schema",
      "short": "schema",
      "group": "G1-数据模型",
      "group_name": "G1-数据模型",
      "kind": "package",
      "layer": 5,
      "layer_type": "package",
      "implementation": "纯类型/数据模型包，仅依赖 effect（package.json:14-16）。以 Effect Schema 定义全部领域类型：Session/SessionInput/SessionMessage（src/session*.ts）、Event 与 Durable 事件清单（src/event.ts、event-manifest.ts、durable-event-manifest.ts）、Provider/Model（src/provider.ts、model.ts）、Permission、Prompt、Agent 等 40+ 模型。src/index.ts:1-28 统一 re-export；src/schema.ts:3-10 提供 AbsolutePath/RelativePath/DateTimeUtc 等基础 branded schema。",
      "provides": [
        "领域数据模型：Session/Message/Event/Permission/Provider/Model 等（packages/schema/src/index.ts:1-28）",
        "Effect Schema 编解码与校验基础（packages/schema/src/schema.ts:3-30）",
        "事件定义清单：Event/EventManifest/Durable（packages/schema/src/event.ts、durable-event-manifest.ts）",
        "V1 兼容模型（packages/schema/src/v1/session.ts、question.ts、permission.ts）"
      ],
      "key_modules": [
        "index.ts: 全量模型统一出口",
        "schema.ts: 基础 branded schema（路径/时间/整数）",
        "event.ts: 事件定义与 ID",
        "session.ts + session-input.ts + session-message.ts: 会话三大模型",
        "provider.ts + model.ts: 提供商与模型模型",
        "permission.ts: 权限规则 schema",
        "durable-event-manifest.ts: 持久事件清单",
        "v1/session.ts: 旧版会话兼容模型"
      ],
      "why_design": "作为依赖链最底层的单一事实源，所有包共享同一套 Effect Schema 数据契约，保证类型与运行时校验一致，避免跨包重复定义与 drift。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-cli",
      "name": "@opencode-ai/cli",
      "short": "cli",
      "group": "G10-应用",
      "group_name": "G10-应用",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "OpenCode 2.0 CLI 入口（bin: lildax）。src/index.ts:10-32 用 Effect 构建命令运行时：Runtime.handlers 将 Commands 映射到懒加载 handler（api/debug/migrate/service/serve）；commands/commands.ts:6-8 用 effect CLI 声明命令树；framework/runtime.ts:58-59 执行 Command.run；services/daemon.ts 提供后台守护进程服务。命令处理依赖 @opencode-ai/core 的 AppNodeBuilder 与 @opencode-ai/server 路由（serve.ts:2-10）。",
      "provides": [
        "opencode 命令树（api/debug/migrate/service/serve，commands.ts:9-50）",
        "Effect 驱动的命令运行时与懒加载 handler（framework/runtime.ts:58）",
        "后台 daemon 服务管理（services/daemon.ts）",
        "TUI 入口（tui.ts 导入 @opencode-ai/tui 运行）",
        "版本/渠道识别（bin/lildax.cjs 打包）"
      ],
      "key_modules": [
        "index.ts: CLI 运行时装配入口",
        "commands/commands.ts: 命令树规格定义",
        "commands/handlers/serve.ts: 启动 v2 API 服务器",
        "commands/handlers/service/*: 后台服务管理命令",
        "framework/runtime.ts: Effect 命令运行框架",
        "framework/spec.ts: 命令规格 DSL",
        "services/daemon.ts: 守护进程层"
      ],
      "why_design": "作为 v2 时代的命令行入口，复用 effect CLI 生态以类型安全方式声明命令，并将实际逻辑委托给 core/server/tui 包。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-effect-drizzle-sqlite",
      "name": "@opencode-ai/effect-drizzle-sqlite",
      "short": "effect-drizzle-sqlite",
      "group": "G15-存储适配",
      "group_name": "G15-存储适配",
      "kind": "package",
      "layer": 4,
      "layer_type": "package",
      "implementation": "Drizzle ORM 的 Effect 适配层。src/effect-sqlite/driver.ts:15-60 定义 EffectSQLiteDatabase 与 make()，通过 drizzle 的 SQLiteAsyncDialect + EffectSQLiteSession 把 Drizzle 查询桥接到任意 Effect SqlClient（注释明示可配 @effect/sql-sqlite-node/bun，driver.ts:30-46）；session.ts:35-49 实现 prepareQuery 与 Effect 化事务会话；sqlite-core/effect/ 提供 select/insert/update/delete/raw/count 全套 Effect 化查询构建器；migrator.ts 提供迁移执行。",
      "provides": [
        "EffectSQLiteDatabase 工厂（make()，driver.ts:49）",
        "Drizzle↔Effect 会话桥接（EffectSQLiteSession，session.ts:35）",
        "sqlite-core 全套 Effect 查询构建器（sqlite-core/effect/ 10 个文件）",
        "迁移执行器（effect-sqlite/migrator.ts）",
        "EffectCache/EffectLogger 默认 Layer（driver.ts:28）"
      ],
      "key_modules": [
        "effect-sqlite/driver.ts: 数据库工厂与配置",
        "effect-sqlite/session.ts: Effect 会话/查询准备",
        "effect-sqlite/migrator.ts: 迁移",
        "sqlite-core/effect/db.ts: 数据库基类",
        "sqlite-core/effect/query.ts: 查询构建器基类",
        "index.ts: 公共导出面"
      ],
      "why_design": "让 Drizzle 类型安全的 schema 查询能在 Effect 生态（SqlClient/Stream/Layer）中运行，供核心存储层使用且依赖可注入、可测试。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-opencode",
      "name": "opencode",
      "short": "opencode",
      "group": "G19-主入口",
      "group_name": "G19-主入口",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "主应用/CLI 入口。src/index.ts:45 用 yargs 装配 run/serve/tui/agent/acp 等全部子命令；src/cli/tui/layer.ts:1 经 @opencode-ai/tui 拉起终端 UI；src/server/server.ts:4-13 组装 Node HTTP/WebSocket 服务器与 HttpApi 路由。会话编排由 src/session/processor.ts:26-27 驱动（回退 LLM、工具调度），工具清单在 src/tool/registry.ts:4-16 注册（read/edit/shell/glob/grep/webfetch 等 20+ 内置工具）。",
      "provides": [
        "CLI 入口：yargs 子命令体系（run/serve/tui/agent/acp/github 等 20+ 命令，packages/opencode/src/index.ts:45）",
        "HTTP/SSE/WebSocket 服务器实例（packages/opencode/src/server/server.ts:27-30）",
        "会话处理器：消息输入→LLM 请求→工具执行的编排循环（packages/opencode/src/session/processor.ts:32）",
        "内置工具集：read/write/edit/shell/glob/grep/task/webfetch 等（packages/opencode/src/tool/registry.ts:4）",
        "Session 状态机、compaction/retry/summary/reminders 生命周期（packages/opencode/src/session/*）",
        "插件宿主：加载外部 plugin 与 provider 扩展（packages/opencode/src/plugin/index.ts:8）",
        "Code Mode 工具桥接（packages/opencode/src/tool/code-mode.ts:4）"
      ],
      "key_modules": [
        "index.ts: CLI yargs 入口与子命令注册",
        "cli/cmd/serve.ts: serve 命令装配服务器",
        "server/server.ts: Node HTTP+WebSocket 监听器",
        "session/processor.ts: 会话消息处理主循环",
        "tool/registry.ts: 内置工具注册表",
        "session/llm/native-request.ts: LLM 请求构造与 native 协议",
        "plugin/index.ts: 外部插件加载与 provider 钩子",
        "tool/code-mode.ts: CodeMode 沙箱工具适配"
      ],
      "why_design": "作为可分发 CLI 二进制（bin/opencode）聚合所有上层能力，把核心服务、LLM、TUI、协议编排成终端可执行产品，同时保持与 server 分离以便 web/desktop 前端复用同一套服务。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① provider/transform.ts 新增 anthropicBindsThinking() + anthropicBlockBinding()：对 Claude 5.1+（Fable 5.1/Mythos 5.1）注入 thinking blockBinding(prefixMismatchBehavior:'drop_block')，供 opencode 重渲染前缀时降级不报错；Mythos 5.1 明确跳过；支持 options.blockBinding===false 配置级 opt-out；覆盖 @ai-sdk/anthropic、google-vertex/anthropic、bedrock(reasoningConfig) 三通道。② plugin/azure.ts 大幅简化：移除 discoverAzureModels/订阅列表/resource selection 弹窗/accounts 枚举，AzureAuthPlugin 不再读 azureProfile.json，仅保留资源名 prompt + az CLI token。③ provider/provider.ts chunkTimeout/headerTimeout 默认 300_000、可配 false；SSE reader.cancel 错误吞掉。④ session/processor.ts 记录 provider 丢弃的 thinking block(inputTransformations) 警告。⑤ session/tools.ts 修复工具调用日志 time.start 错误重置。⑥ tool/apply_patch.ts 空 movePath 不再展开。⑦ plugin/openai/codex.ts GPT 版本过滤改按 major/minor 比较。⑧ plugin/github-copilot/copilot.ts 新增 X-Interaction-Id=sessionID 头。⑨ 依赖升级 @ai-sdk/amazon-bedrock 4.0.158→4.0.166、@ai-sdk/anthropic 3.0.82→3.0.111、gitlab-ai-provider 6.12.1→6.13.0。"
    },
    {
      "id": "oc-enterprise",
      "name": "@opencode-ai/enterprise",
      "short": "enterprise",
      "group": "G10-应用",
      "group_name": "G10-应用",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "基于 SolidStart 的企业版/云端分享服务。src/app.tsx:1-14 用 @opencode-ai/ui 的 Provider（Marked/Dialog/I18n）搭建 SSR 应用根并做 locale 检测；src/routes/api/[...path].ts:1-30 用 Hono + hono-openapi 定义 OpenAPI 文档与 /share 创建端点（zod schema，经 core/share.ts 与 sst Resource 持久化）；routes/share/[shareID].tsx 用 @opencode-ai/session-ui 的 SessionTurn/SessionReview/MessageNav 渲染只读分享会话；core/storage.ts 提供基于 R2 的存储。",
      "provides": [
        "Hono OpenAPI /api 端点（/share 创建、文档，routes/api/[...path].ts:20-27）",
        "只读分享会话页面（routes/share/[shareID].tsx，复用 session-ui 组件）",
        "R2 对象存储封装（core/storage.ts）",
        "SSR 应用根与多语言检测（app.tsx:58 detectLocale）",
        "cloudflare 部署目标支持（build:cloudflare script）"
      ],
      "key_modules": [
        "app.tsx: SolidStart 应用根与 i18n bridge",
        "routes/api/[...path].ts: OpenAPI 分享 API",
        "routes/share/[shareID].tsx: 分享会话只读页",
        "core/share.ts: 分享逻辑（sdk/v2 模型）",
        "core/storage.ts: 存储层",
        "entry-server.tsx: SSR 服务端入口"
      ],
      "why_design": "作为云端托管的企业分享服务，复用 ui/session-ui 渲染能力与 core/sdk 数据模型，通过 SolidStart SSR 提供公开只读分享体验。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-server",
      "name": "@opencode-ai/server",
      "short": "server",
      "group": "G4-服务端",
      "group_name": "G4-服务端",
      "kind": "package",
      "layer": 1,
      "layer_type": "package",
      "implementation": "HTTP/SSE 服务器实现层。src/api.ts:5-8 用 @opencode-ai/protocol/api 的 makeDefaultApi 装配 HttpApi，并注入 LocationMiddleware/SessionLocationMiddleware 具体中间件；src/routes.ts:1-13 把 core 的各类服务（SessionV2/SessionExecution/LocationServiceMap/Database/ToolOutputStore 等）装配为 Effect Layer；src/handlers.ts:1-40 合并 19 个 handler（session/message/agent/model/provider/fs/event/pty 等），每个 handler 将 HTTP 请求桥接到 core 领域服务。",
      "provides": [
        "HttpApi 装配与中间件注入（packages/server/src/api.ts:5-8）",
        "19 个资源 handler（packages/server/src/handlers.ts:21-40）",
        "core 服务到 HTTP 层的 Effect Layer 桥接（packages/server/src/routes.ts:1-13）",
        "授权/会话定位中间件（packages/server/src/middleware/authorization.ts、session-location.ts）",
        "CORS 与 auth 基础（packages/server/src/cors.ts、auth.ts）"
      ],
      "key_modules": [
        "api.ts: Api 装配（复用 protocol 默认 Api）",
        "routes.ts: 服务 Layer 组装",
        "handlers.ts: handler 聚合",
        "handlers/session.ts: 会话端点实现",
        "handlers/event.ts: SSE 事件端点",
        "middleware/authorization.ts: 鉴权中间件",
        "middleware/session-location.ts: 会话目录解析"
      ],
      "why_design": "把 Effect HttpApi 与 core 领域服务粘合为可运行的 HTTP 服务（不依赖 CLI），使 opencode 主程序、sdk createOpencodeServer 与其他宿主都能复用同一套服务端装配。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-sdk",
      "name": "@opencode-ai/sdk",
      "short": "sdk",
      "group": "G3-客户端",
      "group_name": "G3-客户端",
      "kind": "package",
      "layer": 5,
      "layer_type": "package",
      "implementation": "官方 JS 客户端 SDK（packages/sdk/js/）。src/index.ts:1-21 导出 client/server 并通过 createOpencode 同启；src/client.ts:33-50 createOpencodeClient 基于 @hey-api 生成的 gen/sdk.gen.ts（v2 版 src/v2/gen/sdk.gen.ts:7077 class OpencodeClient）并注入 directory header 重写；src/server.ts:22-40 createOpencodeServer 用 cross-spawn 拉起 opencode serve 子进程并等待监听。v2 子目录提供新一代 client/server/data 导出（src/v2/index.ts:1-23）。",
      "provides": [
        "类型化 HTTP 客户端 createOpencodeClient（packages/sdk/js/src/client.ts:33）",
        "服务端启动助手 createOpencodeServer（spawn opencode serve，packages/sdk/js/src/server.ts:22）",
        "一体化 createOpencode（packages/sdk/js/src/index.ts:8-21）",
        "V2 代客户端/服务端 API（packages/sdk/js/src/v2/client.ts、server.ts）",
        "从 openapi.json 生成的完整类型与 SDK（packages/sdk/js/src/v2/gen/sdk.gen.ts）"
      ],
      "key_modules": [
        "client.ts: 客户端工厂与 header 注入",
        "server.ts: 子进程服务启动器",
        "process.ts: 子进程停止/信号处理",
        "error-interceptor.ts: 客户端错误包装",
        "v2/client.ts: V2 客户端",
        "v2/gen/sdk.gen.ts: 生成的完整 SDK 类",
        "v2/gen/client/*.gen.ts: 生成的 HTTP 核心"
      ],
      "why_design": "对外发布（npm 包）的官方 SDK，将 opencode 内部 server 的 openapi.json 编译为类型安全的客户端，同时提供进程级 server 托管，供第三方应用与 plugin 使用。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① sdk/js/src/v2/gen/types.gen.ts ProviderConfig.chunkTimeout 类型由 number|undefined 改为 number|false。② sdk/openapi.json 同步 chunkTimeout anyOf(integer|boolean false)。"
    },
    {
      "id": "oc-sdk-next",
      "name": "@opencode-ai/sdk-next",
      "short": "sdk-next",
      "group": "G3-客户端",
      "group_name": "G3-客户端",
      "kind": "package",
      "layer": 0,
      "layer_type": "package",
      "implementation": "Effect 原生的进程内 OpenCode host SDK（过渡包，替代生成式 @opencode-ai/sdk）。src/opencode.ts 的 create() 用 AppNodeBuilder 构建 ApplicationTools/PermissionSaved 上下文，把 server 的 createEmbeddedRoutes 编译成 Web handler 并注入内存 fetch，客户端由此在进程内执行全部路由而无需监听端口/网络 I/O。src/index.ts 聚合 OpenCode 与 Tool 模块并再导出 client 的 Effect 类型。",
      "provides": [
        "进程内 OpenCode host：OpenCode.create()（src/opencode.ts:10）",
        "内存路由执行：Server router → Web handler → fetch（src/opencode.ts:20-38）",
        "本地工具注册 tools.register（走 ApplicationTools 服务，src/opencode.ts:41）",
        "DI Layer：OpenCode.layer/Service（src/opencode.ts:47,49）",
        "Tool 门面：Failure/RegistrationError/make 再导出（src/tool.ts:1）",
        "Effect client 类型再导出（ClientError/Session/Model 等，src/index.ts:4）"
      ],
      "key_modules": [
        "opencode.ts:10 - create()：构建上下文、编译内嵌路由、返回 client+tools",
        "index.ts:1 - 模块聚合与 client/effect 类型再导出",
        "tool.ts:1 - Tool 模块再导出（core/tool）"
      ],
      "why_design": "README 明示：作为 sdk 的过渡替代，让嵌入式应用无需网络即可获得完整 host 能力，保留 sdk 的注册/工具语义并转为 Effect-native。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-core",
      "name": "@opencode-ai/core",
      "short": "core",
      "group": "G6-核心服务",
      "group_name": "G6-核心服务",
      "kind": "package",
      "layer": 3,
      "layer_type": "package",
      "implementation": "核心服务层（无根 index.ts，按子路径导出，package.json:18-23 暴露 effect/layer-node、session/runner 等）。实现数据库（src/database/sqlite.ts，drizzle ORM）、会话执行（src/session/runner/index.ts:20-28 从已记录历史执行一次续跑）、配置解析（src/config/* 覆盖 agent/command/mcp/lsp/formatter）、权限策略（src/permission.ts）、事件流（src/event.ts，基于 PubSub/Queue）、文件系统与搜索（src/filesystem/*，含 ripgrep 封装 src/ripgrep.ts:5）。Effect 运行时层见 src/effect/layer-node.ts 与 app-node-builder.ts。",
      "provides": [
        "SQLite 持久化：drizzle schema/迁移（packages/core/src/database/sqlite.ts、migration.ts）",
        "Session 执行引擎（packages/core/src/session/runner/index.ts:19-28）",
        "配置系统：agent/command/mcp/lsp/formatter/plugin 解析（packages/core/src/config/*）",
        "权限与策略引擎（packages/core/src/permission.ts:5、policy.ts）",
        "事件总线与持久化事件（packages/core/src/event.ts:3）",
        "文件系统/ripgrep 搜索/文件监听（packages/core/src/filesystem/*、ripgrep.ts）",
        "Effect 服务层组装（packages/core/src/effect/layer-node.ts、app-node-builder.ts）",
        "Provider/Model/Catalog/集成认证 领域服务（packages/core/src/provider.ts、catalog.ts、integration.ts）"
      ],
      "key_modules": [
        "session/runner/index.ts: 会话续跑执行器（单次 continuation）",
        "database/sqlite.ts + schema.sql.ts: SQLite 表结构与访问",
        "config/agent.ts: Agent 配置模型",
        "permission.ts: 权限规则评估",
        "event.ts: 事件流与持久化",
        "effect/layer-node.ts: Node 运行时 Effect Layer 组装",
        "tool/registry.ts: 核心工具注册表（供 opencode 复用）",
        "filesystem/fff.*.ts: 文件快速查找（Bun/Node 双实现）"
      ],
      "why_design": "把会话/存储/配置/权限等可复用领域逻辑从 CLI 与 HTTP 层抽离为纯 Effect 服务，供 opencode 主程序、server 包及测试直接注入依赖，实现平台无关的核心（bun/node 双实现见 package.json imports 的 #sqlite/#pty/#fff）。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.25 → v1.18.30",
      "what_changed": "① src/aisdk.ts SSE reader.cancel 错误吞掉。② src/v1/config/provider.ts Info 里 headerTimeout/chunkTimeout schema 改为 Union(PositiveInt, Literal(false))，描述明确 default 300000 与 'Set to false to disable'。③ 依赖同 opencode 包升级(bedrock/anthropic/gitlab-ai-provider)。"
    },
    {
      "id": "oc-http-recorder",
      "name": "@opencode-ai/http-recorder",
      "short": "http-recorder",
      "group": "G14-工具",
      "group_name": "G14-工具",
      "kind": "package",
      "layer": 4,
      "layer_type": "package",
      "implementation": "HTTP 录制/回放工具（package.json:5 描述：Record and replay Effect HTTP client traffic with deterministic cassettes）。src/effect.ts:16-25 提供带录制能力的 HttpClient Layer；src/recorder.ts:11-18 resolveAutoMode 决定 record/replay/passthrough 模式（CI 强制 replay）；src/cassette.ts 实现 cassette 文件存储；src/redactor.ts 负责敏感信息脱敏；src/websocket.ts:10-31 支持 WebSocket 录制回放。",
      "provides": [
        "HTTP 客户端录制层（packages/http-recorder/src/effect.ts:16-25）",
        "cassette 录制文件格式与存储（packages/http-recorder/src/cassette.ts）",
        "自动模式：record/replay/passthrough（packages/http-recorder/src/recorder.ts:11-18）",
        "请求匹配（packages/http-recorder/src/matching.ts）",
        "敏感信息脱敏（packages/http-recorder/src/redactor.ts）",
        "WebSocket 录制回放（packages/http-recorder/src/websocket.ts:10-31）"
      ],
      "key_modules": [
        "effect.ts: HttpClient Layer 封装",
        "recorder.ts: 模式决策与回放状态",
        "cassette.ts: cassette 服务",
        "redactor.ts: 脱敏器",
        "matching.ts: 请求匹配",
        "websocket.ts: WebSocket 录制",
        "schema.ts: 交互 schema"
      ],
      "why_design": "作为测试基础设施：让 LLM 请求与 HTTP 流量可确定性回放（VCR 模式），保证 CI 中测试不依赖网络与真实 token 计费；被 core/llm 的测试与开发流程引用。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-script",
      "name": "@opencode-ai/script",
      "short": "script",
      "group": "G14-工具",
      "group_name": "G14-工具",
      "kind": "package",
      "layer": 1,
      "layer_type": "package",
      "implementation": "构建/发布脚本共享工具包。src/index.ts:5-76 读取仓库根 package.json 校验 bun 版本（semver.satisfies 检查，index.ts:16-18）、按环境变量/分支/registry 计算发布 channel（latest/preview）与 version（含 +1 patch 逻辑，index.ts:34-48）、从 .github/TEAM_MEMBERS 加载团队成员名单（index.ts:50-58），最终导出 Script 对象（channel/version/preview/release/team）供发布流水线使用。",
      "provides": [
        "发布版本计算（channel/version/preview，基于 env/分支/npm registry）",
        "Bun 版本校验（强制 ^packageManager 版本，index.ts:16）",
        "团队成员名单加载（.github/TEAM_MEMBERS 解析，index.ts:50）"
      ],
      "key_modules": [
        "index.ts: 全部逻辑（版本/channel/team 计算）"
      ],
      "why_design": "将发布流程共用的版本决策逻辑从 CI 脚本中抽离为可 import 的库，保证多个发布任务（channel 判断、bump 语义）行为一致。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "oc-effect-sqlite-node",
      "name": "@opencode-ai/effect-sqlite-node",
      "short": "effect-sqlite-node",
      "group": "G15-存储适配",
      "group_name": "G15-存储适配",
      "kind": "package",
      "layer": 4,
      "layer_type": "package",
      "implementation": "基于 Node 内置 node:sqlite 的 Effect SqlClient 实现。src/index.ts:49-161 make() 用 DatabaseSync 建立同步连接（WAL 模式、外键约束，index.ts:59-70）、实现 execute/executeRaw/executeValues/executeUnprepared 全套 SqlClient 接口并挂载 Semaphore(1) 串行化（index.ts:132-134）；classifySqliteError 做错误归类（index.ts:15,80-82）；layer() 将 client 同时注册为 SqliteClient 与泛型 Client.SqlClient（index.ts:163-168），并注入 Reactivity.layer。",
      "provides": [
        "Effect SqlClient 的 SQLite 实现（node:sqlite DatabaseSync）",
        "WAL/外键/只读/扩展加载等连接配置（SqliteClientConfig，index.ts:32-43）",
        "Layer 装配（SqliteClient + Client.SqlClient 双注册，index.ts:163）",
        "SQL 错误分类与 Effect 化（classifySqliteError）",
        "BigInt 安全读取与 stream 占位（setReadBigInts，index.ts:75）"
      ],
      "key_modules": [
        "index.ts: make/layer/连接实现全量逻辑"
      ],
      "why_design": "为 opencode 核心提供零原生编译依赖的 Effect 化 SQLite 驱动（复用 node 内置 sqlite），与 @effect/sql-sqlite-node 定位一致但归属仓库自有实现。",
      "why_modified": "",
      "how_use": "",
      "how_scenario": "",
      "version_delta": "v1.18.14 → v1.18.35",
      "what_changed": ""
    },
    {
      "id": "agent-plan",
      "name": "plan",
      "short": "plan",
      "group": "AG1-主Agent",
      "group_name": "AG1-主Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "",
      "provides": "",
      "layer": 6,
      "enabled": true,
      "source": "opencode.jsonc agent段"
    },
    {
      "id": "agent-build",
      "name": "build",
      "short": "build",
      "group": "AG1-主Agent",
      "group_name": "AG1-主Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "",
      "provides": "",
      "layer": 6,
      "enabled": true,
      "source": "opencode.jsonc agent段"
    },
    {
      "id": "agent-pdf-worker",
      "name": "pdf-worker",
      "short": "pdf-worker",
      "group": "AG2-子Agent",
      "group_name": "AG2-子Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "PDF reader, OCR, and document analysis specialist. Use for any task involving PDF files.",
      "provides": "",
      "layer": 7,
      "enabled": true,
      "source": "opencode.jsonc agent段"
    },
    {
      "id": "agent-architect-worker",
      "name": "architect-worker",
      "short": "architect-worker",
      "group": "AG2-子Agent",
      "group_name": "AG2-子Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "架构判断与设计裁决专家。技术选型/架构风格/模块与服务边界/架构评审/质量属性权衡/技术债治理时委派。产出 ADR 与多维权衡矩阵，并经 gate_architecture.py 门控。",
      "provides": "",
      "layer": 7,
      "enabled": true,
      "source": "opencode.jsonc agent段",
      "why_history": "0911 opencode 架构能力扩展实战——诊断「架构」能力为孤儿/半成品（仅有知识图谱与 skill 草案，缺可见子Agent/行为层/门控），按五要素三层栈补齐为独立的架构判断执行者。",
      "why_current": "需求驱动：需要独立子Agent 承担架构判断与设计裁决，产出 ADR / 多维权衡矩阵 / 边界设计说明并自检；hidden=false 可见，用户可用 @architect-worker 直接召唤；无 model，继承父会话模型；权限收敛（task 全 deny 不可再委派，bash 仅 git status/diff allow）。",
      "how_trigger": "主Agent 判定架构类任务时委派；或用户 /arch 命令、@architect-worker 直接召唤；openspec design 阶段由行为层强制委派。",
      "how_workflow": "①加载 architecture-judgment skill 按其 workflow.md 4 步执行；②判场景（18 场景）→ 定产出类型；③读速查/深链节点 → 按 schema 产 ADR（+矩阵）或边界说明，TEC 节点仅入 standards_refs；④自检；⑤返回结构化 JSON（artifact_path/matrix_path/graph_refs）。架构图不由本 Agent 产出，由主Agent 另委 drawio-worker。",
      "how_collaboration": "依赖 skill-architecture-judgment（方法论与契约）、instr-architecture-behavior（行为层触发）、command-arch（显式入口）、gate_architecture.py（门控）与 opencode.jsonc agent 段定义；架构图另委 drawio-worker（含 drawio-reference 强制加载）；依赖 config-main。",
      "dependencies": [
        "skill-architecture-judgment",
        "instr-architecture-behavior",
        "command-arch",
        "config-main"
      ]
    },
    {
      "id": "agent-general",
      "name": "general",
      "short": "general",
      "group": "AG2-子Agent",
      "group_name": "AG2-子Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "General-purpose agent for researching complex questions and executing multi-step tasks. Inherits parent session model.",
      "provides": "",
      "layer": 7,
      "enabled": true,
      "source": "opencode.jsonc agent段"
    },
    {
      "id": "agent-explore",
      "name": "explore",
      "short": "explore",
      "group": "AG2-子Agent",
      "group_name": "AG2-子Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "Fast agent specialized for exploring codebases. Inherits parent session model.",
      "provides": "",
      "layer": 7,
      "enabled": true,
      "source": "opencode.jsonc agent段"
    },
    {
      "id": "agent-reflection-worker",
      "name": "reflection-worker",
      "short": "reflection-worker",
      "group": "AG2-子Agent",
      "group_name": "AG2-子Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "Reflection specialist for the self-evolution system. Analyzes Plan+Build cycles and generates Memory/Skill entries. Use ONLY for asynchronous post-cycle reflection tasks.",
      "provides": "",
      "layer": 7,
      "enabled": true,
      "source": "opencode.jsonc agent段"
    },
    {
      "id": "agent-search-worker",
      "name": "search-worker",
      "short": "search-worker",
      "group": "AG2-子Agent",
      "group_name": "AG2-子Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "搜索管线执行 Agent。只做搜索管线(发现+获取+交叉验证)，输出结构化证据包。Use for any task requiring external search, query disambiguation, multi-source fact-checking, or evidence-pack construction.",
      "provides": "",
      "layer": 7,
      "enabled": true,
      "source": "opencode.jsonc agent段",
      "why_history": "0905 联网搜索能力架构落地时缺口清单最高优先级——「无独立搜索子Agent」，此前搜索被混入 general 子Agent，方法论散落 MEMORY 跨会话不稳。作为搜索执行层，只做发现+获取+交叉验证三段管线，不写报告。",
      "why_current": "需求驱动：需要实体消歧、多源事实核查、证据包构建等高价值搜索场景，由独立子Agent 承担可将方法论/后端退化链固化，且与主Agent 调度解耦（主Agent 只委派不执行）。",
      "how_trigger": "主Agent 在 plan/build prompt 的 MCP 路由中判定「需联网/多源核查/证据包」类任务时委派（Task 调用），模式=subagent，hidden=true，继承父会话模型。",
      "how_workflow": "①主Agent 委派前注入【时间基线】今日= T 到 prompt 首行；②search-worker 加载 search-methodology skill 走决策树路由（Path1 通用/Path2 垂直域/HYBRID/Path3 登录态），执行 LLM初发现→信用地图导航→外部搜索降级链；③curl 静态→agent-browser 动态回源获取；④多源交叉验证/信源分级；⑤按证据包契约输出结构化 JSON（query/metas/cross_validation/gaps），提交前跑 validate_evpack.py 自动校验；⑥构造失败时降级标注「单一来源/blocked:true」，绝不编造。",
      "how_collaboration": "依赖 search-methodology skill（方法论与证据包契约）、search-behavior instruction（行为层强制）、login-auth-channel skill（Path3 命中需登录态时由主Agent 登录后重委派）、browser-harness/agent-browser（动态获取）、source_credibility_map.md（信源导航）、opencode.env（Tavily key）、代理纪律（境内直连/境外 7890）。",
      "dependencies": [
        "skill-search-methodology",
        "instr-search-behavior",
        "skill-login-auth-channel",
        "skill-browser-harness",
        "ext-tavily-api",
        "ext-chrome",
        "config-main"
      ]
    },
    {
      "id": "agent-requirement-discovery-worker",
      "name": "requirement-discovery-worker",
      "short": "requirement-discovery-worker",
      "group": "AG2-子Agent",
      "group_name": "AG2-子Agent",
      "kind": "agent",
      "layer_type": "assembly",
      "implementation": "需求发现与澄清专家（需求层·内部意图固化）。需求表述模糊、含互斥走法、可行性未知或需按产品设计复杂度走一遍时委派。产出 POV／HMW／product outcome／appetite／最小交接契约，并经 gate_requirement_discovery.py 门控。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "opencode.jsonc agent段"
    },
    {
      "id": "mcp-vscode-mcp-server",
      "name": "vscode-mcp-server",
      "short": "vscode-mcp-server",
      "group": "AG3-MCP",
      "group_name": "AG3-MCP",
      "kind": "mcp",
      "layer_type": "assembly",
      "implementation": "【已禁用】仅 6 个工具(~692 tokens) 极少使用。审计报告见 Mission-file\\\\2026-08\\\\0802-vscode-mcp-server-tools-audit\\\\vscode-mcp-server-tools-audit.md",
      "provides": "",
      "layer": 0,
      "enabled": false,
      "source": "opencode.jsonc mcp段"
    },
    {
      "id": "mcp-amap",
      "name": "amap",
      "short": "amap",
      "group": "AG3-MCP",
      "group_name": "AG3-MCP",
      "kind": "mcp",
      "layer_type": "assembly",
      "implementation": "【已禁用】12 个工具 ~2000 tokens 极低频",
      "provides": "",
      "layer": 1,
      "enabled": false,
      "source": "opencode.jsonc mcp段"
    },
    {
      "id": "mcp-pdf-reader",
      "name": "pdf-reader",
      "short": "pdf-reader",
      "group": "AG3-MCP",
      "group_name": "AG3-MCP",
      "kind": "mcp",
      "layer_type": "assembly",
      "implementation": "【启用】PDF 文本提取。仅 pdf-worker 子Agent 使用（4 工具）",
      "provides": "",
      "layer": 6,
      "enabled": true,
      "source": "opencode.jsonc mcp段"
    },
    {
      "id": "mcp-headroom",
      "name": "headroom",
      "short": "headroom",
      "group": "AG3-MCP",
      "group_name": "AG3-MCP",
      "kind": "mcp",
      "layer_type": "assembly",
      "implementation": "【已禁用 2026-08-12】量化亏损（工具开销 > 收益）。切 Claude Code/Codex 走 proxy 时改回 true。CLI 仍可用",
      "provides": "",
      "layer": 0,
      "enabled": false,
      "source": "opencode.jsonc mcp段"
    },
    {
      "id": "instr-agent-protocol",
      "name": "agent-protocol",
      "short": "agent-protocol",
      "group": "AG4-指令",
      "group_name": "AG4-指令",
      "kind": "instruction",
      "layer_type": "assembly",
      "implementation": "Agent Protocol",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/agent-protocol.md"
    },
    {
      "id": "instr-architecture-behavior",
      "name": "architecture-behavior",
      "short": "architecture-behavior",
      "group": "AG4-指令",
      "group_name": "AG4-指令",
      "kind": "instruction",
      "layer_type": "assembly",
      "implementation": "---",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/architecture-behavior.md",
      "why_history": "0911 架构能力三层栈的行为层——对齐 search-behavior 的受管标记块范式（BEGIN/END），把「遇架构任务必须加载 skill + 委派 worker + 门控」编码为全局强制规则，避免能力成孤儿。",
      "why_current": "需求驱动：为所有 Agent 提供架构任务的触发红线——架构类任务三步（加载 architecture-judgment skill / 委派 architect-worker / 方案设计与选型类过 gate_architecture.py 方可交付）；含知识分层策略（MTH/ESS 重召回，TEC 仅入 standards_refs）与 openspec design 刚性门控。",
      "how_trigger": "作为全局 instruction 加入 opencode.jsonc instructions 数组，所有 Agent 会话前缀加载；命中架构类任务（技术选型/架构风格/模块边界/服务边界/架构评审/质量属性权衡/敏感点权衡点/技术债/演进治理/可观测性与 SLO/部署发布/测试策略/交付效能）时生效。",
      "how_workflow": "①架构任务 → 强制加载 architecture-judgment skill；②委派 architect-worker；③方案设计与选型类过 gate_architecture.py 门控，未过不得声称完成；④openspec design 工件：加载 skill 按 integrations/openspec-design.md 执行，委派 worker 产 ADR + 矩阵，gate PASS 前不得定稿 design.md，FAIL 回传修正最多 2 轮，结束把 change/adr 双落留档；⑤TEC 节点仅入 standards_refs。",
      "how_collaboration": "行为层地基，与 skill-architecture-judgment（执行细节）、agent-architect-worker（委派执行）、command-arch（/arch 入口）共同构成架构三层栈；BEGIN/END 受管标记块保证对 prefix-cache 最小冲击，不污染 auto-mode.md；依赖 config-main（instructions 数组引用）。",
      "dependencies": [
        "skill-architecture-judgment",
        "agent-architect-worker",
        "command-arch",
        "instr-auto-mode",
        "config-main"
      ]
    },
    {
      "id": "instr-auto-mode",
      "name": "auto-mode",
      "short": "auto-mode",
      "group": "AG4-指令",
      "group_name": "AG4-指令",
      "kind": "instruction",
      "layer_type": "assembly",
      "implementation": "Agent Universal Protocol (Cache-Stable Prefix — Do NOT modify mid-session)",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/auto-mode.md"
    },
    {
      "id": "instr-browser-management",
      "name": "browser-management",
      "short": "browser-management",
      "group": "AG4-指令",
      "group_name": "AG4-指令",
      "kind": "instruction",
      "layer_type": "assembly",
      "implementation": "浏览器标签页管理",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/browser-management.md"
    },
    {
      "id": "instr-requirement-discovery-behavior",
      "name": "requirement-discovery-behavior",
      "short": "requirement-discovery-behavior",
      "group": "AG4-指令",
      "group_name": "AG4-指令",
      "kind": "instruction",
      "layer_type": "assembly",
      "implementation": "---",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/requirement-discovery-behavior.md"
    },
    {
      "id": "instr-search-behavior",
      "name": "search-behavior",
      "short": "search-behavior",
      "group": "AG4-指令",
      "group_name": "AG4-指令",
      "kind": "instruction",
      "layer_type": "assembly",
      "implementation": "---",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/search-behavior.md",
      "why_history": "0905 联网搜索能力架构缺口清单——「无行为层强制（先搜后答）」，行为准则缺失导致搜索能力成孤儿。复用 FactReach 受管标记块范式（BEGIN/END）+ goose 懒加载（frontmatter name+description），编码为全局强制 instruction。",
      "why_current": "需求驱动：为所有 Agent 提供外部信息实证的最低行为红线——凡结论依赖外部事实必须先搜索并打开来源验证；搜索页/摘要仅作线索，须回源原始页面；重要结论 ≥2 独立源交叉验证；区分已验证事实/推断/不确定信息。",
      "how_trigger": "作为全局 instruction 加入 opencode.jsonc instructions 数组（与 auto-mode.md、MEMORY.md 并列），所有 Agent 会话前缀加载。在需要外部事实/时效/多源核查的查询时（Trigger：任何涉及外部事实/时效/多源核查的结论）触发生效。",
      "how_workflow": "①query 依赖外部事实 → 先搜索并打开来源验证，不得只凭模型记忆；②搜索结果/摘要仅作发现线索，回源原始页面核对来源链接/发布时间/数据日期；③重要/争议/易变结论用 ≥2 个独立来源交叉验证，做不到标「单一来源/未验证」；④按信源优先级（官方一手 > 权威二手 > 社区讨论）分级；⑤输出区分已验证事实/基于证据推断/尚不确定，链接放在对应结论附近；⑥访问失败直接说明限制，不补写看似合理但未经实证的结论；⑦时效分流：稳定知识用 LLM 初发现，实时信息必须走外部搜索。",
      "how_collaboration": "作为行为层地基，与 search-methodology skill（执行细节）、search-worker（委派执行）、MEMORY.md 记忆、auto-mode.md（缓存前缀协议）共同注入 system prompt。BEGIN/END 受管标记块保证对 prefix-cache 最小冲击，不污染 auto-mode.md（缓存字节稳定）。",
      "dependencies": [
        "agent-search-worker",
        "skill-search-methodology",
        "instr-auto-mode",
        "config-main"
      ]
    },
    {
      "id": "command-reflection",
      "name": "reflection",
      "short": "reflection",
      "group": "AG5-工具插件",
      "group_name": "AG5-工具插件",
      "kind": "command",
      "layer_type": "assembly",
      "implementation": "自定义命令 reflection.md",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "command/reflection.md"
    },
    {
      "id": "command-arch",
      "name": "arch",
      "short": "arch",
      "group": "AG5-工具插件",
      "group_name": "AG5-工具插件",
      "kind": "command",
      "layer_type": "assembly",
      "implementation": "自定义命令 arch.md",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "command/arch.md",
      "why_history": "0911 架构能力扩展的显式入口——用户可用 /arch <任务描述> 强制走架构流程（agent: build），命令文件自包含、不依赖其他文档即可执行。",
      "why_current": "需求驱动：为架构能力提供 build 模式下的显式命令入口，串起判场景→定产出→委派 architect-worker→门控→交付→询问架构图全流程，确保门控未过不声称完成。",
      "how_trigger": "用户输入 /arch <任务描述> 或 /arch 选型|评审|边界|技术债 ... 时在 build 模式执行。",
      "how_workflow": "①读 routing.md §0 场景索引把任务归入 18 场景之一；②定产出类型（adr/boundary 门控级，review/tech-debt 模板级）；③委派 architect-worker（prompt 含 Skills to Load、契约、TEC 约束、Return Format）；④跑 gate_architecture.py（--kind adr|boundary），FAIL 把 checks/errors 原样回传修正最多 2 轮；⑤交付主产物 + 矩阵 + 门控证据 + 命中场景节点；⑥主动询问是否生成 drawio 架构图（是则委派 drawio-worker 且 prompt 必含 drawio-reference）。",
      "how_collaboration": "依赖 skill-architecture-judgment（workflow/checklist/templates/schemas/gate_architecture.py）、agent-architect-worker、instr-architecture-behavior；架构图委派 drawio-worker；属架构三层栈显式入口；依赖 config-main（command 目录自动加载）。",
      "dependencies": [
        "skill-architecture-judgment",
        "agent-architect-worker",
        "instr-architecture-behavior",
        "config-main"
      ]
    },
    {
      "id": "command-rd",
      "name": "rd",
      "short": "rd",
      "group": "AG5-工具插件",
      "group_name": "AG5-工具插件",
      "kind": "command",
      "layer_type": "assembly",
      "implementation": "自定义命令 rd.md",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "command/rd.md"
    },
    {
      "id": "skill-agency-agents",
      "name": "agency-agents",
      "short": "agency-agents",
      "group": "A6a-角色调度",
      "group_name": "A6a-角色调度",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "专业AI角色调度系统。当用户任务较为复杂/专业时激活，根据任务内容自动匹配最合适的AI Agent角色，加载其专业prompt后执行。覆盖工程、设计、营销、安全、测试、GIS、游戏开发等16个部门260+专业Agent。触发关键词：工程师、前端、后端、架构、测试、安全、设计、UX、营销、SEO、数据、数据库、DevOps、CI/CD、移动端、游戏、GIS、地",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "skills/agency-agents"
    },
    {
      "id": "skill-architecture-judgment",
      "name": "architecture-judgment",
      "short": "architecture-judgment",
      "group": "A6n-架构判断",
      "group_name": "A6n-架构判断",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": ">",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "skills/architecture-judgment",
      "why_history": "源自 0910-软件工程架构方法论知识图谱交付（167 节点/360 边/18 组/11 域/三层）；0911 opencode 架构能力扩展实战中由「速查 + 路径路由」升级为 Agent 可执行工作流能力包（workflow/checklist/templates/schemas/gate/openspec 集成）。",
      "why_current": "需求驱动：把一个架构问题变成可解释、可复核、可交付的产物——先判决策类型再路由节点，最后产 ADR（必选）与多维权衡矩阵（选型场景），并过机检门控方可交付；内置离线图谱不联网可用，知识分层引用纪律防止技术层过度推荐。",
      "how_trigger": "①自动路由：任务涉及技术选型/架构风格/模块与服务边界/架构评审/质量属性权衡/技术债治理/演进治理时，主流程自动加载；②显式命令 /arch；③openspec design 工件生成或修改时由行为层 architecture-behavior.md 强制触发。",
      "how_workflow": "①判类型：归入 routing.md 的 18 个任务场景之一；②读速查：用 cheatsheet.md 对应层条目做首轮判断得到支撑节点 id；③深链接：按 11-node-pages/<ID>.html 或 15-md/nodes/<ID>.md 读节点全文确认；④产出+自检：按 schemas/adr.schema.json 产 ADR（选型加矩阵），边界走 boundary schema，均以 gate_architecture.py --kind adr|boundary 自检，不过不得交付；TEC 节点仅写入 standards_refs。",
      "how_collaboration": "由 architect-worker 作为执行载体；受 instr-architecture-behavior 行为层约束；配套 workflow.md / checklist.md / templates / schemas / gate_architecture.py / integrations/openspec-design.md；权威源在 0910 任务仓 20-agent-skill（install-skill.py 派生安装）；与 command-arch、kb-construction（内容交付型/上下文注入型）协作。",
      "dependencies": [
        "agent-architect-worker",
        "instr-architecture-behavior",
        "command-arch",
        "config-main"
      ]
    },
    {
      "id": "skill-browser-harness",
      "name": "browser-harness",
      "short": "browser-harness",
      "group": "A6e-浏览器",
      "group_name": "A6e-浏览器",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "\"Always use browser-use for any web interaction: automation, scraping, testing, or site/app work.\"",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "skills/browser-harness"
    },
    {
      "id": "skill-criterion-design-validation",
      "name": "criterion-design-validation",
      "short": "criterion-design-validation",
      "group": "A6a-配置知识",
      "group_name": "A6a-配置知识",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "判据（门控/机检/评分卡/词表/检查单）的构造—实现—验证—维护四阶段方法论与模板，跨域通用。当需要把模糊判据落成可执行物、写门控脚本或自检、判断\"门控全绿是否可信\"、排查假绿/假跑/恒真判据、或修判据而怕连带作废时使用。触发关键词：判据设计、判据构造、判据验证、判据可信度、假绿、假跑、恒真判据、负向测试、负例自检、空集、指标作用域、阈值推导、门控健全性、夹",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/criterion-design-validation"
    },
    {
      "id": "skill-cytoscape-dag-visualization",
      "name": "cytoscape-dag-visualization",
      "short": "cytoscape-dag-visualization",
      "group": "A6c-DAG方法",
      "group_name": "A6c-DAG方法",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "cytoscape.js 交互 DAG 可视化构建方法论。当任务涉及构建组级+下钻交互 DAG 总览、向页面注入 DATA、环修复、disabled 节点标注、批量 HTML 页插入源码级动态 DAG、染色/排版/幂等防累积、VLM 验证渲染时使用。触发关键词：cytoscape、交互式DAG、DAG总览、下钻、DATA注入、disabled标注、环修复、动",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/cytoscape-dag-visualization"
    },
    {
      "id": "skill-dag-tutorial-authoring",
      "name": "dag-tutorial-authoring",
      "short": "dag-tutorial-authoring",
      "group": "A6c-DAG方法",
      "group_name": "A6c-DAG方法",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "DAG 教程编写方法论（零基础读者导向）。当任务涉及编写面向初学者的概念/技能 DAG 教程、将可读性规律编码为门控、调研驱动编写、双轨验证(VLM+headless)时使用。触发关键词：DAG教程、教程编写、学习路径、knowledge DAG、可读性门控、调研驱动编写、新手教程。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/dag-tutorial-authoring"
    },
    {
      "id": "skill-design-material-library",
      "name": "design-material-library",
      "short": "design-material-library",
      "group": "A6d-前端设计",
      "group_name": "A6d-前端设计",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": ">",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/design-material-library"
    },
    {
      "id": "skill-diagram-lite",
      "name": "diagram-lite",
      "short": "diagram-lite",
      "group": "A6d-前端设计",
      "group_name": "A6d-前端设计",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "轻量出图档位路由与执行规范。当任务需要流程图、DAG 图、依赖图、架构图、时序图、状态图等任何图表产物时使用——先判档再选工具（T0 文本退化 / T1 模板填空 / T2 DSL→SVG 默认 / T3 发布级已落地，见 §九）。触发关键词：出图、画图、绘图、图表、流程图、依赖图、DAG 图、架构图、节点图、SVG、graphviz、dot、mermaid",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/diagram-lite"
    },
    {
      "id": "skill-frontend-design-methodology",
      "name": "frontend-design-methodology",
      "short": "frontend-design-methodology",
      "group": "A6d-前端设计",
      "group_name": "A6d-前端设计",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "当你要设计、实现、改造或评估一个前端界面／页面时使用本方法论：它给出轻档（单人自用默认）与重档（出现外部通道／多平台／对外发布等事件后）两档逐步流程与事件式升降档规则，以及按需取用路由（参照做法／可调用能力／令牌契约／栈定位）。覆盖语义命名与令牌、配色与对比度、组件复用、响应式、无障碍与发布。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/frontend-design-methodology"
    },
    {
      "id": "skill-github-bulk-upload",
      "name": "github-bulk-upload",
      "short": "github-bulk-upload",
      "group": "A6o-交付发布",
      "group_name": "A6o-交付发布",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "GitHub 大仓库全量上传方法论。当任务涉及将大型交付物/源码克隆(100+MB/数千文件)上传至 GitHub 仓库、处理嵌套.git被识别为gitlink、大文件推送schannel中断、gh CLI代理登录、权限deny转手动push时使用。触发关键词：上传GitHub、GitHub上传、大仓库上传、gh repo create、git push、嵌",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/github-bulk-upload",
      "why_history": "源自 DeepSeek Harness 源码解析交付物上传实战（100+MB/8102 文件→公开仓 deepseek-harness-analysis，提交 b22d6bc，远程 tree 9336 条目）；吸收三个开源 skill 方法论（上传预检/敏感扫描/gh CLI 纪律），补足嵌套 .git、断链、postBuffer、代理登录、权限移交等本项目独有场景。",
      "why_current": "需求驱动：需将大型交付物/源码克隆全量上传 GitHub，处理 Windows 下嵌套 .git 被识别为 gitlink、schannel 中断、gh CLI 直连超时走代理设备码登录、push 被权限 deny 转用户手动，以及沙箱禁 push 时改用 Git Data API 整树推送。",
      "how_trigger": "任务涉及将 100+MB/数千文件交付物或源码克隆上传 GitHub、处理嵌套 .git/gitlink、大文件 schannel 中断、gh 代理登录、权限 deny、批量仓库上传时加载。",
      "how_workflow": "10 步：①准备环境（装 gh CLI/git 身份/敏感扫描）；②代理登录（HTTPS_PROXY + 设备码，非交互须移交用户）；③git 初始化；④断链修复；⑤嵌套 .git 处理（git ls-files -s 查模式 160000→删嵌套 .git）；⑥全量提交；⑦gh repo create + topics；⑧postBuffer 调 500MB/HTTP1.1；⑨推送与协作（deny 转用户手动）；⑩验证（tree 条目/README 大小/branch/visibility/topics 实测，不凭返回 200 推断成功）。沙箱禁 push 时改走 Git Data API（blob→tree→commit→ref）。",
      "how_collaboration": "依赖 gh CLI 与 git（定向代理）；凭据按 L1/L2/L3 分层披露；与 single-source-docs-pipeline 分工（Contents API 单文件 vs Git Data API 整树）；依赖 config-main（permission 权限规则）。",
      "dependencies": [
        "config-main"
      ]
    },
    {
      "id": "skill-grill-me",
      "name": "grill-me",
      "short": "grill-me",
      "group": "A6a-角色调度",
      "group_name": "A6a-角色调度",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when the user wants to stress-test a pla",
      "provides": "",
      "layer": 4,
      "enabled": true,
      "source": "skills/grill-me"
    },
    {
      "id": "skill-headroom",
      "name": "headroom",
      "short": "headroom",
      "group": "A6h-上下文压缩",
      "group_name": "A6h-上下文压缩",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "Headroom 上下文压缩层（CLI 版）。支持 headroom proxy / audit-reads / savings / inspect / diff / memory 等命令，用于手动压缩超大工具输出、审计 Read-tool 流量、查看压缩节省统计。注意：headroom MCP 服务器已禁用（2026-08-12 量化亏损），CLI 仍可用",
      "provides": "",
      "layer": 4,
      "enabled": true,
      "source": "skills/headroom"
    },
    {
      "id": "skill-job-listing-filter",
      "name": "job-listing-filter",
      "short": "job-listing-filter",
      "group": "A6i-简历求职",
      "group_name": "A6i-简历求职",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "岗位表批量筛选方法论。当任务涉及从 xlsx/表格按城市/学历/届数/岗位类型/截止日期筛选招聘岗位，或用 openpyxl 解析 WPS 生成表格、设计关键词集与排除词、审计子Agent筛选结果时使用。触发关键词：岗位筛选、校招筛选、招聘表、openpyxl、WPS xlsx、styles.xml、关键词集、排除词、可疑行审计。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/job-listing-filter",
      "why_history": "源自 2026-08-24 校招岗位筛选实战（25MB 双总表→808 命中），由 reflection-worker 于 09-09 从 cycle_0824_job_filter 提炼，09-11 /reflection 采纳并安装至 skills/。",
      "why_current": "需求驱动：批量筛选 = 表结构定位 + WPS xlsx 格式兼容 + 筛选口径参数化 + 关键词/排除词规则 + 子Agent 审计；筛选结果的正确性不由子Agent 自检保证，而由主Agent 的结果级审计保证。",
      "how_trigger": "任务涉及从 xlsx/表格按城市/学历/届数/岗位类型/截止日期筛选招聘岗位、用 openpyxl 解析 WPS 生成表格、设计岗位类型关键词集与排除词、审计子Agent 筛选结果时加载。",
      "how_workflow": "①表结构定位（列全 sheet 名、注意表头偏移、字段画像）；②WPS xlsx 解析兼容（复制副本→剥离/替换 styles.xml→重打包读副本）；③筛选口径参数化（截止日期 Excel 序列号 epoch 1899-12-30、学历、城市、届数）；④关键词集与排除词铁律（宽词必配行业硬件排除词，禁裸词跨领域泛词）；⑤算法特赦规则（含「算法」且不含「嵌入式」保留）；⑥委派子Agent（禁私扩关键词）+ 主Agent 结果级审计（可疑行抽样/审计脚本）。",
      "how_collaboration": "与 recruit-assist（招聘域）协作；依赖 openpyxl；check_suspect.py 类审计脚本随 skill 复用；依赖 config-main。",
      "dependencies": [
        "skill-recruit-assist",
        "config-main"
      ]
    },
    {
      "id": "skill-kb-construction",
      "name": "kb-construction",
      "short": "kb-construction",
      "group": "A6q-知识库构建",
      "group_name": "A6q-知识库构建",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "知识库构建全流程主入口。五类分流（内容交付/检索问答/上下文注入/语料资产/数据分析），覆盖建库+扩展+维护全生命周期。触发关键词：建知识库、知识库构建、知识库扩展、知识库维护、知识库升级、建库、知识图谱、RAG建库、知识库迭代、级联更新、知识库门控。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/kb-construction",
      "why_history": "源自 0807/0813/0820/0822/0825/0902/0907/0908 多轮建库与评测实战，0911 收敛为统一主入口——把散落的建库经验（内容交付/检索问答/上下文注入/语料资产/数据分析）整合为五类分流 + 公共主干 + 分层门控。",
      "why_current": "需求驱动：需要一条不默认 RAG 的统一建库路径——先按消费方分流五类谱系，再走共享主干（契约→采集→加工→交付→门控）；契约先行（P0 落盘 contract.md 后才并行生产），门控分层 L1-L7，回放四硬指标。",
      "how_trigger": "触发词（建知识库/知识库构建/知识库扩展/知识库维护/知识库升级/建库/知识图谱/RAG建库/知识库迭代/级联更新/知识库门控）；适用从零建库、既有库增量扩展、多形态知识交付、语料沉淀、数据驱动决策交付。",
      "how_workflow": "①五类分流判定（Q1 消费方：内容交付/检索问答/上下文注入/数据分析；Q2 是否语料资产；Q3 是否增量级联）；②公共主干 P0 契约→P1 采集→P2 加工→P3 交付→P4 门控；③按类型走各自流水线；④门控 L1-L7 按规模按需启用（生成时自验证/全量审计/结构/视觉/渲染/覆盖度/信源，skipped≠PASS）；⑤级联 12 项 + 回放四硬指标（覆盖度≥90%、门控全过、信源可溯源≥95%、人工抽查无重大语义错误）。",
      "how_collaboration": "与 dag-tutorial-authoring、multi-window-dag-delivery、cytoscape-dag-visualization、search-methodology、drawio-worker、pdf-worker、vision-worker、opencode-config 按任务特征路由协作；依赖 scripts/kb_gate.py 分层门控；依赖 config-main。",
      "dependencies": [
        "skill-dag-tutorial-authoring",
        "skill-multi-window-dag-delivery",
        "skill-search-methodology",
        "skill-cytoscape-dag-visualization",
        "config-main"
      ]
    },
    {
      "id": "skill-lark-suite",
      "name": "lark-suite",
      "short": "lark-suite",
      "group": "A6f-办公集成",
      "group_name": "A6f-办公集成",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "飞书/Lark 全功能操作入口。通过 lark-cli 操作日历、消息、文档、云盘、多维表格、任务、会议、通讯录、审批、知识库等全部业务域。触发：飞书、lark、lark-cli、feishu、文档、日历、会议、表格、多维表格、任务、审批、知识库。",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "skills/lark-suite"
    },
    {
      "id": "skill-login-auth-channel",
      "name": "login-auth-channel",
      "short": "login-auth-channel",
      "group": "A6j-联网搜索",
      "group_name": "A6j-联网搜索",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "登录态渠道交互式登录 SOP。命中需登录平台（知乎/闲鱼/淘宝/京东/小红书/拼多多/微博）且需登录态拿完整数据时，指导主Agent执行人机交互式登录（可见窗口暂停扫码）+多后端容错降级（agent-browser→Cookie-Editor→MCP/CLI），与子Agent按need_login契约协作。触发：登录态、需要登录才能看、扫码、交互式登录、选品",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "skills/login-auth-channel",
      "why_history": "0906 登录态渠道扩张方案 + 实装内化收尾。0905 架构曾将「社交平台 Cookie 依赖」列为过度工程规避（FactReach 23 渠道只取机制），但用户明确决策：登录态在选品/评价场景是刚需（知乎全文评价/淘宝销量/京东评价/小红书笔记/拼多多详情），须构建而非规避。",
      "why_current": "需求驱动：需在登录态下才能拿到完整数据（知乎/闲鱼/淘宝/京东/小红书/拼多多等 8 渠道），平台风控各异（小红书 x-s/x-t、拼多多 anti_content 强签名），需一套「真能登录并抓取」且能抗风控、有序降级的机制。",
      "how_trigger": "命中 search-methodology 决策树 Path3（电商/选品/评价/口碑意图）且主Agent 判定需要登录态后加载。适用于「登录态/需要登录才能看/扫码/交互式登录/选品评价口碑」场景。",
      "how_workflow": "①主Agent 命中 Path3 → 先查免登录 API（如 B站 bili-cli/搜索 API，零成本零账号风险，优先采用）→ 有则用免登录；②需登录态 → 三合一检测登录态（URL 跳转 + 页面元素 + 接口探针）；③已登录 → 委派子Agent 已登录态纯抓取，若报风控(403/频控/IP at risk)按多后端降级链降级（不重试同一后端）；④未登录 → 主Agent 开可见窗口 --headed 暂停请用户扫码 → 用户完成 → --restore 持久化登录态（AES-256-GCM 加密落盘）→ 重委派子Agent 纯抓取；⑤降级链走完仍失败 → 返回 {blocked:true, reason} 明确标注不编造。",
      "how_collaboration": "路由判定由 search-methodology 决策树 Path3 承担；平台数据/合规矩阵以 source_credibility_map.md 六「需登录域」区块为单一权威源；agent-browser 通用命令（--restore/--headed/auth vault）由 browser-harness skill 承担；登录触发由主Agent、抓取由 search-worker 子Agent，按 need_login 契约（{need_login, platform, reason}）协作；依赖 opencode.env（AGENT_BROWSER_ENCRYPTION_KEY）。",
      "dependencies": [
        "skill-search-methodology",
        "skill-browser-harness",
        "agent-search-worker",
        "ext-chrome",
        "config-main"
      ]
    },
    {
      "id": "skill-multi-window-dag-delivery",
      "name": "multi-window-dag-delivery",
      "short": "multi-window-dag-delivery",
      "group": "A6c-DAG方法",
      "group_name": "A6c-DAG方法",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "多层窗口接力 DAG 依赖链分析与交付方法论。当任务涉及将大型源码/插件库拆分为多窗口接力分析 DAG 依赖、每窗口产出 PLAN-layerN.md 接力文件、HTML/MD/SVG 图/交互图多形态交付、三硬依据溯源时使用。触发关键词：多层窗口DAG、DAG接力、插件依赖分析、层次遍历、拓扑分层、PACKAGE-MAP覆盖度、多窗口交付。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/multi-window-dag-delivery"
    },
    {
      "id": "skill-opencode-capability-audit",
      "name": "opencode-capability-audit",
      "short": "opencode-capability-audit",
      "group": "A6a-配置知识",
      "group_name": "A6a-配置知识",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "opencode 自身能力体检/再评估 SOP。当需要对 opencode 自改造能力集（agent/skill/command/MCP/instructions）做周期性复盘、与官方原版基线对比打分、核对评分档位锚点、审计治理门禁强制层级、或多库并行更新时使用。触发关键词：能力体检、再评估、精装度、评分模型、档位锚点、官方基线对齐、能力盘点、能力栈审计、自",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/opencode-capability-audit"
    },
    {
      "id": "skill-opencode-capability-extension",
      "name": "opencode-capability-extension",
      "short": "opencode-capability-extension",
      "group": "A6a-配置知识",
      "group_name": "A6a-配置知识",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "opencode 自身能力扩展 SOP。当需要为 opencode 新增/补齐一项能力（子Agent+Skill+行为层三层栈），诊断孤儿/半成品能力，统一 skill 双根，做引用普查防迁移断裂，落地契约+门控+冒烟，或用单一真相源+派生对账安装时使用。触发关键词：能力扩展、孤儿能力、三层栈、skill 双根、引用普查、能力注册表、契约先行、install",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/opencode-capability-extension",
      "why_history": "源自 0911-opencode 架构能力实战（勘察宿主自改造架构→20 项决策计划→阶段 0 前置修复→阶段 1 MVP→三合一冒烟全过，cycles: cycle_20260911_opencode_arch_capability / phase2）。",
      "why_current": "需求驱动：需要一套结构化 SOP 为 opencode 自身新增/补齐能力（子Agent + Skill + 行为层三层栈），诊断孤儿/半成品能力，统一 skill 双根，做引用普查防迁移断裂，落地契约+门控+冒烟，并用单一真相源+派生对账安装。",
      "how_trigger": "需要为 opencode 新增/补齐一项能力（架构/检索/图表/视觉等）、某能力只有单层而成为孤儿/半成品、opencode 自身 skill/agent/instructions/门控需批量治理时加载。",
      "how_workflow": "①勘察（用五要素三层栈诊断孤儿/半成品）；②计划（分级介入强度，契约先行且 schema 由主Agent 亲写）；③阶段 0 前置修复（skill 双根统一迁移前备份、引用普查 grep 硬编码、stale 归档、能力注册表回填）；④阶段 1 MVP（skill 升级为可执行工作流 + 可见子Agent + 行为层全局强制 + /name 命令 + 独立 gate 脚本）；⑤单一真相源（占位符 + install 派生 + reconcile 逐字节对账，二次 apply 幂等）；⑥门控（字段级白名单判据 + 正负向自检 + 三合一冒烟）；⑦注册表闭环。",
      "how_collaboration": "以 architecture-judgment 三层栈为实战样例；与 opencode-config（能力注册表 local/capabilities.md）协作；与 architect-worker / architecture-behavior 同构；依赖 config-main。",
      "dependencies": [
        "skill-architecture-judgment",
        "skill-opencode-config",
        "config-main"
      ]
    },
    {
      "id": "skill-opencode-config",
      "name": "opencode-config",
      "short": "opencode-config",
      "group": "A6a-配置知识",
      "group_name": "A6a-配置知识",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "OpenCode 配置架构索引 + 路由地图。只承载 模块结构、职责边界、场景/域入口路由、维护约定；不内嵌任何配置具体值（字段全集/模型清单/cost/权限规则等一律在各子文件，需按路由 read 加载）。当用户需要查看、修改、编写、验证 opencode 配置时**必须主动使用**本 skill，并按路由加载对应子文件。触发关键词：opencode配置、",
      "provides": "",
      "layer": 4,
      "enabled": true,
      "source": "skills/opencode-config"
    },
    {
      "id": "skill-openspec-apply-change",
      "name": "openspec-apply-change",
      "short": "openspec-apply-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "执行 tasks.md 中的实现任务——逐条完成并打勾。tasks.md 就绪后开始编码时使用。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-apply-change"
    },
    {
      "id": "skill-openspec-archive-change",
      "name": "openspec-archive-change",
      "short": "openspec-archive-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "归档已完成的变更——合并 delta spec 到主 spec 并移动到 archive。实现完成并验证通过后使用。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-archive-change"
    },
    {
      "id": "skill-openspec-bulk-archive-change",
      "name": "openspec-bulk-archive-change",
      "short": "openspec-bulk-archive-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "批量归档多个已完成的变更。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-bulk-archive-change"
    },
    {
      "id": "skill-openspec-continue-change",
      "name": "openspec-continue-change",
      "short": "openspec-continue-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "继续已有的变更——按 DAG 顺序生成下一个未完成的工件。适合恢复中断的工作。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-continue-change"
    },
    {
      "id": "skill-openspec-explore",
      "name": "openspec-explore",
      "short": "openspec-explore",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "探索模式——分析代码、理清需求、比较方案。不确定要做什么或需要先思考再动手时使用。不写代码。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-explore"
    },
    {
      "id": "skill-openspec-ff-change",
      "name": "openspec-ff-change",
      "short": "openspec-ff-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "快速通道——跳过逐步交互，一键生成所有 OpenSpec 工件。适合有经验的用户或简单变更。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-ff-change"
    },
    {
      "id": "skill-openspec-new-change",
      "name": "openspec-new-change",
      "short": "openspec-new-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "逐步创建新变更——比 propose 更细粒度，逐个工件交互式创建。适合复杂或需精细控制的场景。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-new-change"
    },
    {
      "id": "skill-openspec-onboard",
      "name": "openspec-onboard",
      "short": "openspec-onboard",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "OpenSpec 引导教程——手把手带领首次使用的用户完成完整流程。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-onboard"
    },
    {
      "id": "skill-openspec-propose",
      "name": "openspec-propose",
      "short": "openspec-propose",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "创建变更提案——一键生成 proposal/design/specs/tasks。明确知道要做什么时使用。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-propose"
    },
    {
      "id": "skill-openspec-sync-specs",
      "name": "openspec-sync-specs",
      "short": "openspec-sync-specs",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "同步 delta spec 到主 spec（不归档）。仅被 archive-change 或显式召唤时使用。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-sync-specs"
    },
    {
      "id": "skill-openspec-update-change",
      "name": "openspec-update-change",
      "short": "openspec-update-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "编辑/协调已有的 OpenSpec 工件。处理手动修改后的重新同步。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-update-change"
    },
    {
      "id": "skill-openspec-verify-change",
      "name": "openspec-verify-change",
      "short": "openspec-verify-change",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "验证实现是否匹配 spec/design。归档前的可选校验步骤。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/openspec-verify-change"
    },
    {
      "id": "skill-pdf-ocr",
      "name": "pdf-ocr",
      "short": "pdf-ocr",
      "group": "A6g-文档处理",
      "group_name": "A6g-文档处理",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "PDF OCR 识别专项。处理扫描件、图片型 PDF、含水印/印章的文档。支持多语言 OCR（中英）、表格区域提取、印章检测。仅在 PDF 无文本层（扫描件/图片型）时加载。",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "skills/pdf-ocr"
    },
    {
      "id": "skill-recruit-assist",
      "name": "recruit-assist",
      "short": "recruit-assist",
      "group": "A6i-简历求职",
      "group_name": "A6i-简历求职",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "简历投递辅助。支持投简历（打开招聘页+记录跟踪表）、识别简历（扫描表单字段+匹配信息库）、更新信息库、记录投递状态、跟踪企业、上传简历跟踪（本地→飞书增量同步）、下载简历跟踪（飞书→本地全量覆盖）、提取表单（归档表单填写记录）。触发关键词：投简历、识别简历、更新信息库、记录投递、跟踪企业、招聘、简历投递、上传简历跟踪、下载简历跟踪、提取表单。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/recruit-assist"
    },
    {
      "id": "skill-release-openspec",
      "name": "release-openspec",
      "short": "release-openspec",
      "group": "A6l-OpenSpec工作流",
      "group_name": "A6l-OpenSpec工作流",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "OpenSpec 自身发布管理。仅 OpenSpec 维护者使用。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/release-openspec"
    },
    {
      "id": "skill-requirement-discovery",
      "name": "requirement-discovery",
      "short": "requirement-discovery",
      "group": "A6n-架构判断",
      "group_name": "A6n-架构判断",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": ">",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/requirement-discovery"
    },
    {
      "id": "skill-restricted-corpus-acquisition",
      "name": "restricted-corpus-acquisition",
      "short": "restricted-corpus-acquisition",
      "group": "A6q-知识库构建",
      "group_name": "A6q-知识库构建",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "受限/付费语料采集与私有化装配方法论。当任务涉及采集受版权/付费墙限制的书籍、论文、数据集语料，多来源解析与稳定下载，私有语料永不上传公开仓，声明式装配与 fail-closed 门控时使用。触发关键词：受限语料、私有语料、书籍采集、影子库、来源解析、manifest provenance、双仓隔离、git check-ignore、fail-closed ",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/restricted-corpus-acquisition",
      "why_history": "源自 0910-软件工程架构方法论阶段 2 书籍语料采集实战（30 本 paid/user-copy 经典著作「零购买最大可得」私有语料落地，76 文件/309MB + 官方结构层 11 源 613 文件，全程零进入公开仓，cycle_20260911_se_arch_book_collection）。",
      "why_current": "需求驱动：受限语料的合规边界分层、有状态取用链的可靠性、来源可追溯、私有/公开隔离落机制层、装配默认拒绝（fail-closed）。",
      "how_trigger": "采集受版权/付费墙/机构库限制的语料（书籍/论文/数据集）、目标零购买最大可得、采集结果必须私有保存永不进入公开仓（含公开镜像/Pages）、需多来源解析/稳定下载/来源可追溯/多形态装配交付时加载。",
      "how_workflow": "①来源分层与合规边界（合法免费/机构库/版权不明三层，仅落私有层）；②来源解析（并行 search-worker，允许替代镜像，版次匹配或标 edition_mismatch）；③直链由 Agent 下、登录/借阅/网盘转用户手动；④有状态取用链（Referer + session cookie + 退避重试 + 镜像轮换）；⑤JS 风控壳改用 GitHub 镜像 + PDF /Title 校验；⑥manifest 逐文件固化 provenance（http_status/source_url/license/sha256 去重）；⑦私有隔离落 git 层（双仓 .gitignore + git check-ignore 实测）；⑧装配 fail-closed（publish-manifest + binary_allowlist 默认拒绝）；⑨可机械派生；⑩主Agent 回盘复验（版次用内容特征判定）。",
      "how_collaboration": "依赖 search-worker/search-methodology（来源解析）、github-bulk-upload（公开侧上传与 Git Data API）；关联 kb-construction（语料资产型）；依赖 config-main。",
      "dependencies": [
        "skill-search-methodology",
        "agent-search-worker",
        "skill-github-bulk-upload",
        "config-main"
      ]
    },
    {
      "id": "skill-resumable-content-pipeline",
      "name": "resumable-content-pipeline",
      "short": "resumable-content-pipeline",
      "group": "A6q-知识库构建",
      "group_name": "A6q-知识库构建",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "大型内容/知识生产可续跑流水线。当任务涉及从零构建论文全集、课程知识库、方法论图谱等需多子Agent分片、数小时级、可中断续跑的内容生产时使用。触发关键词：知识库构建、论文全集、课程知识库、分片并行、可续跑、幂等生成脚本、超时治理、聚合终裁、多层门控。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/resumable-content-pipeline",
      "why_history": "源自 2026-08-25 LLM 论文全集采集/全量分析、09-10 软件工程架构知识库、09-09 课程知识库等多轮大型内容生产实战，经合并批 batch_20260911 提炼。",
      "why_current": "需求驱动：目标产物由 ≥50 个同构节点组成、单会话无法一次完成、需多路并行子Agent 分片产出且超时/中断后零浪费恢复，多形态交付并通过多层门控。",
      "how_trigger": "任务涉及从零构建论文全集/课程知识库/方法论图谱等需多子Agent 分片、数小时级、可中断续跑的内容生产时加载；适用节点数多、耗时数小时、允许分阶段暂停续跑；不适用 <20 节点小任务或每节点需强交互确认场景。",
      "how_workflow": "①契约先行落盘（contract.md：路径/命名/schema/信源分级/版权红线，长 prompt 委派引用短路径防 JSON 截断）；②骨架先行门控（先数据 JSON 层完成节点清单 + DAG 校验再并行写作）；③分片并行（按领域/主题/年代分片，子Agent 只写各自唯一文件域，预算约 20 token/s、单轮 <10min）；④幂等脚本先落盘（每节点独立目录，超时复跑不重复不丢）；⑤聚合终裁（主Agent 去重、统一口径，不取平均不重跑，双路补漏）；⑥独立门控（主Agent 不信生产者自检，查数据完整性/结构/HTML/链接可达性/内容有无，CI 不可用层显式 SKIPPED）；⑦发布与 git diff 漂移检测。",
      "how_collaboration": "与 kb-construction（内容交付型）、single-source-docs-pipeline（多产物一致）、search-methodology（信源）、drawio-worker（图表）协作；契约先行原则对齐 mech-coding-discipline；依赖 config-main。",
      "dependencies": [
        "skill-kb-construction",
        "skill-single-source-docs-pipeline",
        "config-main"
      ]
    },
    {
      "id": "skill-resume-builder",
      "name": "resume-builder",
      "short": "resume-builder",
      "group": "A6i-简历求职",
      "group_name": "A6i-简历求职",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "当用户请求制作简历、修改简历、优化简历、写CV、写求职信、准备面试或咨询求职相关问题时必须主动使用此技能。支持简历内容创作、ATS优化、岗位定制、成就公式指导、求职信撰写、面试准备、简历评分与修改建议。触发关键词：简历、resume、CV、求职、面试、cover letter、求职信、改简历、写简历、优化简历、简历模板、简历格式、STAR、实习申请、找实习、",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/resume-builder"
    },
    {
      "id": "skill-search-methodology",
      "name": "search-methodology",
      "short": "search-methodology",
      "group": "A6j-联网搜索",
      "group_name": "A6j-联网搜索",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "联网搜索方法论。需求工程层的搜索执行引擎——发现层三层(LLM初发现/信息源信用地图/外部搜索降级)+Query转译(实体消歧/学名+科名/排除运算符)+时效分流(稳定知识LLM/实时信息外部搜索)。触发:任何需要外部事实核查、多源交叉验证、实体消歧、搜索执行或证据包构建的查询。",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "skills/search-methodology",
      "why_history": "0905 联网搜索能力架构缺口清单——「无搜索方法论 Skill」，方法论此前散落 MEMORY 跨会话不稳。复用 anysearch Skill 编码范式 + goose frontmatter 懒加载，将搜索 SOP 沉淀为可加载的细粒度 skill。",
      "why_current": "需求驱动：需要一套结构化的搜索执行引擎（决策树路由 + 发现层三层 + Query 转译 + 证据包契约），把「搜索」从主Agent 的临时行为升级为可复用、可内化、可自扩展的能力。",
      "how_trigger": "search-worker 或主Agent 加载（Skills to Load 中指定）。前端 name/description 常驻，全量内容按需注入；命中 Trigger 条件（依赖外部事实/需交叉验证/实体歧义/时效超截止/用户要求搜索）即触发。",
      "how_workflow": "①决策树路由判定 Path1/Path2/HYBRID/Path3；②发现层：LLM初发现（仅稳定知识）→ 信息源信用地图（渐进披露 domains/<域>.md）→ 外部搜索降级链（Tavily 首筛→必应/DDG/Wiki 零成本→agent-browser 动态兜底，带 Tavily 预算状态机与降级策略）；③Query 转译（实体消歧：中文词→拉丁学名+科名+排除运算符）；④回源与交叉验证（curl→agent-browser→API，≥2 独立源）；⑤输出证据包契约并按 validate_evpack.py 自检提交。",
      "how_collaboration": "由 search-worker 作为执行载体；受 search-behavior instruction 约束（信源分级/实证规则）；Path3 时联动 login-auth-channel skill（登录态）；依赖 source_credibility_map.md + domains/*.md（信源导航）、validate_evpack.py（证据包校验）、Tavily API + agent-browser + browser-harness（获取后端）、opencode.env（key 注入）、代理纪律。",
      "dependencies": [
        "agent-search-worker",
        "instr-search-behavior",
        "skill-login-auth-channel",
        "skill-browser-harness",
        "ext-tavily-api",
        "ext-chrome",
        "config-main"
      ]
    },
    {
      "id": "skill-single-source-docs-pipeline",
      "name": "single-source-docs-pipeline",
      "short": "single-source-docs-pipeline",
      "group": "A6o-交付发布",
      "group_name": "A6o-交付发布",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "单一真相源文档交付流水线。当任务需同时交付 MD（真相源）+ HTML（可读版）+ 公开部署，且多产物必须保持一致时使用。触发关键词：MD/HTML 双轨、单一真相源、派生脚本、对账脚本、文档一致性、GitHub Pages 发布、自包含 HTML、链接可达性。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/single-source-docs-pipeline",
      "why_history": "源自 09-07 offshore_reflect_v3、09-11 stage6 内容排版发布、08-25 GitHub Pages 上传与 changelog 系统等实战，经合并批 batch_20260911 与 0911 架构能力实战提炼。",
      "why_current": "需求驱动：同一内容需交付 MD（真相源）+ HTML（可读版）+ 公开部署且多产物必须数据一致，杜绝「MD 改了 HTML 忘改」与「归档复制后相对路径 404」类漂移。",
      "how_trigger": "需同时交付 MD + HTML（或再加 PDF/站点）且两者必须数据一致、曾出现多产物漂移、需将文档发布为 GitHub Pages 静态站点时加载；不适用一次性交互页面或不发布不归档的单机内容。",
      "how_workflow": "①选单一真相源（MD/数据 JSON 为唯一权威，HTML 一律脚本派生，禁双写）；②派生脚本（build_report.py / gen-changelog.py，占位符 replace 避开 format 的 CSS 大括号冲突）；③对账脚本（跨文档核对目录数/组数/模型名/路径/网关，不一致即报错退出）；④可机检门控（逐句标记词布尔校验 + 链接可达性 + div 开闭平衡 + UTF-8 无替换字符）；⑤可移植化（归档 HTML 内联 CSS 自包含或校正导航前缀）；⑥发布（GitHub Actions Pages，push 被拦用 gh api PUT contents + workflow_dispatch，LFS 用 media.githubusercontent.com 直链）；⑦发布前回盘复验（Pages 200 + 关键入口 200 实测）。",
      "how_collaboration": "与 kb-construction（内容交付型门控）、github-bulk-upload（push 被 deny 时 Contents/Git Data API）、resumable-content-pipeline（多产物交付）协作；单一真相源原则对齐 mech-coding-discipline；依赖 config-main。",
      "dependencies": [
        "skill-kb-construction",
        "skill-github-bulk-upload",
        "config-main"
      ]
    },
    {
      "id": "skill-soe-resume",
      "name": "soe-resume",
      "short": "soe-resume",
      "group": "A6i-简历求职",
      "group_name": "A6i-简历求职",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "\"央国企/体制内简历制作、评审与优化。支持三大功能：简历评审（8维度评分+红黄绿灯）、简历修改（先评审确认后改写）、从零生成（读取个人信息+交互问答）。内置CV4SOE的4维度转换方法论（动词行政化升级/视角宏观化包装/关键词安全合规/软实力组织化呈现）。触发关键词：央国企简历、央企简历、国企简历、SOE简历、体制内简历、央企求职、国企求职、国家电网简历、中",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/soe-resume"
    },
    {
      "id": "skill-superpowers-feature-workflow",
      "name": "superpowers-feature-workflow",
      "short": "superpowers-feature-workflow",
      "group": "A6m-Superpowers",
      "group_name": "A6m-Superpowers",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "规范开发流程——需求澄清→方案设计→TDD 实现→验证。不依赖 OpenSpec CLI，轻量级规范编程。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/superpowers-feature-workflow"
    },
    {
      "id": "skill-superpowers-learning-workflow",
      "name": "superpowers-learning-workflow",
      "short": "superpowers-learning-workflow",
      "group": "A6m-Superpowers",
      "group_name": "A6m-Superpowers",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "会话后知识沉淀——回写项目记忆、决策记录、可复用教训。按需显式召唤。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/superpowers-learning-workflow"
    },
    {
      "id": "skill-superpowers-openspec-superpowers-workflow",
      "name": "superpowers-openspec-superpowers-workflow",
      "short": "superpowers-openspec-superpowers-workflow",
      "group": "A6m-Superpowers",
      "group_name": "A6m-Superpowers",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "完整交付流程——Superpowers 探索→OpenSpec 锁定→TDD 实施→验证→归档。全程门控，需显式召唤。",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/superpowers-openspec-superpowers-workflow"
    },
    {
      "id": "skill-version-upgrade-cascade",
      "name": "version-upgrade-cascade",
      "short": "version-upgrade-cascade",
      "group": "A6q-知识库构建",
      "group_name": "A6q-知识库构建",
      "kind": "skill",
      "layer_type": "assembly",
      "implementation": "上游版本升级 → 知识库/文档级联更新工作流。适用于「上游项目发布新版本，需将基于旧版本的产物（DAG知识库/插件页/文档/图表）级联升级到新版本」的任务；亦适用于**可扩展系统本体**（宿主源码树 ＋ 自定义插件/扩展）的版本升级与**破坏性契约兼容审计**（见 §四 通用经验 8–11）。核心方法论：三层差异分析（结构diff→源码diff→深入分析）、",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "skills/version-upgrade-cascade"
    },
    {
      "id": "mech-grill-me",
      "name": "Grill-Me 协议",
      "short": "grill-me",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "Plan 阶段逐分支追问收敛方案，问一答一（question 工具），含 Drift 护栏与收敛审计",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "opencode.jsonc plan/build prompt",
      "why_history": "源自 RobMitt/grill-me-skill(基于 Matt Pocock 作品 MIT)，用于对用户方案/设计进行压力测试，逐问题拷问直至设计意图完全对齐(Fork 自外部 skill 集成)。",
      "why_current": "作为 Plan 模式的默认协议被内联进 opencode.jsonc agent.plan.prompt/subagent 角色，确保正式编码前决策树所有分支被显式解析，避免模糊需求导致 Build 返工；在长会话中靠三层护栏防协议漂移。",
      "how_trigger": "用户关键词触发('grill me'/'拷问我'/'面试我的方案'/'压力测试这个方案')；或 Plan 模式启动时由 opencode.jsonc agent.plan/build.prompt 内联的 Grill-Me Protocol 自动启用。",
      "how_workflow": "①收到方案后，每次回答后输出 [GRILL] 简短致谢 → 同一消息内紧接一次 question 工具调用(一次只问一个问题，2-4 个可选答案)；②能靠探索代码库/文件自行回答的分支就先自行探索而非问用户；③沿设计树走遍所有分支直至无决策依赖；④收敛时输出 [GRILL] Decision tree resolved. + 一句话总结 + 决策编号列表。",
      "how_collaboration": "依赖 opencode 原生 question 工具；指令源 skill/grill-me/SKILL.md；已内联于 opencode.jsonc agent.plan.prompt 与 agent.build.prompt；与 GATE 门控(Plan 收敛写 GATE+COMPLEXITY)与 Reflection 的 Layer A(GRILL 决策列表)协作。"
    },
    {
      "id": "mech-agents-protocol",
      "name": "Agent 委派协议",
      "short": "agents-protocol",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "主Agent 任务调度者→拆解→search-agents 匹配→委派子Agent→聚合；含 MCP 路由规则",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "opencode.jsonc plan/build prompt",
      "why_history": "为解决单 Agent 上下文爆炸与执行者模式问题，设定'调度者非执行者'分工：主 Agent 只编排(拆解/匹配/委派/聚合)，子 Agent 只执行，角色优先匹配 agency-agents。",
      "why_current": "复杂/多步/联网任务经由 task() 委派子 Agent 并行或接力，主 Agent 上下文不爆；对垂直领域(RL/LLM 推理等)search-agents 命中率低时改走 general 子 Agent+自写角色提示词，保证任意任务都可委派且有正确角色激活。",
      "how_trigger": "收到请求先分类判断：是否需要≥2 个工具/联网/多步推理→ YES 则第一条工具调用必须是 search-agents。",
      "how_workflow": "①search-agents -Query 关键词 -Top 5 搜角色(只看 JSON 元数据)或自写 2-3 句角色提示词；②拆解任务：独立→并行 Task，有依赖→串行接力(data 传递)，耦合→单 Agent；③组装子 Agent prompt(SUBAGENT 身份+Role Activation+Skills to Load+Task+No Self-Assessment+Return Format)，drawio-worker 须精确写 drawio-reference；④聚合：success→summary|partial→+errors|failed→询问用户；⑤超 3 分钟没发 task→默念失败模式自查(执行者/例外滥用/假并行)。",
      "how_collaboration": "依赖 skill/agency-agents/search-agents.py 与 agent-index.json；主 Agent prompt 来自 opencode.jsonc agent.plan/build.prompt 内 Agent Protocol 与 instructions/agent-protocol.md；子 Agent 角色定义在 opencode.jsonc agent(plan/build/pdf-worker/drawio-worker/vision-worker/general/explore/reflection-worker/search-worker)；opencode.jsonc plan.permission 限制 bash 默认 deny。"
    },
    {
      "id": "mech-gate",
      "name": "GATE 强制门控",
      "short": "gate",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "MANDATORY GATE CHECK：范围/深度/操作/风险四维自评(1-5)输出总分→Daily/Deep",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "为解决任务复杂度与推理深度不匹配导致的长任务输出截断/多轮重试成本失控，引入强制自评门控：任务开始前先量化影响范围/逻辑深度/操作数量/风险以决定用哪档推理。",
      "why_current": "作为主 Agent(plan/build)的第一条强制输出，用 4 维各 1-5 分(影响范围/逻辑深度/操作数量/风险精度)求总分定 Variant(≤12→Daily，≥13→Deep)，评分保守宁高估，边界值 12→Daily、13→Deep，为成本与质量作显式权衡。",
      "how_trigger": "主 Agent 收到任务后、任何操作之前，第一条助手消息必须以 [GATE] 范围=X 深度=X 操作=X 风险=X → 总分=XX → Daily|Deep 开头；子 Agent 为纯执行者不输出 GATE。",
      "how_workflow": "①按 4 维自评表逐一打分并求和；②查决策边界表定 Variant 与 max_tokens/reasoning_effort；③输出 GATE 行后继续任务；④Plan 收敛时把 GATE 自评+COMPLEXITY+决策列表封装进 Reflection Layer A；⑤Build 若检测到 [COMPLEXITY] 标记则继承推理深度不重评。",
      "how_collaboration": "指令源 /home/zako-mio/.config/opencode/instructions/auto-mode.md『MANDATORY GATE CHECK』；承接 Variant 控制(mech-variant)与 Reflection Layer A；写入 pending.json；与 Agent 委派协议的'No Self-Assessment'(子 Agent 不重复 GATE)协作。"
    },
    {
      "id": "mech-variant",
      "name": "Variant 运行时控制",
      "short": "variant",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "Plan 阶段输出[COMPLEXITY]/Build 继承推理深度；Ctrl+T 运行时切换 daily/deep",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "auto-mode.md + opencode.jsonc",
      "why_history": "为在一次会话内按任务轻重动态调整推理强度，用 daily/deep 双 variant 映射不同 max_tokens 与 reasoning_effort，避免固定深度对简单任务浪费、对复杂任务截断。",
      "why_current": "提供运行时切换(Ctrl+T 循环)免改文件重启，并新增 [COMPLEXITY: X/20] 继承规则：Plan 收敛摘要打标记，Build 启动检测到即用匹配推理深度不重评，保证 DAG 上下游(Plan→Build)推理一致，成本可控且质量稳定。",
      "how_trigger": "运行时按 Ctrl+T 循环切换(daily↔deep)；或 tui.json 绑定 variant_list 键位；或编辑 opencode.jsonc agent.plan/build.variant 手动切换；或 Build 启动检测到前置 plan 消息含 [COMPLEXITY] 标记时自动继承。",
      "how_workflow": "①GATE 门控评分定启动 variant(≤12 Daily/≥13 Deep)；②运行时按 Ctrl+T 免重启切换；③Plan 收敛写 [COMPLEXITY: X/20]；④Build 检测标记→用匹配深度→否则按 auto-mode 正常评估；⑤不改 opencode.jsonc agent.plan/build variant 配置。",
      "how_collaboration": "配置源 opencode.jsonc provider(variants 映射 daily/deep 的 max_tokens/reasoning_effort)与 compaction 段；承接 GATE 门控(mech-gate)；变体定义在 opencode.jsonc agent.plan/build.variant；与 mech-cache 协作(固定前缀稳定)。"
    },
    {
      "id": "mech-reflection-check",
      "name": "Reflection 自检系统",
      "short": "reflection-check",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "查 pending.json waiting_count→标 processing→委派 reflection-worker→/reflection 逐条确认",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "auto-mode.md",
      "why_history": "自进化子系统：每个 Plan+Build 完整周期结束后异步反思，分析本轮执行经验，把可复用知识写入 Memory 或 Skill 轨道，让 Agent 随任务积累越用越强。",
      "why_current": "重构为状态机 + 三池扫描：pending.json(waiting→processing→done)承载 4 层输入，reflection-worker 只读 Reflection 目录+MEMORY 只写 Reflection 目录；处理前对卡 processing 超时条目回退 waiting 防单点阻塞；/reflection 命令做'whether to keep'(确认)与 worker 做'what to learn'(分析)分工。",
      "how_trigger": "主 Agent 收到用户消息、在任务分类之前，检查 Reflection/pending.json 的 meta.waiting_count>0；或用户输入 /reflection(或 memory|skill|status|browse)。",
      "how_workflow": "①waiting_count>0→读 pending.json→找最早 waiting cycle→标 processing→写回→委派 reflection-worker 处理反思；②无论成功失败继续正常流程，连续失败 2 次标 expired；③worker 分析 4 层数据→产出 memory/skill 条目→写 pending.json(status=done)；④用户 /reflection→主 Agent 三池扫描→统一分析或逐条 yes/no/edit→确认写入→清理队列(备份→移除→更新 meta→JSON 校验)；⑤处理前超时判定防队列死锁。",
      "how_collaboration": "依赖 command/reflection.md、archive/Reflection/pending.json、skills/agent-reflection/SKILL.md、opencode.jsonc agent.reflection-worker；与 MEMORY 硬门禁(mech-memory-gate)、Mission 留档(mech-mission-archive)协作；output 目标 MEMORY.md 与 Reflection/skills/。"
    },
    {
      "id": "mech-memory-gate",
      "name": "MEMORY.md 硬门禁",
      "short": "memory-gate",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "MEMORY.md 严禁直接修改，走 pending→reflection-worker→/reflection 确认→带[src:]写入",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "auto-mode.md",
      "why_history": "2026-08-19 根因修复：此前直接改 MEMORY.md 导致内容漂移/无溯源，故设硬门禁禁止绕过反射链路直接写入，保证每条记忆带来源签名可回溯。",
      "why_current": "确保记忆写入仅经五步链路(①封装 4 层输入→②追加 pending.json status=waiting→③reflection-worker 处理→④用户 /reflection 逐条 yes/edit 确认→⑤确认后才写入)，写入的每个 § 段必须带 [src: <cycle_id>] 签名，无签名禁止写入，唯一例外是 /reflection 命令本身。",
      "how_trigger": "任何试图写入 MEMORY.md 的编辑/写操作会被拦截；唯一合法触发是 /reflection 用户确认；另子 Agent 若产出记忆条目写入 memory_pending/ 待审。",
      "how_workflow": "①记忆产出方(主 Agent 封装 4 层或子 Agent 交 memory_pending/)不直接碰 MEMORY.md；②reflection-worker 分析并入 pending.json results(status=done)；③用户 /reflection 三池扫描+统一分析/逐条确认；④确认 yes/edit→主 Agent 写 MEMORY.md(§ 分段，带 [src: cycle_id])；⑤写后校验脚本按 § 切分每段首行为 [src:...]；⑥备份→原子写回→JSON 校验，容量>5000 走分层精简。",
      "how_collaboration": "目标文件 MEMORY.md(§-分段格式)；由 opencode.jsonc agent.plan/build.prompt 内 Memo 硬门禁段与 auto-mode.md『Universal SubAgent Rules』身份约束共同强制；依赖 Reflection 链路；子 Agent 记忆写入 ~/opencode/archive/Reflection/memory_pending/。"
    },
    {
      "id": "mech-cache",
      "name": "缓存感知 (Cache Awareness)",
      "short": "cache",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "DeepSeek prefix-cache：前缀字节级稳定，动态内容放末尾，协议不中途修改",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "本项目 API 调用基于 DeepSeek prefix-cache 机制：缓存命中时 input token 成本降 98%~99%，前缀字节级变化会导致整个缓存失效，故把静态内容稳定置前以最大化命中。",
      "why_current": "作为成本优化核心纪律，要求所有文档/规则/工具定义等静态内容保持在 prompt 前缀且不改，动态内容(用户问题/检索结果/变化参数)始终放末尾；auto-mode.md 全 Agent 作为共享前缀加载，委派协议经 agent.plan/build.prompt 注入(方案 A prompt 隔离)。",
      "how_trigger": "持续作用于每次 API 调用设计：任何静态共享前缀内容必须字节稳定；缓存协议承诺本文档 session 运行期间不修改/不重排/不动态注入。",
      "how_workflow": "①把共享前缀(如 auto-mode.md/协议)固定在 prompt 最前且冻结；②动态内容追加到尾部；③避免在同一前缀间插入时间戳/会话 ID/动态内容导致缓存失效；④MCP/Skill 工具 schema 首次加载后已被缓存，后续同类任务不做重复 tool discovery。",
      "how_collaboration": "作用于所有指令源：instructions/auto-mode.md『Cache Awareness』与『协议稳定性承诺』；与 Parallel & Batching(mech-parallel)及 Variant(mech-variant)协作；配置体现于 opencode.jsonc compaction 段。"
    },
    {
      "id": "mech-parallel",
      "name": "Parallel & Batching",
      "short": "parallel",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "独立工具调用并行发出；相邻只读操作合并批次；读优先于写",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "为降低 API 调用轮次与缓存寿命损耗：互不依赖的独立工具调用必须同一消息并行发出，避免先 glob 再 read 这种浪费一轮的串行。",
      "why_current": "作为缓存性能优化关键，要求探索代码库时先并行 glob(找文件)+grep(搜内容)，结果汇总再决定下一步；相邻同类只读操作合并为批次，不在同一消息混合读写。",
      "how_trigger": "任何含多个互不依赖工具调用/相邻同类只读操作的场景；首次加载 Skill 后不要重复 tool discovery(PDF 任务始终用 pdf-worker 而非重载 pdf-ocr)。",
      "how_workflow": "①识别互不依赖操作：glob+grep+read 三个独立操作一轮并行发出；②合并相邻同类只读批次；③先并行探索(glob+grep)汇总再定下一步；④写后读等依赖操作必须串行；⑤MCP/Skill 工具 schema 首次加载后缓存，后续同类不重复发现。",
      "how_collaboration": "指令源 instructions/auto-mode.md『Parallel & Batching』；与 mech-cache(缓存寿命)和 mech-output(只读优先)协作；子 Agent 多路并行领域分片检索模式见于 MEMORY.md cycle_20260813_parallel_search。"
    },
    {
      "id": "mech-output",
      "name": "Output Discipline",
      "short": "output",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "分段读取/压缩大输出/只读优先，控制 token 规模",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "为控 token 消耗与上下文占用，避免单次全量返回大文件/大输出撑爆上下文流，建立输出规模控制纪律。",
      "why_current": "当前要求：文件>2000 行用 offset/limit 分段读；grep 命中>50 条用更精确正则缩小；工具返回>3000 字符优先截断关键部分(headroom MCP 已禁用 2026-08-12)；同路径有 read+glob 时优先 glob，内容搜索优先 grep。",
      "how_trigger": "读文件/工具返回/内容搜索时持续生效：大文件分段、大输出压缩、双路径选 lean 者。",
      "how_workflow": "①大文件分段读取(>2000 行用 offset/limit，先头尾中间按需)；②超大工具输出截断关键部分并留位置标记；③grep 命中>50 时缩范围；④只读优先：同路径 read/glob 选 glob，内容搜索优先 grep 再按需 read；⑤仅在确认需要时才全量展示。",
      "how_collaboration": "指令源 instructions/auto-mode.md『Output Discipline』；与 mech-parallel(只读优先)和 mech-session-memory(L1 剪枝裁剪超大工具输出)协作。"
    },
    {
      "id": "mech-fault",
      "name": "故障自愈协议",
      "short": "fault",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "工具失败重试3次→换方案→记录；MCP 断开降级内置工具；JSON 解析失败正则提取",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "为应对工具调用失败/MCP 连接断开/JSON 解析失败等运行时故障，建立分级自愈策略，避免无限重试浪费 API 调用与上下文。",
      "why_current": "当前三级自修复与降级：工具调用第1次失败检查参数重试、第2次换替代方案、第3次记录 errors[] 上报；MCP 连接断开等待 3 秒重连、仍失败跳过用内置工具降级；JSON 解析失败用正则提取最外层 {...}；超时先延长后拆分。",
      "how_trigger": "工具调用返回错误、MCP 连接断开、子 Agent 返回非 JSON、bash/网络超时四类故障时触发。",
      "how_workflow": "①工具失败：格式化重试→换工具/路径/参数→记录 errors[] 上报；②MCP 断开：等 3 秒重连→仍失败跳过降级为内置工具；③JSON 解析：提取最外层 {...}→失败规 errors[]；④超时：先 timeout 延长→失败拆分命令/缓存结果；⑤子 Agent 多次失败后清晰记入 errors 上报，不陷入重试循环。",
      "how_collaboration": "指令源 instructions/auto-mode.md『Fault Tolerance』；与 SubAgent Rules('自修复失败 3 次记 errors 上报')和 Agent Protocol 的失败模式自查协作；影响返回 JSON 结构(status/errors 字段)。"
    },
    {
      "id": "mech-coding-safety",
      "name": "编码安全规则",
      "short": "coding-safety",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "优先 edit(UTF-8安全)；禁用 python -c 内联管道；独立.py 文件；修改中文JSON后验证",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "opencode.jsonc prompt",
      "why_history": "为防中文 UTF-8 多字节序列被 PowerShell 转义链截断(python -c 经转义会截断中文)，建立文件修改的编码安全优先级。",
      "why_current": "当前规则：优先 edit 工具(全程 UTF-8 安全)；edit 不可用→切 Build 模式修改，绝不降级为 bash 写文件；严禁 bash+Python 内联管道(python -c)；必须脚本写文件时写独立 .py 再执行；改含中文 JSON 后必须 json.load 验证；另有 replaceAll 误伤逐 Agent 复核+旧值零残留检查。",
      "how_trigger": "任何修改文件/写文件/脚本写文件的场景持续生效。",
      "how_workflow": "①优先 edit(UTF-8 安全)；②edit 不可用→切 Build 模式再改，不用 bash 写；③严禁 python -c + bash 内联管道；④必须脚本写→写独立 .py 再 python 执行；⑤改含中文 JSON 后 json.load 验证；⑥全局替换(replaceAll)后做旧值零残留检查；⑦Python 输出中文优先 sys.stdout.reconfigure(encoding='utf-8')。",
      "how_collaboration": "指令源 instructions/auto-mode.md『Universal Coding Discipline』与 opencode.jsonc agent.plan/build.prompt 内『编码安全规则』；MEMORY.md cycle_legacy_coding 记忆；与 Mission 留档路径/Reflection 写入协作。"
    },
    {
      "id": "mech-mission-archive",
      "name": "Mission 留档规则",
      "short": "mission-archive",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "任务完成 5 段报告模板 + 询问用户留档 + 路径门控正则校验",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "opencode.jsonc prompt",
      "why_history": "为让每次任务产出可复盘可追溯，约定任务完成报告必须含 5 段(当时情况/制定计划/执行情况/完成情况/反思分析建议)，并保存到标准化留档目录。",
      "why_current": "当前双版本留档(AI 友好 report.md + 可读 report.html)，HTML 走质量门控(UTF-8 无替换字符/div 开闭平衡/5 段完整)；三重门控(完整性/询问 question/路径正则)；依赖渲染正确性的交付物(动态 DAG/tap id/组框布局)须用 headless Chromium 实际渲染验证。",
      "how_trigger": "任务完成后触发，必须用 question 工具询问用户「是否留档？」(半自动)。",
      "how_workflow": "①任务完成后用 question 询问是否留档；②用户确认→按 5 段模板撰写报告；③门控：完整性(5 段齐全)/询问(不得跳过)/路径(校验正则)；④双版本留存：report.md + report.html，HTML 跑质量门控脚本；⑤非项目本地文件存 ~/opencode/archive/Mission-file/{YYYY-MM}/{MMDD-任务名}/，项目文件存工作目录；⑥留档结束后 Build 末尾封装 4 层数据写 pending.json。",
      "how_collaboration": "参考 opencode.jsonc agent.plan/build.prompt 内『Mission留档规则』与 instructions/agent-protocol.md；存档目录 /home/zako-mio/opencode/archive/Mission-file/；与 Reflection 的 Layer D(留档产出)协作。"
    },
    {
      "id": "mech-browser-tabs",
      "name": "浏览器标签页管理",
      "short": "browser-tabs",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "new_tab 后关闭标签页；任务完成询问是否关闭；批量爬取不逐页关闭",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "opencode.jsonc prompt",
      "why_history": "为管理 browser-harness(browser-use)进行网页交互时 Chrome 标签页的生命周期，避免标签页堆积占用资源。",
      "why_current": "当前原则：用完即关(new_tab 打开并提取后关闭标签页)；批量关闭提示(整个任务浏览器读取全部完成后必须用 question 询问关闭所有标签页保留第一个)；批量爬取中途不逐页关闭(影响速度)；WSL2 浏览器自动化统一 agent-browser，browser-harness 降为 Windows 备选。",
      "how_trigger": "使用 browser-harness/browser-use 进行网页交互(new_tab 打开页面、批量爬取、访问多个详情页)时触发。",
      "how_workflow": "①每次 new_tab() 完成数据提取后关闭该标签页(跑 close-chrome-tabs.ps1 -KeepFirst)；②所有浏览器读取全部完成后用 question 询问用户「是否关闭所有标签页？」；③批量爬取中途不逐页关，等整个任务阶段完成后统一关闭；④标签页参数(-All/-KeepFirst/-KeepUrlPattern/无参列出)。",
      "how_collaboration": "指令源 instructions/browser-management.md 与 opencode.jsonc agent.plan/build.prompt 内『浏览器标签页管理』；依赖脚本 close-chrome-tabs.ps1；WSL2 用 agent-browser、Windows 备选 browser-harness(skill/browser-harness)；与代理纪律(mech-proxy)、浏览器自动化 skill 协作。"
    },
    {
      "id": "mech-proxy",
      "name": "联网代理纪律 (WSL2)",
      "short": "proxy",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "默认直连；境外被墙站点 proxy_on 或 curl -x 172.29.0.1:7890；模型API勿设代理",
      "provides": "",
      "layer": 1,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "WSL2 内访问宿主机代理网关 172.29.0.1:7890(宿主机 XQNetwork 监听 0.0.0.0:7890，HTTP+SOCKS5 混合端口)，用于访问境外被墙站点。",
      "why_current": "2026-08-22 更新为默认直连：.bashrc 不再自动 export 全局代理 env，仅访问境外被墙站点时手动 proxy_on 开启/proxy_off 关闭；国内流量与模型 API 全部直连；模型 API 调用链(Node fetch/undici)与 webfetch 工具不读代理 env，必须直连；curl/CLI 继承 shell env 默认直连，需境外时 curl -x http://172.29.0.1:7890；git 已配定向代理指向 172.29.0.1:7890。",
      "how_trigger": "默认直连；仅当访问境外被墙站点(Google/X 等)时手动 proxy_on 或显式 curl -x/git 定向代理。",
      "how_workflow": "①默认 Shell 无代理 env→国内直连；②访问境外被墙内容→proxy_on 或 curl -x http://172.29.0.1:7890 <url>、git、browser-harness；③模型 API(api.deepseek.com/opencode.ai)必须直连禁止设代理；④webfetch 访问境内直接成功，境外会超时需 curl -x；⑤proxy_off 关闭，no_proxy 保证国内流量仍直连；⑥子 Agent 优先国内源直连，境外显式加 curl -x。",
      "how_collaboration": "指令源 instructions/auto-mode.md『联网代理纪律（WSL2 环境）』；MEMORY.md cycle_legacy_path/cycle_20260822_network 指针；与 Agent 委派(子 Agent 联网)及浏览器(agent-browser/browser-harness)协作。"
    },
    {
      "id": "mech-subagent-rules",
      "name": "Universal SubAgent Rules",
      "short": "subagent-rules",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "子Agent 身份约束/工具使用/错误处理/通信规范(JSON)+结构化返回",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "为统一所有 task() 创建的子 Agent 行为，消除身份冲突(子 Agent 不再收调度者角色指令)，并规范输出为可聚合的结构化 JSON。",
      "why_current": "当前约束：子 Agent 仅执行分配任务不委派/不调度/不调用其他 Agent，不使用 search-agents 等搜索机制，严禁直接改 MEMORY.md 或 pending.json 之外记忆文件(记忆条目写 memory_pending/ 待审)；所有输出必须返回结构化 JSON；工具使用优先已加载专用工具、结果超长截断、读优先于写；错误处理自修复 3 次后记 errors 上报；通信用 JSON，summary≤200 字。",
      "how_trigger": "任何通过 task() 创建的子 Agent(plan/build/pdf-worker/drawio-worker/vision-worker/general/explore/reflection-worker/search-worker)被委派时作为共享前缀规则生效。",
      "how_workflow": "①身份约束：执行者身份不委派不搜 Agent，记忆产出入 memory_pending/；②工具：优先专用工具/结果超长截断/读优先于写；③错误：自修复失败 3 次记 errors 上报不无限重试；④通信：输出结构化 JSON，summary≤200 字，files_created/modified 绝对路径，data 仅核心结果，decisions/warnings/errors 分级。",
      "how_collaboration": "指令源 instructions/auto-mode.md『Universal SubAgent Rules』；子 Agent 定义于 opencode.jsonc agent；与故障自愈(mech-fault)、输出控制(mech-output)、编码纪律(mech-coding-discipline)、MEMORY 硬门禁(mech-memory-gate)共同作用于子 Agent。"
    },
    {
      "id": "mech-coding-discipline",
      "name": "Universal Coding Discipline",
      "short": "coding-discipline",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "验证与证据/从磁盘读不依赖对话记忆/路径本地化/元数据不入输出",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "为建立跨 Skill/Workflow 边界的通用编码准则，覆盖所有 Agent，防止依赖对话记忆的旧结果和跨机器绝对路径假设。",
      "why_current": "当前准则：验证与证据(不报告成功除非有新鲜验证证据，完成前跑测试→lint→报告)；从磁盘读取不依赖对话记忆(创建/修改文件前重新读依赖文件)；路径本地化(文件路径保持仓库本地化，子 Agent 返回绝对路径主 Agent 转相对路径)；元数据不入输出(context/rules/project_context 是约束不可复入产出文件)。",
      "how_trigger": "任何 Agent 实施代码/生成 DAG 工件时持续生效：声明完成前、创建/修改文件前必须磁盘重读。",
      "how_workflow": "①完成声明前运行验证(测试通过→lint 通过→报告结果)并展示输出；②创建/修改文件前从磁盘重新读依赖文件；③DAG 工件生成写新工件前 read 所有 requires 依赖；④文件路径用相对路径或 repoRoot 拼接；⑤不以 context/rules 等约束字段入产出文件。",
      "how_collaboration": "指令源 instructions/auto-mode.md『Universal Coding Discipline』；与子 Agent 规则(mech-subagent-rules)、编码安全(mech-coding-safety)协作；影响 DAG 生成流程(proposal/specs/design/tasks requires 依赖读取)。"
    },
    {
      "id": "mech-session-memory",
      "name": "Session Memory 结构化压缩",
      "short": "session-memory",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "compaction 5 段模板(当前状态/关键文件/已做决策/待解决问题/经验教训)+L1剪枝/L2压缩/L3兜底",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "instructions/auto-mode.md",
      "why_history": "0902 后新增：为应对会话上下文膨胀触发 compaction，建立阶梯式压缩决策树(L1 剪枝/L2 结构化压缩/L3 兜底摘要)，避免上下文爆仓与不必要的 compaction 触发。",
      "why_current": "当前压缩模板 5 段(当前状态/关键文件/已做决策/待解决问题/经验教训)，分别服务于恢复会话定位卡点、避免重复探索、不重问已决策项、知道待修问题、不踩两次坑；compaction 后保留 tail_turns=4(preserve_recent_tokens=16384)；模板不重复记录已截断的工具输出；模板语言与会话语言一致。",
      "how_trigger": "compaction 触发时；L1 剪枝(标记/截断超大工具输出)仍不足时进入 L2 结构化压缩。",
      "how_workflow": "①L1 剪枝：截断超大工具输出仅留关键部分+位置标记；②仍不足→L2 按 5 段模板输出结构化记忆；③L2 也不足→L3 通用全量摘要兜底；④compaction 后保留 tail_turns=4；⑤不重复记录已裁剪输出，模板语言跟随会话语言。",
      "how_collaboration": "指令源 instructions/auto-mode.md『Session Memory 结构化压缩模板』与 MEMORY.md cycle_0818_v4；配置体现于 opencode.jsonc compaction(auto/prune/tail_turns=4/preserve_recent_tokens=16384/reserved=10000)；与输出控制(mech-output L1 剪枝)和编码纪律(mech-coding-discipline)协作。"
    },
    {
      "id": "mech-architecture",
      "name": "架构判断机制",
      "short": "architecture",
      "group": "AQ-自进化机制",
      "group_name": "AQ-自进化机制",
      "kind": "mechanism",
      "layer_type": "assembly",
      "implementation": "架构三层栈：skill-architecture-judgment + agent-architect-worker + 行为层强制 + /arch 命令 + gate 门控；ADR/权衡矩阵经 gate_architecture.py PASS 方可交付",
      "provides": "",
      "layer": 0,
      "enabled": true,
      "source": "architecture-behavior.md + /arch + gate_architecture.py",
      "why_history": "源自 0910-软件工程架构方法论知识图谱（167 节点/360 边/18 组/11 域/三层）交付与 0911 opencode 架构能力扩展实战：把「架构判断力」从速查+路径路由升级为 opencode 可执行的架构能力三层栈（能力 Skill + 可见子Agent + 行为层），并补齐显式命令与机检门控。",
      "why_current": "当前由五元组成：skill-architecture-judgment（可执行工作流 + 内置 167 节点离线图谱 + schemas/templates/gate）、agent-architect-worker（可见子Agent，继承父会话模型，产出 ADR/多维权衡矩阵/边界设计说明）、instr-architecture-behavior（行为层全局强制：架构任务必加载 skill + 委派 worker + 门控）、command-arch（/arch 显式入口）、gate_architecture.py（--kind adr|boundary 机检门控，PASS 前不得交付）。知识分层刚性：方法论层 MTH 与本质层 ESS 重召回，技术实践层 TEC 仅作 standards_refs 选型标尺、不得进入 decision/rationale。",
      "how_trigger": "三条触发：①自动路由——任务涉及技术选型/架构风格/模块与服务边界与粒度/架构评审/质量属性权衡/技术债治理/演进治理时，主流程(plan/build)自动加载本 skill 并委派 architect-worker；②显式命令 /arch <任务描述> 或 /arch 选型|评审|边界|技术债 ...；③openspec design 工件生成或修改时由行为层 architecture-behavior.md 强制触发。",
      "how_workflow": "①判场景：把问题归入 routing.md 的 18 个任务场景之一（先匹配触发问法）；②定产出类型：adr(+矩阵) / boundary 为门控级，review / tech-debt 为模板级；③委派 architect-worker，prompt 含 Skills to Load、对应模板与 schema、TEC 引用约束；④产出后必跑 gate_architecture.py（--kind adr|boundary，schema 与 graph 自动解析），FAIL 回传修正最多 2 轮，不得降级口头通过；⑤交付主产物 + 多维权衡矩阵（涉选型）+ 门控证据 + 命中场景节点；⑥主动询问是否需要 drawio 架构图（是则另委 drawio-worker，prompt 必含 drawio-reference）。",
      "how_collaboration": "组成五元 = skill-architecture-judgment + agent-architect-worker + instr-architecture-behavior + command-arch + gate_architecture.py；依赖 opencode.jsonc agent 段（architect-worker 定义）与 config-main（instructions 数组引用 architecture-behavior.md）；与架构图委派链路（drawio-worker + drawio-reference）、kb-construction（内容交付型/上下文注入型）协作；知识图谱为母库离线资产（0910-软件工程架构方法论），不联网即可用。"
    },
    {
      "id": "config-main",
      "name": "opencode.jsonc",
      "short": "main",
      "group": "AG6-配置本体",
      "group_name": "AG6-配置本体",
      "kind": "config",
      "layer_type": "assembly",
      "implementation": "主配置：agent/provider/mcp/compaction/skills/instructions/permission",
      "provides": "",
      "layer": 2,
      "enabled": true,
      "source": "~/.config/opencode/opencode.jsonc"
    },
    {
      "id": "ext-glm-api",
      "name": "GLM API（智谱）",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "VLM 图片转文字服务（glm-4.6v / glm-5.3-flash）",
      "provides": "图片描述 + 编码模型",
      "why_need": "VLM 双链路首选（read.ts），响应快、限流额度高",
      "how_integrate": "env ZHIPU_API_KEY → open.bigmodel.cn/api/paas/v4",
      "why_current": "GLM-4.6v 视觉 / GLM-5.3-flash 编码",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-amap-api",
      "name": "高德地图 API",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "地图 POI/路径规划服务",
      "provides": "地图能力",
      "why_need": "地图类任务（amap skill 引用）",
      "how_integrate": "amap-mcp-wrapper.ps1",
      "why_current": "已禁用 mcp-amap",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-lark-api",
      "name": "飞书/Lark API",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "lark-cli 调用的飞书开放平台",
      "provides": "日历/文档/多维表格等",
      "why_need": "lark-suite skill 依赖",
      "how_integrate": "lark-cli",
      "why_current": "启用 lark-suite skill",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-chrome",
      "name": "Chrome 浏览器",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "browser-harness 自动化浏览器",
      "provides": "网页自动化",
      "why_need": "browser-harness skill 依赖",
      "how_integrate": "PowerShell CDP + close-chrome-tabs.ps1",
      "why_current": "WSL2 用 agent-browser",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-deepseek-api",
      "name": "DeepSeek API（官方直连）",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "deepseek-v4-pro/flash/flash-vision-exp 模型 API",
      "provides": "LLM 推理 + 视觉",
      "why_need": "官方直连兜底 Pro 与视觉；主 Agent 默认模型",
      "how_integrate": "env DEEPSEEK_API_KEY → api.deepseek.com/v1",
      "why_current": "承载 deepseek-v4-pro(仅官方) + vision-exp",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-drawio-service",
      "name": "draw.io 服务",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "draw.io 在线/本地图表渲染",
      "provides": "图表导出",
      "why_need": "drawio-worker 子Agent 依赖",
      "how_integrate": "drawio-mcp-minimal + DRAWIO_BASE_URL",
      "why_current": "启用 mcp-drawio",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-sylphx-pdf",
      "name": "@sylphx/pdf-reader-mcp",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "PDF 文本提取 npm 包",
      "provides": "PDF 提取",
      "why_need": "pdf-worker 子Agent 依赖",
      "how_integrate": "npx @sylphx/pdf-reader-mcp",
      "why_current": "启用 mcp-pdf-reader",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-opencode-plugin",
      "name": "@opencode-ai/plugin SDK",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "插件 SDK（node_modules 1.18.x）",
      "provides": "插件钩子类型",
      "why_need": "plugin 开发（已无插件但 SDK 保留）",
      "how_integrate": "node_modules @opencode-ai/plugin",
      "why_current": "插件目录已空",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-opencode-go",
      "name": "OpenCode Go 套餐",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "OpenAI 兼容协议（@ai-sdk/openai-compatible），baseURL=opencode.ai/zen/go/v1。订阅套餐 $10/月($60 额度)，DeepSeek Flash 包月 3x",
      "provides": "deepseek-v4-flash(go) / glm-5.2 / kimi-k2.7-code / qwen3.7-plus / muse-spark-1.3-contributor / hy4-preview / omen-alpha(stealth) 模型",
      "why_need": "覆盖高性价比编码模型（Flash 包月 3x 额度）+ 新增 Muse Spark 1.3/Hy4/Omen Alpha",
      "how_integrate": "env OPENCODE_GO_API_KEY",
      "why_current": "blacklist deepseek-v4-pro（仅官方直连）",
      "layer": 0,
      "layer_type": "external"
    },
    {
      "id": "ext-tavily-api",
      "name": "Tavily Search API",
      "kind": "external",
      "group": "X-外部服务",
      "implementation": "外部搜索 API（web search，1 credit/次），search-methodology/skill 的发现层外部搜索降级链首选",
      "provides": "外部事实搜索/网页检索",
      "why_need": "search-methodology skill 依赖外部搜索后端做发现层；search-worker 子Agent 证据包构建",
      "how_integrate": "env TAVILY_API_KEY → api.tavily.com/search",
      "why_current": "0905 联网搜索能力架构新增；search-methodology/skill 依赖",
      "layer": 0,
      "layer_type": "external"
    }
  ],
  "edges": [
    {
      "from": "oc-app",
      "to": "oc-client",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/app/package.json dependencies.@opencode-ai/client",
      "evidence_example": "packages/app/src/utils/server-health.ts:4",
      "import_refs": 1
    },
    {
      "from": "oc-app",
      "to": "oc-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/app/package.json dependencies.@opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-app",
      "to": "oc-schema",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/app/package.json dependencies.@opencode-ai/schema",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-app",
      "to": "oc-sdk",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/app/package.json dependencies.@opencode-ai/sdk",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-app",
      "to": "oc-session-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/app/package.json dependencies.@opencode-ai/session-ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-app",
      "to": "oc-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/app/package.json dependencies.@opencode-ai/ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-cli",
      "to": "oc-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/cli/package.json dependencies.@opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-cli",
      "to": "oc-sdk",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/cli/package.json dependencies.@opencode-ai/sdk",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-cli",
      "to": "oc-server",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/cli/package.json dependencies.@opencode-ai/server",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-cli",
      "to": "oc-tui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/cli/package.json dependencies.@opencode-ai/tui",
      "evidence_example": "packages/cli/src/tui.ts:1",
      "import_refs": 1
    },
    {
      "from": "oc-client",
      "to": "oc-schema",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/client/package.json dependencies.@opencode-ai/schema",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-client",
      "to": "oc-protocol",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/client/package.json dependencies.@opencode-ai/protocol",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-console-app",
      "to": "oc-console-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-app/package.json dependencies.@opencode-ai/console-core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-console-app",
      "to": "oc-console-mail",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-app/package.json dependencies.@opencode-ai/console-mail",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-console-app",
      "to": "oc-console-resource",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-app/package.json dependencies.@opencode-ai/console-resource",
      "evidence_example": "packages/console/app/src/component/email-signup.tsx:2",
      "import_refs": 19
    },
    {
      "from": "oc-console-app",
      "to": "oc-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-app/package.json dependencies.@opencode-ai/ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-console-core",
      "to": "oc-console-mail",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-core/package.json dependencies.@opencode-ai/console-mail",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-console-core",
      "to": "oc-console-resource",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-core/package.json dependencies.@opencode-ai/console-resource",
      "evidence_example": "packages/console/core/src/aws.ts:2",
      "import_refs": 7
    },
    {
      "from": "oc-console-function",
      "to": "oc-console-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-function/package.json dependencies.@opencode-ai/console-core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-console-function",
      "to": "oc-console-resource",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-function/package.json dependencies.@opencode-ai/console-resource",
      "evidence_example": "packages/console/function/src/auth.ts:13",
      "import_refs": 2
    },
    {
      "from": "oc-console-support",
      "to": "oc-console-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/console-support/package.json dependencies.@opencode-ai/console-core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "oc-effect-drizzle-sqlite",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/core/package.json dependencies.@opencode-ai/effect-drizzle-sqlite",
      "evidence_example": "packages/core/src/database/database.ts:3",
      "import_refs": 3
    },
    {
      "from": "oc-core",
      "to": "oc-effect-sqlite-node",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/core/package.json dependencies.@opencode-ai/effect-sqlite-node",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "oc-llm",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/core/package.json dependencies.@opencode-ai/llm",
      "evidence_example": "packages/core/src/tool-output-store.ts:11",
      "import_refs": 21
    },
    {
      "from": "oc-core",
      "to": "oc-schema",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/core/package.json dependencies.@opencode-ai/schema",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "oc-plugin",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/core/package.json dependencies.@opencode-ai/plugin",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-enterprise",
      "to": "oc-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/enterprise/package.json dependencies.@opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-enterprise",
      "to": "oc-session-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/enterprise/package.json dependencies.@opencode-ai/session-ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-enterprise",
      "to": "oc-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/enterprise/package.json dependencies.@opencode-ai/ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-llm",
      "to": "oc-schema",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/llm/package.json dependencies.@opencode-ai/schema",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-plugin",
      "to": "oc-sdk",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/plugin/package.json dependencies.@opencode-ai/sdk",
      "evidence_example": "packages/plugin/src/index.ts:12",
      "import_refs": 1
    },
    {
      "from": "oc-protocol",
      "to": "oc-schema",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/protocol/package.json dependencies.@opencode-ai/schema",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-sdk-next",
      "to": "oc-client",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/sdk-next/package.json dependencies.@opencode-ai/client",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-sdk-next",
      "to": "oc-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/sdk-next/package.json dependencies.@opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-sdk-next",
      "to": "oc-server",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/sdk-next/package.json dependencies.@opencode-ai/server",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-server",
      "to": "oc-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/server/package.json dependencies.@opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-server",
      "to": "oc-protocol",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/server/package.json dependencies.@opencode-ai/protocol",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-session-ui",
      "to": "oc-client",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/session-ui/package.json dependencies.@opencode-ai/client",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-session-ui",
      "to": "oc-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/session-ui/package.json dependencies.@opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-session-ui",
      "to": "oc-sdk",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/session-ui/package.json dependencies.@opencode-ai/sdk",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-session-ui",
      "to": "oc-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/session-ui/package.json dependencies.@opencode-ai/ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-slack",
      "to": "oc-sdk",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/slack/package.json dependencies.@opencode-ai/sdk",
      "evidence_example": "packages/slack/src/index.ts:2",
      "import_refs": 1
    },
    {
      "from": "oc-stats-app",
      "to": "oc-stats-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/stats-app/package.json dependencies.@opencode-ai/stats-core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-stats-app",
      "to": "oc-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/stats-app/package.json dependencies.@opencode-ai/ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-stats-server",
      "to": "oc-stats-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/stats-server/package.json dependencies.@opencode-ai/stats-core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-tui",
      "to": "oc-core",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/tui/package.json dependencies.@opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-tui",
      "to": "oc-plugin",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/tui/package.json dependencies.@opencode-ai/plugin",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-tui",
      "to": "oc-sdk",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/tui/package.json dependencies.@opencode-ai/sdk",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-tui",
      "to": "oc-ui",
      "mechanism": "workspace-dep",
      "evidence": "@opencode-ai/tui/package.json dependencies.@opencode-ai/ui",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-desktop",
      "to": "oc-app",
      "mechanism": "import",
      "evidence": "packages/desktop/src/renderer/index.tsx:17",
      "evidence_example": "",
      "import_refs": 2
    },
    {
      "from": "oc-opencode",
      "to": "oc-core",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-llm",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-plugin",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-protocol",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-schema",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-sdk",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-server",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-tui",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-codemode",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-http-recorder",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 opencode",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "oc-http-recorder",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 @opencode-ai/core",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-desktop",
      "to": "oc-ui",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 @opencode-ai/desktop",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-cli",
      "to": "oc-script",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 @opencode-ai/cli",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-enterprise",
      "to": "oc-sdk",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 @opencode-ai/enterprise",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-storybook",
      "to": "oc-ui",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 @opencode-ai/storybook",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-storybook",
      "to": "oc-session-ui",
      "mechanism": "semantic-dep",
      "evidence": "stage-01 @opencode-ai/storybook",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "oc-script",
      "mechanism": "workspace-dep",
      "evidence": "v1.18.25 workspace dep",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-httpapi-codegen",
      "to": "oc-client",
      "mechanism": "workspace-dep",
      "evidence": "client depends on httpapi-codegen",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "agent-plan",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "agent-plan",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-schema",
      "to": "agent-plan",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-llm",
      "to": "agent-plan",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-plugin",
      "to": "agent-plan",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-sdk",
      "to": "agent-plan",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-server",
      "to": "agent-plan",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "agent-build",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "agent-build",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-schema",
      "to": "agent-build",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-llm",
      "to": "agent-build",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-plugin",
      "to": "agent-build",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-sdk",
      "to": "agent-build",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-server",
      "to": "agent-build",
      "mechanism": "agent-core",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "agent-pdf-worker",
      "mechanism": "agent-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "agent-architect-worker",
      "mechanism": "agent-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-schema",
      "to": "agent-general",
      "mechanism": "agent-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-schema",
      "to": "agent-explore",
      "mechanism": "agent-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "agent-reflection-worker",
      "mechanism": "agent-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-schema",
      "to": "agent-search-worker",
      "mechanism": "agent-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-schema",
      "to": "mcp-pdf-reader",
      "mechanism": "mcp-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "instr-agent-protocol",
      "mechanism": "instruction-load",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "instr-architecture-behavior",
      "mechanism": "instruction-load",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "instr-auto-mode",
      "mechanism": "instruction-load",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "instr-browser-management",
      "mechanism": "instruction-load",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "instr-requirement-discovery-behavior",
      "mechanism": "instruction-load",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "instr-search-behavior",
      "mechanism": "instruction-load",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "command-reflection",
      "mechanism": "command-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "command-arch",
      "mechanism": "command-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "command-rd",
      "mechanism": "command-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "skill-grill-me",
      "mechanism": "skill-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "skill-headroom",
      "mechanism": "skill-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-core",
      "to": "skill-opencode-config",
      "mechanism": "skill-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "oc-opencode",
      "to": "config-main",
      "mechanism": "config-dep",
      "evidence": "装配层→官方包",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-opencode-go",
      "to": "config-main",
      "mechanism": "external",
      "evidence": "provider Go 套餐",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-deepseek-api",
      "to": "config-main",
      "mechanism": "external",
      "evidence": "provider DeepSeek 官方",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-glm-api",
      "to": "config-main",
      "mechanism": "external",
      "evidence": "provider 智谱 GLM",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-lark-api",
      "to": "skill-lark-suite",
      "mechanism": "external",
      "evidence": "lark-cli 调用飞书",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-chrome",
      "to": "skill-browser-harness",
      "mechanism": "external",
      "evidence": "浏览器自动化",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-sylphx-pdf",
      "to": "skill-pdf-ocr",
      "mechanism": "external",
      "evidence": "PDF 提取",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-sylphx-pdf",
      "to": "mcp-pdf-reader",
      "mechanism": "external",
      "evidence": "PDF MCP 服务",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-amap-api",
      "to": "mcp-amap",
      "mechanism": "external",
      "evidence": "地图 MCP",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-opencode-go",
      "to": "mech-proxy",
      "mechanism": "external",
      "evidence": "境外访问",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-tavily-api",
      "to": "agent-search-worker",
      "mechanism": "external",
      "evidence": "搜索管线依赖 Tavily 外部搜索",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-tavily-api",
      "to": "skill-search-methodology",
      "mechanism": "external",
      "evidence": "搜索方法论依赖 Tavily 后端",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-chrome",
      "to": "skill-search-methodology",
      "mechanism": "external",
      "evidence": "外部搜索降级链 agent-browser",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "ext-chrome",
      "to": "skill-login-auth-channel",
      "mechanism": "external",
      "evidence": "登录态渠道浏览器自动化",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "agent-plan",
      "to": "agent-pdf-worker",
      "mechanism": "delegate",
      "evidence": "plan 委派协议"
    },
    {
      "from": "agent-build",
      "to": "agent-pdf-worker",
      "mechanism": "delegate",
      "evidence": "build 委派协议"
    },
    {
      "from": "agent-plan",
      "to": "agent-general",
      "mechanism": "delegate",
      "evidence": "plan 委派协议"
    },
    {
      "from": "agent-build",
      "to": "agent-general",
      "mechanism": "delegate",
      "evidence": "build 委派协议"
    },
    {
      "from": "agent-plan",
      "to": "agent-explore",
      "mechanism": "delegate",
      "evidence": "plan 委派协议"
    },
    {
      "from": "agent-build",
      "to": "agent-explore",
      "mechanism": "delegate",
      "evidence": "build 委派协议"
    },
    {
      "from": "agent-plan",
      "to": "agent-reflection-worker",
      "mechanism": "delegate",
      "evidence": "plan 委派协议"
    },
    {
      "from": "agent-build",
      "to": "agent-reflection-worker",
      "mechanism": "delegate",
      "evidence": "build 委派协议"
    },
    {
      "from": "agent-plan",
      "to": "agent-search-worker",
      "mechanism": "delegate",
      "evidence": "plan 委派协议"
    },
    {
      "from": "agent-build",
      "to": "agent-search-worker",
      "mechanism": "delegate",
      "evidence": "build 委派协议"
    },
    {
      "from": "agent-plan",
      "to": "agent-architect-worker",
      "mechanism": "delegate",
      "evidence": "plan 委派协议"
    },
    {
      "from": "agent-build",
      "to": "agent-architect-worker",
      "mechanism": "delegate",
      "evidence": "build 委派协议"
    },
    {
      "from": "skill-pdf-ocr",
      "to": "agent-pdf-worker",
      "mechanism": "skill-mandate",
      "evidence": "pdf-ocr OCR 支持"
    },
    {
      "from": "skill-search-methodology",
      "to": "agent-search-worker",
      "mechanism": "skill-mandate",
      "evidence": "search-methodology 强制加载"
    },
    {
      "from": "instr-auto-mode",
      "to": "agent-plan",
      "mechanism": "instruction-load",
      "evidence": "auto-mode.md 作为 agent 指令"
    },
    {
      "from": "instr-architecture-behavior",
      "to": "agent-plan",
      "mechanism": "instruction-load",
      "evidence": "architecture-behavior 作为 agent 指令"
    },
    {
      "from": "instr-search-behavior",
      "to": "agent-plan",
      "mechanism": "instruction-load",
      "evidence": "search-behavior 作为 agent 指令"
    },
    {
      "from": "instr-browser-management",
      "to": "agent-plan",
      "mechanism": "instruction-load",
      "evidence": "browser-management 作为 agent 指令"
    },
    {
      "from": "instr-auto-mode",
      "to": "agent-build",
      "mechanism": "instruction-load",
      "evidence": "auto-mode.md 作为 agent 指令"
    },
    {
      "from": "instr-architecture-behavior",
      "to": "agent-build",
      "mechanism": "instruction-load",
      "evidence": "architecture-behavior 作为 agent 指令"
    },
    {
      "from": "instr-search-behavior",
      "to": "agent-build",
      "mechanism": "instruction-load",
      "evidence": "search-behavior 作为 agent 指令"
    },
    {
      "from": "instr-browser-management",
      "to": "agent-build",
      "mechanism": "instruction-load",
      "evidence": "browser-management 作为 agent 指令"
    },
    {
      "from": "instr-search-behavior",
      "to": "agent-search-worker",
      "mechanism": "route",
      "evidence": "搜索行为路由 search-worker"
    },
    {
      "from": "instr-architecture-behavior",
      "to": "agent-architect-worker",
      "mechanism": "route",
      "evidence": "架构行为层路由 architect-worker"
    },
    {
      "from": "command-reflection",
      "to": "agent-reflection-worker",
      "mechanism": "command-use",
      "evidence": "/reflection 调反射 worker"
    },
    {
      "from": "mech-grill-me",
      "to": "agent-plan",
      "mechanism": "mechanism",
      "evidence": "机制驱动",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-grill-me",
      "to": "agent-build",
      "mechanism": "mechanism",
      "evidence": "机制驱动",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-grill-me",
      "to": "skill-grill-me",
      "mechanism": "mechanism",
      "evidence": "机制源头",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-agents-protocol",
      "to": "agent-plan",
      "mechanism": "mechanism",
      "evidence": "驱动",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-agents-protocol",
      "to": "agent-build",
      "mechanism": "mechanism",
      "evidence": "驱动",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-agents-protocol",
      "to": "skill-agency-agents",
      "mechanism": "mechanism",
      "evidence": "角色匹配",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-gate",
      "to": "agent-plan",
      "mechanism": "mechanism",
      "evidence": "门控",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-gate",
      "to": "agent-build",
      "mechanism": "mechanism",
      "evidence": "门控",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-variant",
      "to": "config-main",
      "mechanism": "mechanism",
      "evidence": "配置变体",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-reflection-check",
      "to": "agent-reflection-worker",
      "mechanism": "mechanism",
      "evidence": "驱动",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-reflection-check",
      "to": "command-reflection",
      "mechanism": "mechanism",
      "evidence": "驱动",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-reflection-check",
      "to": "agent-plan",
      "mechanism": "mechanism",
      "evidence": "周期末",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-memory-gate",
      "to": "config-main",
      "mechanism": "mechanism",
      "evidence": "守护（MEMORY 硬门禁指向 config）",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-memory-gate",
      "to": "command-reflection",
      "mechanism": "mechanism",
      "evidence": "审阅",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-cache",
      "to": "instr-auto-mode",
      "mechanism": "mechanism",
      "evidence": "共享前缀",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-parallel",
      "to": "agent-explore",
      "mechanism": "mechanism",
      "evidence": "并行",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-parallel",
      "to": "agent-general",
      "mechanism": "mechanism",
      "evidence": "并行",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-output",
      "to": "skill-headroom",
      "mechanism": "mechanism",
      "evidence": "压缩",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-fault",
      "to": "agent-general",
      "mechanism": "mechanism",
      "evidence": "容错",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-coding-safety",
      "to": "agent-build",
      "mechanism": "mechanism",
      "evidence": "安全编码",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-mission-archive",
      "to": "agent-plan",
      "mechanism": "mechanism",
      "evidence": "留档",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-mission-archive",
      "to": "config-main",
      "mechanism": "mechanism",
      "evidence": "路径",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-browser-tabs",
      "to": "skill-browser-harness",
      "mechanism": "mechanism",
      "evidence": "标签管理",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-proxy",
      "to": "config-main",
      "mechanism": "mechanism",
      "evidence": "联网",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-proxy",
      "to": "agent-general",
      "mechanism": "mechanism",
      "evidence": "子Agent联网",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-subagent-rules",
      "to": "agent-pdf-worker",
      "mechanism": "mechanism",
      "evidence": "子Agent规范",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-subagent-rules",
      "to": "agent-search-worker",
      "mechanism": "mechanism",
      "evidence": "子Agent规范",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-coding-discipline",
      "to": "agent-build",
      "mechanism": "mechanism",
      "evidence": "编码纪律",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-coding-discipline",
      "to": "agent-plan",
      "mechanism": "mechanism",
      "evidence": "编码纪律",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-session-memory",
      "to": "config-main",
      "mechanism": "mechanism",
      "evidence": "compaction 压缩配置",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-session-memory",
      "to": "instr-auto-mode",
      "mechanism": "mechanism",
      "evidence": "压缩模板源",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-architecture",
      "to": "skill-architecture-judgment",
      "mechanism": "mechanism",
      "evidence": "机制源头",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-architecture",
      "to": "agent-architect-worker",
      "mechanism": "mechanism",
      "evidence": "驱动",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-architecture",
      "to": "instr-architecture-behavior",
      "mechanism": "mechanism",
      "evidence": "行为层",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-architecture",
      "to": "command-arch",
      "mechanism": "mechanism",
      "evidence": "命令入口",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-architecture",
      "to": "config-main",
      "mechanism": "mechanism",
      "evidence": "配置",
      "evidence_example": "",
      "import_refs": 0
    },
    {
      "from": "mech-architecture",
      "to": "mech-gate",
      "mechanism": "mechanism",
      "evidence": "门控",
      "evidence_example": "",
      "import_refs": 0
    }
  ],
  "groups": [
    "G9-UI组件",
    "G13-边缘服务",
    "G3-客户端",
    "G14-工具",
    "G10-应用",
    "G2-通信协议",
    "G11-文档站点",
    "G16-Console",
    "G18-集成",
    "G12-沙箱",
    "G17-Stats",
    "G5-LLM请求层",
    "G7-插件SDK",
    "G8-终端UI",
    "G1-数据模型",
    "G15-存储适配",
    "G19-主入口",
    "G4-服务端",
    "G6-核心服务",
    "AG1-主Agent",
    "AG2-子Agent",
    "AG3-MCP",
    "AG4-指令",
    "AG5-工具插件",
    "A6a-角色调度",
    "A6n-架构判断",
    "A6e-浏览器",
    "A6a-配置知识",
    "A6c-DAG方法",
    "A6d-前端设计",
    "A6o-交付发布",
    "A6h-上下文压缩",
    "A6i-简历求职",
    "A6q-知识库构建",
    "A6f-办公集成",
    "A6j-联网搜索",
    "A6l-OpenSpec工作流",
    "A6g-文档处理",
    "A6m-Superpowers",
    "AQ-自进化机制",
    "AG6-配置本体",
    "X-外部服务"
  ],
  "stats": {
    "nodes": 133,
    "edges": 177,
    "layers": 8,
    "groups": 42,
    "has_cycle": false,
    "pkg_nodes": 36,
    "asm_nodes": 87,
    "ext_nodes": 10,
    "mech_nodes": 18
  }
}