文档
怎么装、有哪些命令、接口长什么样,以及笔记究竟存在哪。
快速开始
三步:注册、装插件、跑一次 /keepnow。安装引导页会把 API 密钥直接填进命令里,复制粘贴即可。
1. 拿一个 API 密钥
注册后打开 /dashboard/install,选你的环境,页面会生成一个密钥并嵌进安装命令。密钥明文只显示这一次——服务端只存它的 SHA-256。
2. 装插件
# Claude Code
claude plugin install keepnow@keepnow
# Codex
curl -fsSL https://keepnow.app/plugin/codex/install.sh | bash
# pi
mkdir -p ~/.pi/agent/extensions
curl -fsSL https://keepnow.app/plugin/pi/keepnow.ts \
-o ~/.pi/agent/extensions/keepnow.ts
curl -fsSL https://keepnow.app/plugin/pi/prompt.md \
-o ~/.pi/agent/extensions/prompt.md3. 配置密钥并自检
export KEEPNOW_API_KEY=kn_live_...
# 然后在任意会话里 / then in any session:
/keepnow status命令
三个环境暴露同一组命令、同样的措辞、同样的输出格式。换环境不需要重新学。
| 命令 | 作用 |
|---|---|
| /keepnow | 整理当前对话并保存。主题由 agent 自行归纳。 |
| /keepnow <主题> | 只抽取与该主题相关的内容。主题同时是这篇笔记的身份标识。 |
| /keepnow find <词> | 搜索并列出候选,带编号。 |
| /keepnow open <n|id> | 取回全文并读入当前上下文。 |
| /keepnow recent | 最近 10 篇。 |
| /keepnow status | 登录邮箱、套餐、用量。装完后的自检。 |
同一会话里重复保存
主题就是笔记的身份。在同一个会话里,跑 /keepnow d1 迁移,聊别的,再跑 /keepnow r2 预签名,会得到两篇;回头再跑一次 /keepnow d1 迁移,agent 认出这是本会话已经写过的主题,会取回原文融合后整篇重写,而不是新建一篇重复的。
匹配只看本会话建过的笔记,绝不会去改历史笔记。同一主题在不同日子有多篇是正常的——这是刻意的设计,不是缺陷。
检索
搜索匹配标题、摘要和关键词三个字段,可以叠加 tag、日期和来源过滤。正文不参与检索。
正文不参与检索,是因为它存在对象存储里而不是数据库里。所以摘要同时是检索索引——整理 prompt 会要求 agent 把具体的报错文本、API 名和库名写进摘要和关键词,而不是写一句漂亮但空泛的导语。你在网页上编辑笔记时也该守着这条。
中文可以直接搜,不依赖分词器。语义搜索还没做,列在后续计划里。
REST API
插件就是调这套接口。你也可以直接调,做自己的集成。认证走 Authorization: Bearer <key>,也接受 X-API-Key。
| 接口 | 说明 |
|---|---|
| GET /api/v1/me | 校验密钥,返回套餐与用量。 |
| POST /api/v1/notes | 创建笔记。返回 id、slug 和 webUrl。 |
| GET /api/v1/notes | 列表 / 搜索。不返回正文。 |
| GET /api/v1/notes/:id | 单篇详情,含完整 Markdown。 |
| PATCH /api/v1/notes/:id | 局部更新。传了 content 就产生一个新版本。 |
| DELETE /api/v1/notes/:id | 删除笔记及其全部版本。 |
| GET /api/v1/tags | 全部 tag 及各自笔记数。 |
curl -X POST https://keepnow.app/api/v1/notes \
-H "Authorization: Bearer $KEEPNOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Remote D1 migration says table already exists",
"summary": "drizzle-kit migrations fail on remote D1 ...",
"keywords": "d1, drizzle-kit, migration, table already exists",
"content": "# ...markdown...",
"tags": ["cloudflare-d1", "drizzle"],
"source": "claude-code"
}'错误码
失败时返回 { error, code }。code 是稳定的,可以拿来做分支。
| 状态 | code | 含义 |
|---|---|---|
| 401 | invalid_key | 密钥无效或已撤销。 |
| 402 | quota_notes | 笔记数达上限。 |
| 402 | quota_storage | 存储达上限,通常是历史版本占的。 |
| 404 | not_found | 笔记不存在。 |
| 413 | too_large | 笔记超过 256 KB。 |
| 429 | rate_limited | 请求过于频繁。 |
存储与版本
笔记正文存在对象存储里,数据库只放元数据和可检索字段。每次编辑都会写一个新版本,旧版本永久保留——agent 重写错了能翻回去。
两个配额维度算的不是同一样东西:笔记数按逻辑笔记算,一篇改十次仍然是一篇;存储按对象存储上的实际字节算,十个版本的体积都算在内。
删除笔记会连同它的全部历史版本一起删掉,不可恢复,没有回收站。版本保留是为了「改错了能翻回去」,不是为了「删错了能捞回来」。
隐私与凭据
笔记默认私有。单篇可以生成公开链接,正文由服务端渲染输出,存储地址不会暴露。
开发者的工作对话天然会带上密钥。三层防护:整理 prompt 要求 agent 逐行打码;服务端写入时扫一遍常见凭据模式并给笔记打标;把笔记切为公开时,如果带标就弹窗二次确认并高亮行号。
扫描命中不会阻断写入——丢掉你的笔记比存下一个密钥更糟。唯一强拦的是公开这一步,因为它收不回来。
每个设备用独立的密钥,泄露时可以单独撤销。撤销即时生效。