Skip to main content

Linkly AI CLI 介绍

Linkly AI CLI 是一个命令行工具,通过连接 Linkly AI Desktop 的 MCP 服务,让你在终端中搜索、浏览和阅读本地文档。它同时也是 AI Agent(如 Claude Desktop、Cursor)与 Linkly AI 之间的桥梁。

终端搜索

在命令行中直接搜索你的文档,适合开发者和极客用户

MCP 桥接

以 stdio MCP 模式运行,让 Claude Desktop、Cursor 等 AI 工具调用 Linkly AI

安装

在终端中运行:
或通过 Homebrew 安装:
已经装了 Linkly AI Desktop 的话,也可以在桌面端安装 CLI:在首次启动引导的「接入 Agent」一屏点「安装」,会同时装好 CLI 与 Skills;或在主窗口「Agent 使用」页的「高级」区,在「Linkly AI CLI」一行点「安装」。如果弹出「还差最后一步」,点「设置」,让终端能直接运行 linkly 命令。
安装完成后,验证安装:
默认情况下,CLI 通过 ~/.linkly/port 文件自动发现并连接本地桌面应用。你也可以通过局域网或云隧道连接远程设备 — 参见下方连接模式。

使用方法

CLI 遵循 search → grep 或 outline → read 的渐进式工作流:先搜索找到目标文档,再用 grep 定位模式或查看大纲了解结构,最后阅读具体内容。当用户描述的容器(“在我微信里”、“Notion 笔记里”)真实路径未知时,可在 search 之前先调用 find-paths 定位。
每条成功的命令输出末尾都会带一行 [meta] now=2026-05-08T...Z 的 UTC 时间戳(JSON 模式则是顶层 _meta.now 字段)。这是 desktop 提供给 AI 助理用来推算”上个月”等相对时间的元信息,对人类用户而言可以忽略;脚本处理时建议过滤掉最后一行再做后续解析。

检查连接状态

返回 Linkly AI Desktop 的运行状态、版本号、已索引文档数量和索引状态。

搜索文档

搜索你的本地文档,返回最相关的结果列表,包含标题、路径、匹配度和内容摘要。 常用参数:
--modified-after / --modified-before 接受 ISO 8601 UTC 格式,可以是日期 2024-01-01(视为 00:00:00Z)或完整 RFC 3339 时间戳 2024-01-01T00:00:00Z。--time-sort 可选 newest / oldest,缺省则保留 BM25 + 向量混合的相关度排序。
--scope notes 会把结果限定在你的笔记中,并且会忽略 --library 和 --path-glob —— 这两个过滤条件会被静默丢弃,而不是报错。

查看文档大纲

获取文档的结构化大纲和元数据。DOC_ID 从搜索结果中获取。支持一次查看多个文档,也可以用 - 从管道读入 ID:
大纲较长时,部分节点会被折叠。用 --expand 指定要展开的节点 ID,多个用逗号分隔,其余节点折叠;不加这个参数时,自动决定展开哪些:
大纲功能对 Markdown、DOCX、DOC、PowerPoint (PPTX)、XLSX、CSV、EPUB 和 RTF 文档效果最好,这些格式的标题结构可以被解析。对于纯文本或无书签的 PDF,建议直接使用 read 命令。

正则匹配文档内容

在一个或多个文档中搜索正则表达式模式匹配,用于查找特定文本(术语、人名、日期、标识符等):

阅读文档内容

阅读一个或多个文档的完整内容,输出带有行号的文本。对于长文档,可以分页阅读:
使用 --json 时,多个文档会以 JSON Lines 格式输出 —— 每行一个对象。只传单个 ID 时仍然输出单个对象,因此现有脚本不受影响。
分页策略: 默认每次读取 200 行(最多 500 行)。对于长文档,通过调整 --offset 逐步读取:

路径定位(find-paths)

按关键词在已索引文档的文件路径上做模糊匹配,聚合到文件夹粒度,返回最匹配的若干候选目录。其定位是 search 的辅助工具:当用户描述容器名(“在我的微信里”、“在 Notion 笔记里”)但你不知道这个容器在磁盘上的真实路径时,先用 find-paths 探测真实路径,再把它作为 search 的 --path-glob 参数。当目录名含 glob 元字符(* ? [)时,可直接使用返回的 path_glob 字段——它已转义,能字面匹配该目录。 典型用法(两步工作流):
多变体匹配: --patterns 接受逗号分隔的多个关键词,工具内部会以 OR 关系做子串匹配。建议一次传入多个变体(中英对照、应用真实命名等),最大化首次召回率:
find-paths 是”找文件夹”工具,不是”找文件”工具:仅当关键词命中目录段才计入;如果关键词只命中文件名段(“孤儿文件”),会被静默丢弃。如果某个查询返回 0 个目录但你确认有匹配文件,应回退到直接用 linkly search。

知识库与概览(list-libraries、explore)

列出可用的知识库。返回的库名可以用在其他命令的 --library 参数里。
给出全部文档或某个知识库的整体概览,适合在搜索之前先了解有哪些资料。--library 接受库名或 local://<id>;使用 --remote 时也可以传 cloud://<owner>/<slug>。

笔记

Linkly AI 会把简短的 Markdown 笔记保存在你的知识库目录中。它们就是普通的本地文件 —— 不会被上传 —— 并且和其他文档一样会被索引。
编辑已有笔记需要它的 note_id 和当前 version,两者都可以从 linkly list --scope notes 的输出中获取:
正文里的 #标签 就是笔记的标签——--tags 只能追加(删标签要从内容里删掉对应的 #标签)。0.11.0 之前的 Desktop 则是编辑时必须传 --tags 且按全量替换处理。--base-version 是并发校验:如果笔记在你读取之后被改动过,命令会以 NOTE_VERSION_CONFLICT 失败,而不是覆盖写入。笔记内容只支持受限的 Markdown 子集(段落、加粗、删除线、列表);标题、代码、链接和表格会被拒绝。

诊断连接(doctor)

检查本机桌面应用的连接;保存过远程 Key 或局域网连接的话,也一并检查。每条连接单独显示一组结果,失败时附带处理建议。只要有一条连接可用,就退出 0。 加上 --remote、--lan 或 --endpoint / --token 时,只检查那一条连接,退出码也只看它:

管理 Skills(skills)

install 把 Skills 装到 ~/.agents/skills/linkly-ai,并在 ~/.claude/skills/linkly-ai 建立指向它的链接。详见使用 Skills。 Skills 有新版本时,命令输出末尾会带一行提示,最多每 4 小时一次。设置环境变量 LINKLY_NO_SKILLS_HINT=1 可以关闭这条提示。在 MCP 客户端的配置里设置这个变量,linkly mcp 桥接也不再提示。

Shell 补全

输出 bash、zsh、fish、powershell 或 elvish 的补全脚本。
配置完成后请打开一个新的 shell。补全脚本是静态的 —— 它不会与 Linkly AI Desktop 通信,所以桌面应用未运行时也能用,也不会拖慢你的命令行提示符。

MCP 模式

以 stdio MCP 服务器模式运行,将 Linkly AI 的工具暴露给 MCP 兼容的 AI 客户端。 上游连接方式决定了客户端能访问到的范围:
--remote 是唯一能访问云端知识库的桥接模式,需要先用 linkly auth login 登录(参见远程模式)。
桥接不支持连接局域网内其他设备上的桌面应用。局域网内的 AI 客户端请直接用 HTTP 连接桌面应用(参见局域网访问),只支持 stdio 的客户端可以改用 linkly mcp --remote。
--client <名称> 用于在桌面应用的访问日志中标明应用名称,如下面的示例所示。使用 --remote 时,这个名称也会发送给云端网关。 配置 Claude Desktop 等本地 AI 应用: 将以下内容添加到 Claude Desktop 等应用的配置文件中:
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
配置 Cursor: 在 Cursor 中打开 Settings → MCP Servers → Add Server,添加:
  • Name: linkly-ai
  • Command: linkly mcp --client cursor

更新 CLI

自动检查并更新到最新版本。CLI 在每次启动时也会在后台检查更新,如有新版本会提示你运行此命令。

连接模式

CLI 支持三种方式连接你的 Linkly AI 知识库: 不加 --lan 或 --remote 时,CLI 只连接本机的桌面应用。
API Key(lkai_ 开头)和局域网访问令牌等同于读取你本机资料库的钥匙。不要把它们粘贴进任何 AI 对话(ChatGPT、Claude、Cursor、Codex、豆包、Kimi 等),也不要让 AI 助理替你执行 linkly auth set-key:对话内容会发送给模型服务商、写进会话记录,有的还会同步到云端。让 AI 助理连接远程时,用下面的 linkly auth login 两步登录,你只需在浏览器里授权;set-key 由你本人在自己的终端里运行。Key 已经出现在对话里的话,到控制台撤销并重新生成;局域网令牌在「查看 MCP 接入配置」里重新生成。

本地模式(默认)

无需额外参数,CLI 自动读取 ~/.linkly/port 发现运行中的桌面应用:

局域网模式

连接局域网内其他设备上的 Linkly AI 实例。地址和令牌要从那台设备上获取:在它的桌面应用中打开「Agent 使用」页,在「管理」区打开「允许局域网访问」,再点「集成」区的「查看 MCP 接入配置」,从「局域网」一节复制(详见局域网访问)。 然后在这台机器上,由你本人在自己的终端里保存一次:
之后在任意命令中使用 --lan:
不想保存时,也可以每次直接传入地址和令牌:
令牌重新生成后,用新令牌再执行一次 auth set-key --lan 即可。不再需要时,用 linkly auth logout --lan 删除保存的局域网配置。
保存局域网连接和 --lan 参数需要 CLI 1.0.0 或以上。CLI 只能保存一个局域网连接,再次执行 auth set-key --lan 会覆盖之前保存的地址和令牌。要临时连接另一台设备,用 --endpoint 和 --token。

远程模式

通过云隧道从任何地方连接你的知识库。首先登录一次:
CLI 会打印一个一次性链接和一个确认码(XXXX-XXXX),能打开浏览器时会自动打开。在任意设备上打开这个链接(CLI 跑在服务器上时,用手机打开也可以),登录后核对确认码与终端里的一致,点击 授权,CLI 随即保存一个新签发的 API Key。链接 10 分钟内有效;授权页会显示你正在授权的账号、确认码、发起请求的设备(由该设备自行上报)以及将授予的权限。如果不想让 CLI 尝试打开浏览器,加上 --no-browser,它只打印链接。 然后在任意命令中使用 --remote:
Agent 和脚本无法在前台等待时,可以把登录拆成两步。Agent 只把链接和确认码交给你,Key 由 CLI 自动保存,不经过对话。两步要在同一个环境、同一个系统用户、同一个配置目录下执行:
--wait 默认等待 300 秒(可用 --timeout 修改),超时后返回错误码 timeout;只要链接仍在有效期内,再执行一次即可。--json 模式下失败时会带上 code:timeout、expired、denied、no_pending_login、login_in_progress(改用 --wait,或用 --restart 重新开始)、already_logged_in(先执行 linkly auth logout)和 network。每条提示都会写明下一步该执行的命令。 每次登录都会创建一个新的 API Key,名为 cli-<hostname>-xxxx,可以在 控制台 中查看和撤销。每个账号最多持有 10 个 API Key;达到上限时,授权页会给出提示。登录成功只证明了账号身份,并不代表云端知识库或桌面端已经可以访问。 更习惯粘贴 Key?也可以在 控制台 创建一个,然后由你本人在自己的终端里保存:
随时可以查看或清除已保存的 Key:
logout 会同时撤销由 auth login 签发的 Key,约 90 秒内失效。用 set-key 保存的 Key 只会从本机删除,因为它可能还在别处使用;如有需要,请到控制台撤销。 凭据(以及尚在等待授权的登录)默认保存在 ~/.linkly。设置 LINKLY_CONFIG_DIR 可以换一个位置,例如一个 Agent 在同一个系统账户下为多个人服务时,给每个用户各分配一个目录。每个目录只保存一个账号。本机桌面端的发现(~/.linkly/port)不受影响。
--lan、--remote 和 --endpoint 不能同时使用。--endpoint 和 --token 必须一起使用,此时不会读取保存的局域网配置。

参数说明

全局选项

--lan、--endpoint、--token 和 --remote 可用于各个文档类命令(search、grep、outline、read、list、note-save、find-paths、explore、list-libraries)以及 status 和 doctor。mcp 命令只接受 --remote。--json 对 auth set-key、self-update、skills install、skills update、completions 和 mcp 不起作用。

退出码

默认情况下,CLI 采用惯例的两种取值:成功返回 0,失败返回 1。注意”成功”包含”什么都没找到”——搜索没有命中时仍然退出 0。参数错误(缺少必填参数、取值不合法等)无论是否加 --exit-code,都退出 2。 加上 --exit-code 可以区分这两种情况:
这个开关默认关闭,因为它改变了 1 的含义。不加时 1 表示”执行失败” —— 而这正是现有脚本所依赖的判断。

search 参数

find-paths 参数

outline 参数

grep 参数

read 参数

list 参数

note-save 参数

completions 参数