文档
怎么装、有哪些命令、接口长什么样,以及笔记究竟存在哪。
快速开始
注册后选择你的 Agent,按安装引导添加官方插件、保存 API 密钥并检查连接。安装页会把刚生成的密钥直接填进对应命令。
1. 拿一个 API 密钥
注册后,前往 获取 API 密钥 页面选择你的环境并生成密钥。页面会把密钥嵌进 --apikey 命令;明文只显示这一次——服务端只存它的 SHA-256。
2. 装插件
/plugin marketplace add loadshine/keepnow-plugins
/plugin install keepnow@keepnow-plugins在 Claude Code 内运行这两条命令。安装完成后使用 /keepnow。
3. 配置密钥并自检
/keepnow --apikey kn-...
/keepnow --status在 Claude Code 内保存 API 密钥,再用 --status 确认账户、套餐和用量。
4. 保存第一篇笔记
继续在当前 Agent 会话里工作。当讨论出值得保留的结论后,用一句自然语言告诉 KeepNow 要整理什么:
/keepnow 整理这次排障的根因、无效尝试和最终修复方案KeepNow 会利用当前会话的完整上下文生成并保存一篇 Markdown 笔记。Codex 中使用 $keepnow,后面的自然语言描述不变。
命令
三个环境提供同一组能力。Claude Code 和 Pi 使用 /keepnow,Codex 使用 $keepnow;下面的参数保持一致。
| Claude Code / Pi | Codex | 作用 |
|---|---|---|
| /keepnow | $keepnow | 显示命令帮助。 |
| /keepnow <description> | $keepnow <description> | 按自然语言描述整理当前会话并保存。描述可以指定主题、范围、重点或格式。 |
| /keepnow --find <description> | $keepnow --find <description> | 搜索标题、摘要和关键词,并列出候选。 |
| /keepnow --open <id|url> | $keepnow --open <id|url> | 取回全文并读入当前上下文。 |
| /keepnow --recent | $keepnow --recent | 最近 10 篇。 |
| /keepnow --status | $keepnow --status | 登录邮箱、套餐、用量。装完后的自检。 |
| /keepnow --apikey <key> | $keepnow --apikey <key> | 把 API 密钥安全地保存到本机配置。环境变量 KEEPNOW_API_KEY 仍可覆盖它。 |
同一会话里重复保存
主题就是笔记的身份。在同一个会话里,跑 /keepnow d1 迁移,聊别的,再跑 /keepnow r2 预签名,会得到两篇;回头再跑一次 /keepnow d1 迁移,Agent 会取回本会话中对应的原文,融合新内容后整篇重写,而不是新建重复笔记。Codex 中把前缀换成 $keepnow 即可。
匹配只看本会话建过的笔记,绝不会去改历史笔记。同一主题在不同日子有多篇是正常的——这是刻意的设计,不是缺陷。
检索
搜索匹配标题、摘要和关键词三个字段,可以叠加 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 逐行打码;服务端写入时扫一遍常见凭据模式并给笔记打标;把笔记切为公开时,如果带标就弹窗二次确认并高亮行号。
扫描命中不会阻断写入——丢掉你的笔记比存下一个密钥更糟。唯一强拦的是公开这一步,因为它收不回来。
每个设备用独立的密钥,泄露时可以单独撤销。撤销即时生效。