cognee-cli 是随 cognee 包一起发布的命令行工具,入口位于 cognee/cli/_cognee.py,各命令实现位于 cognee/cli/commands/。每个命令都支持 --help 查看参数,但只有少数命令(demo、memify、eval、serve、push、upgrade、downgrade、stamp,以及带一个 CODE 示例的 search)附带用法示例;记忆类命令的示例需参考本文档。使用前需要配置 LLM_API_KEY,与 SDK 相同。
【核心流程】 自 cognee 1.x 起,记忆命令是主要使用界面:
- cognee-cli remember "Your text here":也接受文件路径或 URL
- cognee-cli remember ./docs --dataset-name my_project
- cognee-cli recall "Your question":查询图谱
- cognee-cli recall "keyword" --query-type CHUNKS
- cognee-cli forget --all:清空本地状态
remember 一步完成摄取与图谱构建(底层为 add + cognify);--background/-b 让 cognify 阶段在后台运行,--dry-run 可在不摄取的情况下估算 LLM token 与成本。recall 支持 --datasets/-d、--top-k/-k(默认 10)和 --session-id/-s。
forget 可针对 --dataset、--dataset-id、--data-id(需配合数据集)或 --everything/--all,是取代旧 delete 与 empty-dataset 路径的统一命令。--memory-only(配合数据集)会删除图谱与向量但保留原始文件,以便重建数据。
注意:forget --all 不会请求确认,会立即删除所有数据集,即使在非交互式 stdin 下也是如此。旧版 delete --all 会先提示 Delete ALL data from cognee? [y/N],因此改用 forget 会静默去掉这层安全网,脚本化使用时需谨慎。
--query-type 接受 SDK 20 个 SearchType 中的 10 个,列表见 cognee/cli/config.py:SEARCH_TYPE_CHOICES:HYBRID_COMPLETION、GRAPH_COMPLETION、RAG_COMPLETION、CHUNKS、CHUNKS_LEXICAL、SUMMARIES、CODE、CYPHER、GRAPH_REPORT、SKILLS。其余(TEMPORAL、TRIPLET_COMPLETION、GRAPH_COMPLETION_COT、AGENTIC_COMPLETION、NATURAL_LANGUAGE 等)仅限 SDK,例如 cognee.recall(q, query_type=SearchType.TEMPORAL)。
省略 --query-type 时,CLI 使用 HYBRID_COMPLETION(DEFAULT_SEARCH_TYPE),而 SDK 的 cognee.recall() 会在搜索类型间自动路由。--top-k 在 CLI 默认 10,在 SDK 默认 15。
【会话记忆与增强】 会话条目目前由 SDK 写入——cognee.remember(..., session_id="chat_1")——而非 CLI(cognee-cli remember 没有 session 标志)。CLI 侧负责会话记忆的读取与桥接:
- cognee-cli recall "question" -s chat_1:优先查会话缓存;不带 -d/-t 时直接搜索该会话
- cognee-cli sessions get:获取会话问答历史
- cognee-cli improve -d my_project -s chat_1:把会话内容桥接进图谱
- cognee-cli improve -d my_project:增强/索引图谱(无会话)
- cognee-cli feedback ...:把反馈附加到结果上
improve 还支持 --node-name、--feedback-alpha(学习率,取值 (0, 1],默认 IMPROVE_FEEDBACK_ALPHA 为 0.1)、--build-global-context-index、--build-truth-subspace(两者均为可选阶段,truth subspace 需要 -s)以及 --background/-b。它会为每个阶段打印一行:名称、状态(completed / already_completed / skipped / errored)和跳过原因(如 no_session_ids、lock_held、triplet_embedding_disabled)。remember/improve 通过 cognify() 构建图谱,因此 cognify 级别的设置(如 CONTRADICTION_DETECTION=true)对它们同样生效。
【旧版/底层命令】 add、cognify、search、memify 和 delete 仍然随包发布,也是记忆命令底层调用的对象。仅在需要单独驱动某一阶段时使用它们,否则优先使用 remember/recall/forget/improve。
- cognee-cli add "text" && cognee-cli cognify:即 remember 一步所做的事
- cognee-cli search "question":相当于 recall 去掉路由/范围/会话来源
- cognee-cli memify -d my_project:自定义抽取/增强任务
- cognee-cli delete --all:已被 forget --all 取代
【管理】
- cognee-cli datasets list:数据集操作
- cognee-cli config get [key] [--show-secrets]:查看单个/全部设置(API key 默认打码)
- cognee-cli config set <key> <value>:设置并持久化到当前工作目录的 ./.env
- cognee-cli config unset <key>:将某个键重置为默认值(同样持久化)
- cognee-cli -ui:启动 API 服务器 + UI(见 cognee-server 技能)
- cognee-cli serve --url http://localhost:8000:让 CLI/SDK 连接到运行中的实例
【数据库迁移】 cognee 有两条迁移链:关系型 schema(Alembic,位于 cognee/alembic/)和图/向量数据链(slug 注册在 cognee/modules/migrations/registry.py)。两者都会自动运行——在 API 服务器启动时,以及 SDK/CLI 进程首次写入(remember、add、cognify、improve 等)时——除非 ENABLE_AUTO_MIGRATIONS=false。因此很少需要这些命令;它们用于检查状态、禁用自动迁移和回滚。没有 migrate 命令。
- cognee-cli current:每个数据库已标记的 revision(开启访问控制时按数据集)
- cognee-cli history:数据迁移链,最新在前
- cognee-cli upgrade:关系型升到 head,然后数据链升到 head
- cognee-cli upgrade <slug>:数据链升到并包含 <slug>
- cognee-cli upgrade --alembic <rev>:固定关系型(Alembic)目标
- cognee-cli downgrade <slug|base>:会重写数据;revision 必填,除非 --force 否则会提示;--dataset <uuid>(可重复)可限定范围
- cognee-cli stamp <head|base|slug>:仅设置存储的 revision 而不执行任何操作;除非 --force 否则会提示;--dataset <uuid>(可重复)可限定范围
位置参数 revision 始终是数据链 slug;关系型目标通过 --alembic 指定。downgrade 除非传入 --alembic,否则不动关系型 schema。即使 ENABLE_AUTO_MIGRATIONS=false,upgrade 也会运行。--alembic-path(或 COGNEE_ALEMBIC_PATH)指向自定义 Alembic 脚本目录。
【注意事项】
- CLI 会延迟初始化 cognee;全新环境中的第一条命令较慢(数据库 + 模型设置),之后会变快。
- remember(以及 add)不带 --dataset-name 时目标为默认数据集 main_dataset;recall/search 除非指定数据集,否则会在你可访问的数据集范围内操作。
- forget 拒绝裸运行——必须传 --dataset、--dataset-id、--data-id(配合数据集)或 --everything/--all。
- 会话命令(recall -s、sessions get、improve -s)需要 CACHING=true(默认值)——关闭后会话读取返回空,SDK 会话写入会报错。若想降低读取延迟与 token 成本同时保留会话记忆,可执行 cognee-cli config set AUTO_FEEDBACK false——默认情况下 cognee 会为每个已回答的查询做一次结构化输出 LLM 调用以自我调优记忆。
- memify 需要 -d/--dataset-name 或 --dataset-id 之一。
- config set/config unset 会写入你运行命令所在目录的 .env 文件(不存在则创建)。config reset(重置所有键)仍未实现。
- 哪个 .env 真正生效并不总是当前工作目录的那个。导入时 cognee 调用 dotenv.load_dotenv(override=True),其相对路径基于 cognee 包位置而非你的工作目录。在源码/可编辑安装(uv pip install -e .)中,仓库根目录的 .env 会遮蔽你运行目录的 .env——而且由于 override=True,它还会覆盖你导出的变量。症状:config set 看似无效,或 CLI 连接到你以为已覆盖的后端。要针对不同设置测试,可把仓库 .env 移开,或在导入后以编程方式设置(cognee.config.set_*)。(在 python -c 下当前目录的 .env 会生效,因为 main 没有 file 时 dotenv 会回退到当前目录——这也是同一命令作为脚本与 -c 运行时行为可能不同的原因。)