N.I.L.O. Docs

CLI API

本文档面向开发者,记录当前 nilo CLI 的公开命令面、隐藏兼容入口和 Core 调用边界。CLI 负责终端使用体验,业务能力必须来自 Core service。

入口

核心边界

CLI -> Core 或 Runtime
MCP -> Core 或 Runtime

CLI 不得直接调用 Notion SDK,也不得导入 MCP 适配层。通用业务能力属于 Core,通用进程/执行能力属于 Runtime;Core/Runtime 不得反向导入 CLI 或 MCP。新增命令时应先确认对应通用能力已经存在;CLI 模块只定义 CLI 特有的参数解析、展示和交互。

公开 Root 命令

projectlocal、root statusconfig global/localconfig set/get/unset/list 只保留为隐藏兼容入口,不属于公开命令面。

CLI 使用类似 Git/gh 的作用域:全局命令可以在任意目录运行;项目级命令从当前目录向上查找最近的 .notion_mcp/,最多查到用户根目录。

短别名契约

每个公开规范命令路径都有一个显式英文字母别名,长度不超过六个字符。规范全称仍是文档主接口;短别名调用相同 callback,并在普通 help 中隐藏以保持帮助简洁。

Root 示例:

全称 别名
init ini
version ver
config cfg
pwd cwd
page pg
block blk
database db
data-source ds
server srv

Leaf 示例包括 retrieve -> getcreate -> newupdate -> updtrash -> delserver run -> server start。完整且经过校验的映射定义在 src/nilo/cli/aliases.py

Function Calling 错误契约

只要调用参数中任意位置出现 --json,Click/Typer 用法错误就输出为一行紧凑 JSON。稳定 envelope 包含 ok=false,以及带有 typecodemessagedetails.exit_codeerror object。稳定用法错误码包括 cli_missing_parametercli_invalid_parametercli_unknown_optioncli_usage_error。不带 --json 的人类调用继续使用普通 help 和错误格式。

Project Context

项目上下文由 Core 提供:

ProjectResolver
ProjectConfigStore
AttachmentStore
ContextResolver

解析规则:

explicit id > attached state > error

项目级配置:

.notion_mcp/config.json

Attach state:

.notion_mcp/state/page.attach.json
.notion_mcp/state/database.attach.json

项目级配置和 attach state 不得保存 token。

项目级配置只能覆盖非敏感 Core 设置,全局凭据始终保存在全局配置中。项目初始化拒绝把用户根目录作为项目根,并在项目根 .gitignore 中增量加入 .notion_mcp/

Page CLI

公开命令:

Page id inputs are normalized through src/nilo/core/identifiers.py. Public <page_id> arguments accept raw page ids, copied Notion URLs, and Markdown links that contain Notion URLs.

隐藏兼容入口保留给旧的 page content/current/deattach aliases、旧 page-scoped block group 和旧 page insert group。它们不得作为公开用户命令记录。

Block CLI

公开命令:

insert-before 不作为稳定公开命令。block remove 只作为隐藏兼容别名,行为等同 trash。

Database 和 DataSource

语义边界:

database = container
data_source = table under database
page = page or data source entry
block = page content node

容器级能力使用 database。表级 schema/query/templates/page-entry 能力使用 data-source。只有使用当前绑定 database 的 active data source 时,才允许 database 快捷命令。

Database 容器命令

database create 创建 database 容器,并创建 initial data source。database update 只允许容器级更新,不用于修改 data source schema。

Database 快捷命令

这些命令只作用于 attached database 的 active data source:

公开 CLI 不提供 database query --data-sourcedatabase page create <data_source_id>database page update <page_id> 或三参数 database property rename。显式 data source 操作必须使用 data-source;page property 更新使用 page update

DataSource 命令

其他对象域

Raw API 是高级兜底入口,不应作为普通 page/database 编辑路径。

移除的旧入口

以下旧 root 命令不再作为公开 CLI 入口:

配置使用 nilo config --global ...;MCP server 使用 nilo server ...