Skip to content

Public API 面(Public API Surface) ​

本清单是「一个 API 是 public 还是 internal」的判定 SSOT。目标是:维护者 10 分钟内能对任意符号做出判断,不需要读实现。

分三档:

档位标签含义
Stable Publicstable / experimental用户侧创作面,承诺 semver(experimental 可在 minor 中调整,调整前在 changelog 明示)
Internalinternal框架内部机制。可读、可调试,但不承诺不 break,任何版本都可能变
Deprecateddeprecated已迁移/不再推荐。保留兼容一个 minor 周期后删除

标注位置:源码 JSDoc(@public / @internal)优先标注入口文件;本清单为完整列表,二者冲突时以本清单为准并提 PR 修正。

Stable Public(承诺 semver) ​

define* 创作函数 ​

应用侧请从 zhin.js/* 门面子路径导入(依赖 zhin.js 即可)。下表「实现包」是 Feature provider / platformFeatures 挂载名,不要再单独 pnpm add 这些实现包。

API稳定性作者 import实现包一句话
definePluginstablezhin.js@zhin.js/plugin-runtime约定式插件入口,plugin.ts 默认导出
defineCommandstablezhin.js/command@zhin.js/command命令模块(commands/*/index.ts 默认导出)
defineAdapterstablezhin.js/adapter@zhin.js/adapter适配器模块(adapters/*/index.ts 默认导出),create(context) 默认返回 { client, connect, activate?, send },复杂协议可返回 Endpoint 子类
defineComponentstablezhin.js/component@zhin.js/componentSatori/SSR 组件(components/*/index.ts(x) 默认导出)
defineMiddlewarestablezhin.js/middleware@zhin.js/middleware中间件模块(middlewares/*/index.ts 默认导出)
defineHandlerstablezhin.js/handler@zhin.js/handlerLifecycle 事件处理器(handlers/<name>/index.ts 默认导出;带点事件显式声明 event)
defineAgentToolexperimental@zhin.js/tool(tools/<name>/index.ts)@zhin.js/toolAI 工具模块,Agent 自动发现
defineAgentPromptSectionexperimental@zhin.js/prompt-section@zhin.js/prompt-sectiongeneration-owned Prompt 分段,声明 layer、预算保留级别与适用 profile
defineMcpexperimental@zhin.js/mcp-feature@zhin.js/mcp-featuregeneration-owned MCP 连接(mcps/<name>/index.ts)
defineScheduleexperimental@zhin.js/schedule-feature@zhin.js/schedule-featuregeneration-owned 定时任务(schedules/<name>/index.ts 或 plugin.ts 注入)

注意:没有 defineAgentSkill。Agent 技能是纯 Markdown(skills/<name>/SKILL.md,由 @zhin.js/skill 的 parseSkillMarkdown 解析),不是代码符号。

约定目录与文件 ​

约定稳定性消费方一句话
plugin.tsstablezhin.js插件根入口,默认导出 definePlugin(...)
commands/stable@zhin.js/command(作者 import:zhin.js/command)commands/**/index.ts;支持 [name] / [[name]] / [...name] 动态参数目录
adapters/stable@zhin.js/adapter(作者 import:zhin.js/adapter)adapters/<name>/index.ts
middlewares/stable@zhin.js/middleware(作者 import:zhin.js/middleware)middlewares/<name>/index.ts
handlers/stable@zhin.js/handler(作者 import:zhin.js/handler)handlers/<name>/index.ts;同目录其他文件是 helper
tools/experimental@zhin.js/tooltools/<name>/index.ts 是公共 Tool;Agent/Skill 私有 Tool 放在所属目录的同构 tools/ 下
hooks/experimentalzhin.js/agent/hookshooks/<name>/index.ts;Agent/Skill 私有 Hook 放在所属目录的同构 hooks/ 下
skills/<name>/SKILL.mdexperimental@zhin.js/skill / Agent 发现Skill Markdown,可在同目录附带参考资料与脚本(随 npm 包发布)
mcps/experimental@zhin.js/mcp-featuremcps/<name>/index.ts,替代旧 connection 入口
schedules/experimental@zhin.js/schedule-featureschedules/<name>/index.ts;也允许 plugin.ts 注入
pages/experimental@zhin.js/console-pagepages/<name>/index.ts(x);nav / footer 是布局槽

Host Token(context.resources.use(token) 消费) ​

Token稳定性来源包一句话
databaseHostTokenstablezhin.js数据库 Host 能力
scheduleHostTokenstablezhin.js定时任务 Host 能力
outboundHostTokenstablezhin.js跨平台出站消息能力
outboundMessageTokenstable@zhin.js/core(zhin.js/core/runtime)入站消息投递网关(适配器用)
httpHostTokenstable@zhin.js/host-httpHTTP/WS Host 能力(Console、Webhook 用)

Agent 能力资源 ​

API稳定性来源包一句话
ctx.agent / AgentResourceHubexperimental@zhin.js/agentgeneration-scoped Skill/SubAgent/Hook 支持资源;Tool 与 MCP 分别由对应 Feature 投影

Removed Legacy Hooks ​

API稳定性来源包一句话
usePlugin() / getPlugin()removed无(不再导出)唯一入口为 definePlugin + zhin runtime start
MessageCommand / CommandFeatureremoved无(不再导出)命令统一使用 defineCommand + Runtime CommandIndex
bootstrapNode / zhin.js/noderemoved无(子路径已删除)唯一启动入口为 zhin runtime start
AgentMessageSenderExtra / SenderScoperemoved无(不再导出)参与者身份只存于 UserMessage.actor
buildSenderPrefix / applySenderExtraToUserMessage / stripSenderPrefixFromTextremoved无(不再导出)参与者标签由 AI 边界从 actor 渲染,不再从文本或 extra 推断身份
buildSenderPrefixForMessageremoved无(不再导出)Core trigger 只返回用户正文,不编码 Agent 身份

zhin.config.yml 顶层键 ​

键稳定性消费方一句话
plugins.<key>stable@zhin.js/cli 装配层插件启用与插件级配置
endpoints[i]stable@zhin.js/cli 装配层适配器实例列表(含 master / trusted / commandPrefix)
commandPrefixstableMessageDispatcher命令前缀,实例顶层 + endpoints 逐项覆盖
aistable@zhin.js/cli AI Host 装配AI/Agent 配置
httpstable@zhin.js/host-http 装配HTTP Host 配置
databasestabledatabase Host 装配数据库配置
speechstablespeech Host 装配语音配置
log_levelstable@zhin.js/cli日志级别(ZHIN_LOG_LEVEL 可覆盖)

其余 Host 级键(mcp / a2a / htmlRenderer / assistant)同属 stable 顶层键,完整表见 配置概览。

CLI 命令 ​

命令稳定性来源包一句话
zhin runtime startstable@zhin.js/cliPlugin Runtime 启动入口(composition root)
zhin setupstable@zhin.js/cli已有项目增量配置向导
zhin doctorstable@zhin.js/cli环境/配置体检
zhin agent legacy-runs <input>experimental@zhin.js/cli只读审计已删除的 legacy Run export;输出到文件时仅 create-only,不写新 Workroom Journal
zhin agent legacy-payloads <input> --kind <kind>experimental@zhin.js/cli只读扫描 legacy 内嵌 Workroom payload;只输出 content-free quarantine audit/proposal,不自动删除或迁移
pnpm create zhin-appstablecreate-zhin-app新建项目脚手架

Internal(可读但不承诺不 break) ​

API稳定性来源包一句话
RootRuntime / RootControllerinternal@zhin.js/plugin-runtime插件树与 generation 的根控制器
CapabilitySlotinternal@zhin.js/plugin-runtime能力槽,feature 与 projection 之间的载体
SnapshotStore / RuntimeSnapshotinternal@zhin.js/plugin-runtime原子快照存储,projection 的输入
AdapterIndexinternal@zhin.js/adapter适配器 projection,快照 → Endpoint 装配
CommandIndexinternal@zhin.js/command命令 projection,快照 → 命令路由表
ToolIndex / SkillIndex / McpIndex / PageIndex / LayoutIndex 等internal各 feature 包其余 projection,同属内部机制
defineFeatureProvider(Feature Provider 协议)internal@zhin.js/feature-kit新增 feature 类型的协议,面向框架扩展者而非插件作者
MessageDispatcherinternal@zhin.js/core/runtimeInboundRuntime 持有的 generation-owned 消息分发器
EndpointRuntimeinternal@zhin.js/core/runtimeImRuntime.endpoints 持有的 generation-leased Endpoint 目录、控制与管理边界
RuntimeMessageEventSourceinternal@zhin.js/core/runtimeImRuntime.messageEvents 暴露的只读消息观察端口;发布权留在 Core
@zhin.js/agent/runtime Workroom tokens / composition portsinternal@zhin.js/agentgeneration-owned Host 装配机制;不是插件作者可直接取得 Run 状态写权限的 API
Workroom / Portfolio / Data Governance domain contractsinternal@zhin.js/agent领域值对象、策略和持久化端口;不依赖 Agent runtime/config,Host 适配器从 @zhin.js/agent/runtime 组合
Agent Host 装配(composeZhinAgentRuntime)internal@zhin.js/agent/runtimeCLI composition root 使用的装配函数;返回显式 host 契约,不暴露 asPrivate 转换口
classic ToolRuntime / builtin policy resolverinternal@zhin.js/agent 包内实现旧独立执行链的内部机制;生产回合只使用 generation-owned TurnToolRuntime
basic/cli/src/plugin-runtime/*-installer.tsinternal@zhin.js/cliRoot Host 安装器(database / schedule / outbound / inbox / http / console / agent / speech / html-renderer / protocol),装配细节随时可变

Deprecated / 已迁移 ​

项稳定性现状一句话
legacy usePlugin() / getPlugin() 插件体系removed源码与 public surface 均已删除唯一入口:definePlugin + zhin runtime start
MessageCommand / classic CommandFeatureremoved源码与 public surface 均已删除命令统一走 defineCommand + Runtime CommandIndex
Core ToolFeature / SkillFeatureremoved源码与 public surface 均已删除Tool / Skill 统一走 Feature provider、generation projection 与 Agent CapabilityIngress
Agent FeatureCapabilityIngressremoved源码与 public surface 均已删除Agent 只保留读取 Runtime snapshot 的 CapabilityIngress
Agent AgentFeature / MCPFeatureremoved源码与 public surface 均已删除Agent / MCP 声明统一由各自 Feature provider 投影为 generation-owned AgentIndex / McpIndex
@zhin.js/tools 与 Agent 作者侧 Tool bridgeremoved子路径、重复 definition/context/discovery 均已删除Tool 创作统一使用 @zhin.js/tool 与 tools/<name>/index.ts
@zhin.js/core/tool-zodremovedCore 子路径与 Zod 3 结构兼容已删除Tool 输入 Schema 统一由 @zhin.js/tool 的 Zod 4 / JSON Schema 契约拥有
Core / Agent deprecated 同义 APIremoved死别名、旧类型与始终失败的迁移函数已删除使用 canonical Segment、Turn、Schedule、Prompt 与 executor-owned lifecycle API
Schedule resolveAdapter delivery fallbackremovedTaskExecutor 与 deliverScheduleToAdapter 必须注入 NotificationRouterSchedule 出站由 composition root 创建的 Router 独占路由与发送权威
classic adapter-derived Message genericsremovedMessage / Side Event 的 adapter identity 为 Runtime 字符串canonical IM 契约不再反向依赖经典 Adapter、Endpoint 或 ProcessAdapter 类型注册表
classic Plugin tree Agent discoveryremovedworkspace 扫描接收项目根;单包扫描接收目录描述符插件 Agent 由 generation Feature provider 发现,不再递归经典 Plugin 对象树
Agent classic Plugin / Adapter runtime bridgesremoved全局 Adapter registry 清理、未挂载 typing 示例与 BotWithEditing 已删除Agent 平台反馈依赖 @zhin.js/adapter 的 EndpointControl 端口;工具权限只读当前 turn 的显式消息上下文
Core ProcessAdapter / process runtime IOremoved未被生产装配的经典内置适配器与 stdin 辅助已删除本地交互由 Sandbox Adapter 与 CLI Host 提供,不再占用经典 Adapter 注册表
Adapter.Registry / Adapter.register / Adapter.Factoryremoved进程级工厂注册表及其唯一自证测试已删除Adapter 定义与实例只由 generation-owned AdapterIndex 发现和持有
Plugin.adapters / Plugin.injectAdapterremoved经典 Plugin 的重复 Adapter 目录与 service-locator helper 已删除当前 Endpoint 目录只能从 generation-owned AdapterIndex 查询
classic Core Adapter / Endpoint runtimeremoved类、类型、capability WeakMap、连接与生命周期 helper 及专属测试已删除唯一实现是 zhin.js/adapter 的 defineAdapter、Endpoint<TClient> 与 generation-owned AdapterIndex
classic Core Plugin runtimeremovedPlugin 类、Context ALS、重复 Dispatcher 与入站管线均已删除插件生命周期由 @zhin.js/plugin-runtime 的 generation snapshot 管理;IM 分发只走 ImRuntime
Kernel PluginBase / mutable Feature registryremovedPlugin tree、字符串 DI、prototype extension registry 与自证测试已删除生命周期统一属于 @zhin.js/plugin-runtime;能力发现和投影统一属于 @zhin.js/feature-kit
Kernel global Schedule getters/settersremovedget/setScheduleEngine 与 get/setScheduler 已删除每个 ScheduleJobEngine 私有持有并销毁自己的调度引擎,Host 调度走 generation-owned token
bootstrapNode / zhin.js/noderemoved不再导出唯一启动入口:zhin runtime start
AgentOrchestrator / ResourceHubremoved兼容名称不再导出能力注册改用 AgentResourceHub;Workroom 编排改走 Kernel 与专用 typed ports
「host 插件」叙事deprecated文档已收口Host 能力改为 token 化(见上表 Host Token),不再是插件概念
examples/test-bot 作为用户路径deprecated维护者厨房水槽用户路径为 minimal-bot(Stable)→ full-bot(L4),勿把 test-bot 配置当模板
plugin.yml / Core PluginManifestremoved构建识别、源码类型与仓库重复清单均已删除插件身份与清单只认严格校验的 package.json#zhin

判定规则(新增 API 放哪档) ​

按顺序问三个问题:

  1. 这是插件作者/用户会直接写的东西吗?(define* 函数、约定目录、配置键、CLI 命令、Host token) → 是:默认 Stable Public。AI/Console 等尚未收敛的创作面先标 experimental,收敛后升 stable。
  2. 这是快照 → projection → 装配链路里的机制吗?(*Index、SnapshotStore、CapabilitySlot、installer、dispatcher、Feature Provider 协议) → 是:默认 Internal。内部机制即使被导出(跨包复用)也不因导出而变成 public。
  3. 要删除/替换一个已有 public API? → 先标 deprecated(JSDoc @deprecated + 本清单移动 + changelog 明示),保留至少一个 minor 周期再删除;删除本身属 breaking,走 major 或按仓库发版约定处理。

兜底:拿不准的按 Internal 处理——从 internal 升 public 不 break 任何人,反过来则是 breaking。

相关文档:代码约定、开发流程与门禁、插件模型。