关于 Stickies
Stickies 是面向 Claude Code 的项目级持久便笺插件。用户可手动记录会过期的决策、阻碍和待办,并在后续会话中查看仍相关的内容。
主要功能
- 01项目级持久便笺
- 02从回复文本自动捕获
- 03按重要性生成会话摘要
- 04命令行与浏览器面板
- 05可选的 Git 同步
适用场景
- 01在 Claude Code 会话间延续决策
- 02跟踪项目阻碍和待办
- 03在面板中查看项目便笺
MCP 相关
Stickies 通过 MCP 工具向 Claude Desktop 和其他 MCP 客户端提供便笺读写功能。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y stickies-mcpSTICKIES_DBPath to the SQLite store (default ~/.stickies/stickies.db).STICKIES_DISCORD_WEBHOOK密钥Optional Discord webhook URL to mirror sticky lifecycle events.STICKIES_SYNC_REPOPath to a git clone you own, used as the opt-in cross-machine sync store.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tags | array | 否 | 可选字符串标签(最多 20 个,每个不超过 40 个字符)。 |
| content | string | 是 | 自由格式的便笺文本,最多 500 个字符。 |
| category | enum | 是 | decision(决策)| blocker(阻碍)| preference(偏好)| context(背景)| todo(待办)(用于设置 TTL)。decision | blocker | preference | context | todo |
| importance | enum | 否 | P1 严重,P2 普通,P3 轻微。P1 | P2 | P3 |
| project_path | string|null | 否 | 此笔记所属项目的绝对根目录。全局笔记请省略或设为 null。 |
详细介绍
Stickies(Claude Code 插件)
为 Claude Code 提供持久便笺。 你可以固定一条便笺——一项决策、一个阻碍或一个待办——即使会话重置、执行 /clear 或关闭终端,它也会保留下来。下次你在该项目中打开 Claude 时,仍然有用的便笺会自动交给它。
Stickies 不是记忆系统,也无意成为记忆系统。 它不会监视你的会话并自行决定要记住什么。恰恰相反:只有少量由你(或应你要求的 Claude)主动写下的便笺,它们会自行过期,而且你可以查看、清理并信赖它们。没有向量、没有大模型摘要,也没有云端服务。如果你想要一个能自动记住一切的 AI,请使用 Claude Code 内置记忆功能——它默认已开启。Stickies 适合那些只想保留二十条真正重要的便笺,并希望它们能过期的人。
快速开始(60 秒)
你需要 Node ≥ 22.5(运行 node -v 检查——这是内置 SQLite 所需的版本)。
claude plugin marketplace add dumbspacecookie/stickies
claude plugin install stickies@stickies --scope user
重启 Claude Code。就这么简单——只需安装一次,即可在每个项目中使用。现在试试:
- 让 Claude 记住某件事: “pin a P1 todo: fix the auth leak before release.” Claude 会记下来;下次会话时,你就能看到它。
- 查看便笺: 在 Claude Code 中输入
/stickies。更喜欢使用 Shell?运行npm i -g stickies-mcp即可获得stickies命令,然后运行stickies list。 - 在浏览器中打开看板: 运行
/stickies dashboard,然后运行stickies dashboard --link获取授权 URL(看板会提供你的便笺,因此只会响应你允许访问的浏览器)。
所有内容都留在你的设备上。所有数据都是磁盘上的本地 SQLite 文件,除非你启用可选的 Git 同步。
适用场景
便笺属于项目,而非你正在使用的应用——它们存储在一个本地数据库中,并按项目划分范围。不同使用场景之间的区别在于自动化程度。
| 使用场景 | 你可以获得 | 方式 |
|---|---|---|
| 终端(Claude Code CLI) | ✅ 完整流程——自动捕获、会话开始摘要、/stickies、状态栏、看板 | 安装插件 |
| Claude Desktop(聊天应用) | ✅ 通过 MCP 工具读取 / 写入(没有钩子;需传入项目路径) | 将 MCP 服务添加到 claude_desktop_config.json |
| iPhone / Web(Remote Control) | ✅ 完整流程——手机控制在你的设备上运行的会话 | 在你的设备上运行 claude remote-control |
| iPhone / Web(云沙箱) | ✅ 通过 repo-mode 使用完整流程——便笺会提交到仓库 | stickies init-repo(见 Repo-mode) |
| 任何 MCP 客户端 | ✅ 读取 / 写入 | 已加入 MCP Registry,标识为 io.github.dumbspacecookie/stickies |
| 任何位置,只读 | ✅ 快速查看看板 | Discord 摘要 / 看板卡片 |
这里有两项其他地方找不到的功能
- 零轮次捕获。 Claude 只需在本来就在写的回复中写下一行,就能保存便笺——
!!sticky todo P1 :: fix the auth leak——Stop 钩子会持久化保存。无需额外工具调用、无需额外轮次,也不会在往返过程中消耗令牌。(见自动捕获。) - 按重要性分级注入。 会话开始摘要会按重要性逐级精简,而不是按位置:P1 完整保留,P2 截断,P3 仅显示数量。它绝不会简单地在 N 行处截断列表。
Flow Board
如果你的项目使用 .planning/ROADMAP.md(GSD 规划约定)来安排工作,Stickies 还会根据该路线图直接生成一个实时看板——待办 / 进行中 / 已完成,并将你的便笺交叉链接到相关阶段。这是对计划的实时投影,因此永远不会与计划脱节。
同一个看板有四种查看方式,选择最适合当前场景的方式:
| 位置 | 命令 | 适用场景 |
|---|---|---|
| 在 GitHub / 手机上 | stickies board → 提交 BOARD.md | 在手机浏览器中快速查看进度——BOARD.md 可直接在 github.com 上渲染,无需服务或应用 |
| 在浏览器中(本地) | stickies dashboard → 打开 /board | 交互式看板;/graph 显示计划的依赖 DAG |
| 在 Discord 中 | stickies board --discord | 可快速查看的推送卡片——进度、各列计数和各阶段状态 |
| 在状态栏中 | (参见 状态栏) | 常驻显示的精简摘要 📋 ▶2 ☐1 ✓2(进行中 / 待办 / 已完成) |
stickies board # write BOARD.md in the project root (commit it → view on GitHub)
stickies board --out docs/BOARD.md # write it somewhere else
stickies board --discord # post the board to your Discord webhook instead
每个阶段都会显示其进度(3/4)、波次、是否已交付(✓ shipped 4/4)以及是否受阻(⛔)。在没有 .planning/ 的云端 / 移动会话中,已提交的 .flow/ 快照可让看板独立运行——与笔记采用相同的仓库模式。
日常命令
在 Claude Code 中(/stickies 斜杠命令):
| 命令 | 作用 |
|---|---|
/stickies | 列出此项目的活动笔记(+ 全局笔记) |
/stickies all | 列出所有项目的笔记 |
/stickies add <text> | 手动添加笔记 |
/stickies dismiss <id> | 清除一条笔记(待办事项在清除后即视为“已完成”) |
/stickies dashboard | 打开本地网页看板 |
/stickies sync | 通过 Git 仓库同步(如果已配置) |
在任何 Shell 中(CLI——使用相同的引擎)。运行 npm i -g stickies-mcp 安装,即可在 PATH 中使用
stickies 命令,然后:
stickies list # active notes for this dir + globals
stickies list --all # every project + globals
stickies add "ship the release" -c todo -i P1 # add a P1 todo to this project
stickies add "pay invoice" -c todo --due 2d # a deadline (30m/2h/1d/1w/tomorrow/YYYY-MM-DD)
stickies add "call the bank" -c todo -p global # a global todo — shows up everywhere
stickies dismiss <id> -r "done" # clear it
stickies dashboard --open # local web board, open the browser
stickies board # write a GitHub-viewable BOARD.md
stickies status # the one-line statusline summary
stickies sync # pull → merge → commit (push needs STICKIES_SYNC_PUSH=1)
stickies notify # push the open list to Discord
stickies init-repo # make notes work in cloud/mobile (repo-mode)
自动捕获
最省力的使用方式:Claude 在回复中写下一行内容,记录需要长期保留的信息;Stop Hook 会将其保存,无需调用工具,也无需额外轮次。
!!sticky <category> [P1|P2|P3] [global] [#tag ...] :: <content>
!!sticky decision P1 #storage :: storage is node:sqlite, no native deps
!!sticky todo P1 global :: cut the npm release
category 为必填项;重要性默认为 P2;重复笔记会自动去重。global 和 #tags
为可选项,可以按任意顺序出现。不带 global 时,笔记仅适用于当前项目;带上后,笔记会显示在每个项目中。
Hook 会扫描整个已完成的轮次,因此,即使指令写在 Claude 调用更多工具之前,也会被保存。子 Agent 回复中的指令会被忽略。保存时会清除密钥等敏感信息。
状态栏
将 Claude Code 状态栏指向 Stickies,即可随时查看摘要。这是可选功能——在 settings.json 中添加以下内容:
{ "statusLine": { "type": "command", "command": "stickies status" } }
(它使用 npm i -g stickies-mcp 安装的 stickies 命令)
默认显示精简信息——数量加紧急标记,例如 🟨 2!·19(19 条中有 2 条紧急)。它不会显示便笺文本(这样敏感信息就不会进入提示词);如果也想显示置顶便笺的文本,请设置 STICKIES_STATUSLINE_VERBOSE=1。
浅色/深色。 状态栏无法重新绘制终端背景——它只能为自身文本着色——因此主题的任务是在你现有的任意背景上保持易读。深色调色板(默认)使用终端自身的亮色;浅色调色板则换用更深的真彩色值,以适应白色背景(经过调整,可达到 WCAG AA 文本对比度标准)。在环境中设置 STICKIES_THEME=light(或 dark)即可选择,也可以在调用时使用 stickies status --light / --theme dark。在提供 $COLORFGBG 的 macOS/Linux 终端中,程序也会自动检测;Windows Terminal / PowerShell 不会设置该变量,因此在 Windows 上使用浅色终端时,请显式设置 STICKIES_THEME。仪表板(/、/board、/graph)是真正的网页,因此它有完整的 ☾/☀ 切换按钮,可以切换整个背景——这是它能控制的网页,与状态栏不同。
可点击链接。 在支持 OSC-8 超链接的终端(Windows Terminal、iTerm2、WezTerm、Kitty、Ghostty)中,该部分会变成一个 Ctrl+单击即可打开仪表板的链接。它需要满足两个条件:
- 仪表板必须正在运行——执行
stickies dashboard --detach。只有仪表板正在运行时,该部分才会成为链接;没有仪表板运行时,仍会显示计数,只是不带下划线,也无法点击。这是有意为之:指向已关闭端口的链接看起来有效,只有点击时才会失败,还会让你误以为是浏览器出了问题。除非你主动启用,否则不会自动启动,因此全新安装时默认没有链接。如果该部分无法点击,而你认为它应该可以点击,stickies doctor会说明是哪种情况。 - 在 Windows Terminal 上,Claude Code 不会自动检测超链接支持,因此请在启动 Claude Code 之前,在环境中设置
FORCE_HYPERLINK=1(例如执行setx FORCE_HYPERLINK 1,然后重新启动)。否则该部分会显示,但无法点击。
在 tmux 下,链接会自动跳过(tmux 会破坏 OSC-8);使用 --no-link 可禁用链接,其端口由 STICKIES_DASHBOARD_PORT 指定。
仪表板
stickies dashboard # http://127.0.0.1:7317/
stickies dashboard --open # and open the browser
stickies dashboard --detach # run in the background
stickies dashboard --link # print an authorized URL for a browser
stickies dashboard --stop # stop the running one
仅限环回访问(绝不会离开 127.0.0.1)。路由:/ 是笔记板,/board 是 Flow Board 看板,
/graph 是计划依赖 DAG。一个仪表板涵盖你记录笔记的所有项目——标题栏中的切换器可在项目间切换,因此你无需为每个文件夹单独运行一个仪表板。
只有在你提出要求时才会启动。 安装 Stickies 不会在你的机器上启动服务。如果你希望每个 Claude 会话都自动启动一个服务,请设置 STICKIES_DASHBOARD_AUTOSTART=1
(无论如何,CI 和远程会话都会跳过)。
“未授权”? 这是预期行为,不是 Bug。仪表板提供你的笔记和规划文档,因此只会响应经过你授权的浏览器:
stickies dashboard --link # → paste into your browser
……或者按住 Ctrl 并点击状态栏中的 Stickies 部分,该链接包含授权信息。打开链接会设置 Cookie;只有 Cookie 会持续有效。链接本身会在几分钟后过期,因此滚动记录中的旧链接会被拒绝——请获取新链接。想让授权一直有效?设置 STICKIES_DASHBOARD_AUTH=0。
默认情况下,无法在看板上编辑计划。 设置 STICKIES_BOARD_WRITEBACK=1 后,拖动卡片会重写 .planning/ROADMAP.md 中该阶段的 **Status:** 行,并在 .flow/roadmap-backups/ 中保留编辑前的副本。如果移动操作与阶段的计划复选框矛盾,则会拒绝操作,而不会写入。
遇到异常?stickies doctor 会一次性报告完整配置:正在运行的内容、所用端口,以及已安装的插件副本是否过时。输出中的主目录会缩写为 ~,方便你安全地粘贴分享。
来源
每条笔记都会记录写入位置——💻 终端、🖥️ 桌面或 📱 移动设备——因此你可以在仪表板上分辨出哪条笔记是你用手机随手记下的,哪条是 Claude 在你的桌面上记录的。这是每个入口根据自身已知信息尽力添加的标记;无需配置。
同步(基于 Git,选择启用)
通过你自己的 Git 仓库同步——不需要第三方服务,也无需新建账号。这是唯一会访问网络的功能,而且只有在你指定远程仓库后才会访问。
export STICKIES_SYNC_REPO=/path/to/your/stickies-data # a git clone you control
stickies sync # pull → merge (last-writer-wins) → export → commit (push: STICKIES_SYNC_PUSH=1)
# or offline, through any file channel:
stickies export -f notes.json
stickies import -f notes.json
每条笔记都会携带一个与机器无关的键,该键根据项目的 Git 远程仓库生成(SSH 和 HTTPS 地址会映射到同一个键),因此即使项目在不同机器上的检出路径不同,笔记也会随项目在机器间同步。合并以 updated_at 为依据,针对整个记录采用最后写入者获胜策略——无冲突且与顺序无关。
自动同步(同样需选择启用):在设置 STICKIES_SYNC_REPO 的同时设置 STICKIES_AUTO_SYNC=1,Stickies 就会在会话开始时拉取,并在回合记录笔记时提交。不设置该变量,就不会自动同步。
推送需要第三次选择启用。 记录笔记会将其提交到你的同步仓库,到此为止——设置 STICKIES_SYNC_PUSH=1 才会执行 git push。未设置时,笔记只会在本地进行版本管理,绝不会离开这台机器,因此另一台机器永远看不到这些笔记。推送会以裸命令执行(不指定远程仓库和 refspec),由你自己的 Git 配置决定推送位置;我们自行推导推送目标曾三次出错,其中一次把一个意外分支写入了共享的 main。
Repo 模式(云端 / 移动端)
该插件位于 ~/.claude,因此云端会话中没有它(iPhone app /
claude.ai/code 会在临时 VM 中运行,只能访问它们克隆的仓库)。Repo 模式让 Stickies
也能在这些环境中工作——无需插件,也无需安装任何内容:
stickies init-repo # run inside the repo you want notes in
这会提交一个独立、零依赖的引擎,并完成以下配置:
.stickies/notes.json— 存储文件,以及便于人类阅读的.stickies/NOTES.md镜像.claude/settings.json— SessionStart hook(摘要)和 Stop hook(捕获!!sticky)CLAUDE.md— 向 Claude 说明!!sticky约定.github/workflows/stickies-sync.yml— 将每个会话分支中的便笺汇总到main
云端会话会写入各自的分支;随附的 Action 会将每条便笺合并到 main(取并集 + 以取消为准 + 去重)——每个仓库只需一个汇总后的看板,无需手动操作。本地插件和这里使用相同的 !!sticky 语法和相同的脱敏规则。
运行前有两点值得注意:便笺保存在该仓库中,因此其公开程度与仓库相同;如果某个步骤无法安全完成——最常见的是无法解析 .claude/settings.json,通常是因为尚未解决合并冲突——该文件会保持原样,命令会发出警告并以非零状态码退出,而不会替换它。
Sticky 模型
字段:id、content(≤ 500 个字符)、category、importance(P1/P2/P3)、
project_path(绝对路径,或全局时为 null)、tags[]、origin、时间戳、expires_at、
source(auto/manual)、status(active/stale/dismissed)。
默认 TTL: decision 为 30d · blocker 为 7d · preference 为 90d · context 为 14d · todo 永不过期
(任务完成后应将其取消,而不是等计时器到期)。正因如此,todo + global 才能构成真正的跨项目任务列表——未完成的任务不会悄然消失。
**存储:**所有项目共用一个 SQLite 文件,并按项目划分范围——若设置了 $STICKIES_DB,则使用该路径;否则使用
~/.stickies/stickies.db。它使用 Node 内置的 SQLite(node:sqlite,因此要求 Node ≥ 22.5),所以插件没有编译依赖,并且在任何机器上都能适应 Claude Code 插件缓存副本。
**会话开始摘要:**完整显示 P1,P2 缩减至约 100 个字符,P3 显示数量。摘要通过 SessionStart hook 的 additionalContext 传递给 Claude——模型可以获取摘要,而无需写入任何文件。
Claude Desktop(仅 MCP)
Claude Desktop 支持 MCP 工具(stickies_write / stickies_read / stickies_dismiss),但不支持 hooks 或斜杠命令,因此不会在其中自动捕获或生成摘要——需要手动添加,并明确传入项目路径。在 claude_desktop_config.json 中配置(Windows 路径为 %APPDATA%\Claude\,
macOS 路径为 ~/Library/Application Support/Claude/):
{
"mcpServers": {
"stickies": {
"command": "node",
"args": ["--disable-warning=ExperimentalWarning", "/abs/path/to/stickies/src/server.js"]
}
}
}
两个客户端读取同一个 ~/.stickies/stickies.db,因此在一个客户端中写入的便笺会直接显示在另一个客户端中,无需同步。
组件(参考)
| 组件 | 文件 | 用途 |
|---|---|---|
| MCP 服务 | src/server.js | 工具 stickies_write / stickies_read / stickies_dismiss |
| SessionStart hook | src/session-start.js | 通过 additionalContext 注入摘要(不接触任何文件) |
| Stop hook(自动捕获) | src/auto-capture.js, src/directives.js | 保存 !!sticky … 指令,并进行去重 |
| 本地仪表板 | src/dashboard.js, src/dashboard-page.js | 环回 Web UI:便笺、/board、/graph |
| Flow Board | src/flow/ | 根据 .planning/ROADMAP.md 生成 Kanban 看板;导出 BOARD.md;保存 .flow/ 快照 |
| 斜杠命令 | commands/stickies.md | /stickies … |
| CLI | src/cli.js | 为斜杠命令提供支持;也可直接使用 |
| 存储 / DB | src/store.js, src/db.js | CRUD + 架构 + TTL + 去重 + 来源信息 |
| 同步 | src/sync.js, src/git-sync.js | 导出 / 导入 + git pull→merge→commit(push 需选择启用) |
| 脱敏 | src/redact.js | 写入时清除内容中的机密信息 |
| Repo 模式 | src/repo-mode/ | 已提交的存储 + hooks + 用于云端 / 移动端的协调 Action |
安装与开发
# use it:
claude plugin marketplace add dumbspacecookie/stickies
claude plugin install stickies@stickies --scope user # restart Claude Code after
# work on it:
git clone https://github.com/dumbspacecookie/stickies
cd stickies
npm test # 27 suites, 558 assertions, no network
在用户级别安装一次,即可在每个项目中使用;项目级范围通过每条笔记上的 project_path 设置,而不是通过单独安装到每个项目中。
Stickies 对比
为 Claude Code 提供持久化笔记的方案已经很多了。坦白说:
- Claude Code 内置记忆 — 默认开启,由模型决定保存什么;不会过期,没有重要性级别,也没有跨项目全局记忆,只限于单个代码库。Stickies 是一种确定性、由人编写且会过期的替代方案,适合关闭了内置记忆的人。
- 知识图谱 / 向量记忆服务(mem0、OpenMemory、
server-memory、basic-memory)— 对你说过的所有内容进行模糊检索。用途不同。Stickies 存储的是一小组类型化内容,而不是嵌入索引。 - 基于 Hook 的记忆插件 — 已有好几种,其中一些很出色。Stickies 的重点是上述这些:零轮次的
!!sticky记录、按重要性分级注入、可跨项目显示的全局级别,以及根据计划生成的 Flow Board。
如果你想自动回忆全部历史记录,请使用其中一种。Stickies 适合用来保存简短、可信、会自动清理的列表,以及一块可随时用手机查看的看板。
MIT · 由 dumbspacecookie 构建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。