npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pocket-memory

v1.0.0

Published

Turn one real photo into a cinematic four-frame memory sequence through source-faithful reframing, visual paths, and a quiet handwritten subtitle—giving a captured instant room to become felt time.

Readme

Pocket Memory 不替你虚构照片之外的后来;它只沿着一张真实照片里的视觉路径,把被快门留住的一个瞬间,重新展开成一段可以被感受的时间。

如果 Pocket Memory 曾让你在一张照片前多停留几秒,欢迎点亮一颗 Star ⭐。你的支持会让这份温柔继续被认真打磨——愿那些曾被生活匆匆带过的瞬间,不只被保存,也终于被看见;愿每一个来不及细想的当下,都能在回望时拥有接近永恒的长度。

1888 年,柯达用一句 “You press the button, we do the rest” 定义了摄影。

我一直觉得,每个人的生活原本就是一部部的 movie。

只是我们常常被太多事情裹挟着向前走,没有多余的精力停下来,品味和感受那些正在发生的 scene。

耳机戴久了,我们对身边的环境也渐渐变得迟钝。小时候清晰可闻的虫鸣与蛙叫,不知从什么时候开始,被隔在了生活之外。

技术的飞速进步确实带来了许多便利。可我总觉得,我们好像并没有因此比从前活得更快乐。

Pocket Memory 是一个跨 Agent 的图像创作 Skill。你给它一张照片,再说说当时发生了什么、空气是什么样、你记得什么或后来才明白什么;它不替你补拍前后发生的事,而是先判断时间来自照片里的真实运动,还是来自观看本身,再连续取景四次。

ONE IMAGE → ONE TIME MODE → FOUR DEPENDENT FRAMINGS → ONE FELT MOMENT

它不把生活“拍得像电影”。生活本来就由一幕一幕组成,只是我们常常忙着生活,来不及感受。

示例

四张照片,两种时间机制;所有画格都只来自各自的原图。

安装

从 GitHub 安装(推荐)

直接从已发布仓库安装,无需先 clone:

npx skills add the-thinker0/pocket-memory

安装到常用 Agents,并设为全局可用:

npx skills add the-thinker0/pocket-memory -g -a codex -a cursor -a claude-code -a grok -y

安装到所有受支持的 Agents:

npx skills add the-thinker0/pocket-memory -g --agent '*' --skill pocket-memory -y

从 npm 安装

先安装已发布的 npm 包,再让 skills CLI 从 node_modules 中安装 Skill:

npm install pocket-memory
npx skills add ./node_modules/pocket-memory

如需指定 Agents 或全局安装,可在第二条命令后添加相同的 -a 与 -g 参数:

npx skills add ./node_modules/pocket-memory -g -a codex -a cursor -a claude-code -a grok -y

安装完成后,重新打开或刷新对应 Agent 会话即可使用 $pocket-memory。

它会生成什么

一张完整的四格位图作品。Skill 会根据照片选择一种时间机制:

Motion Time

  1. ESTABLISH:保留完整场景,告诉观看者“这一刻在哪里”;
  2. CONTACT:强调两个可见元素真正发生连接,而不只是把主体放大;
  3. TRAVEL:沿同一载体继续传递,让光线、视线、手势、道路或波浪成为全组最明显的运动;
  4. ARRIVAL / RESIDUE:回答这条路径最终到达哪里,以及它如何在原图里散开、停下或留下余迹。

Attention Time

它先选择四份内容,而不是先决定四个位置:

  • 一份接近原图全貌的 Source Anchor,负责证明 scene;
  • 三份由原图裁出的 A / B / C,各自具有不同的主体或关系,并能通过真实可见的元素彼此交接。

然后比较仍然连贯的排列,把它们放进:

SOURCE ANCHOR + A + B + C
            ↓ compare viable orders
ENTRY → CONTINUE → TURN / REVEAL → SETTLE

Source Anchor 是事实证据,不是固定片头。它可以在第一、第二、第三或第四格:哪里能让亮度、色温、尺度、信息密度与空间方向形成更自然的渐变,就放在哪里。像 3 → 2 → 1 → 4 这样的重排可以成立,但只是对某一张照片的判断,不是新模板。

Attention Time 不虚构外部世界的运动,也不再用“同一主体的中景 → 近景 → 特写”制造时间。相邻画格必须改变主要角色;上一格的主体只能作为下一格边缘的小段接力证据,不能连续居中、连续成为主角。

例如城市夜景不应是 桥 → 更大的桥 → 河面,而可以是 河岸灯火 → 桥面连接 → 水中倒影。日落也不应让后三格都落在金黄色天空里,而应让 暗云裂口 → 穿过山城的光路 → 河湾反光 形成主体和色调的双重接力。

这借用了 原图证据 → 元素显露 → 连接关系 的思路,但不复制三层模板。四格的内容先被选出,再依据可见交接与整体渐变排序;时间来自注意力在不同视觉角色之间移动,而不是来自原图被规定在某一个格子。

Motion Time 的 ESTABLISH 与 Attention Time 的 Source Anchor 都负责保存原始时刻的事实与空间关系;其余视图只能从同一张照片中裁切、放大和平移,不生成新的机位、光线、动作或“下一秒”,也不使用镜像、旋转、重复或特效制造差异。

最重要的不是“四格都好看”,而是四格必须彼此依赖。Motion Time 依靠同一条 Visual path 和动作接力;Attention Time 依靠四个不同角色、三次真实视觉交接,以及顺着全组逐渐发生的色调、尺度或信息量变化。每一格都应像上一格没有说完的后半句。

版式固定为 full-bleed 2×2,没有外围白底、独立描边、四个封闭画框,也没有任何中间缝隙。四张裁切在中央横纵坐标处直接以 0px gap 相接;不添加线条、色带、底色、曝光过渡、柔化或 glow。边界只来自相邻裁切内容本身的变化。

如果去掉字幕,四格仍看不出 完整 → 接触 → 传递 → 抵达,或看不出 进入 → 延续 → 转折 / 显露 → 停留 的观看过程,作品就算失败。

文案默认进入 subtitle mode:它属于整个 moment,而不是第一格。字幕稳定地出现在整幅作品下方中部,必要时跨过底部两格共享的中央切口;使用纤细、松弛、克制的白色或暖白色手写体和极弱阴影,像后来轻轻写进记忆的一句话,不做页边引文、杂志标题或装饰花字。

A photograph keeps what was visible. Pocket Memory gives the moment room to continue.

它为什么不是滤镜

滤镜回答“这张照片应该看起来怎样”;Pocket Memory 回答“这一刻前后还有怎样的生活”。

滤镜主要改变像素的外观。Pocket Memory 改变观看的时间结构:它保留原图作为事实锚点,让观看者跟随真实运动,或在同一个 scene 里逐步深入并沿真实关系释放视线。如果结果只是四张同构图的调色版本、四个彼此独立的漂亮裁切,或者四张由模型重新生成的相似照片,都算失败。

它也不是历史复原器。用户的讲述决定我们如何理解照片、选择局部和写文案,但不会被直接画成新的摄影事实。作品不补出照片之外的空间,不改变光、风、人物或物件,也不虚构离别、死亡、分手、迁居或任何人的后来。

文案的温度

文案短,但必须准。它来自用户的叙述和画面里的具体证据,而不是一套“怀旧金句”模板。它优先寻找 Contact 与 Arrival 之间真实存在的时间关系:先后、延迟、持续、抵达或消散,并把情绪压低一度。

期待的感觉例如:

  • I didn’t know this would be the last summer we all lived in the same city.
  • At the time, it was just another evening.
  • Nothing in the frame said goodbye.
  • We thought we would do this again next week.
  • The ordinary has a way of becoming historic later.

这些句子是标尺,不是每次复制的答案。没有事实支持时,不使用 “last”“goodbye” 或 “never again”。有时最准确的句子只是:

The fan kept turning after everyone went home.

当路径本身包含传递和抵达时,更合适的句子可能是:

The light reached the shore a moment later.

使用

上传一张照片,并尽量告诉 AI:

  • 这是哪里、当时在做什么;
  • 你记得的声音、空气、温度、光或一个小动作;
  • 现在回头看,什么变得不一样了;
  • 希望使用中文还是英文文案(不说则跟随你的叙述语言)。

例如:

使用 $pocket-memory 处理这张照片。
这是大学毕业前一个普通夏夜,我们在楼下吃烧烤。那时没人觉得需要告别,
我只记得塑料凳拖过地面的声音和桌边一直被风吹起来的纸巾。文案用英文。

即使只给照片也能工作;Skill 会严格区分看见的事实与保守推断,不会为了“emo”替用户编人生。

兼容性与图像模型

Pocket Memory 不绑定某一家 Agent 或某一个图像模型。标准 SKILL.md 可以安装到 Codex、Cursor、Claude Code、Grok,以及其他支持 Agent Skills 的宿主。所有宿主读取同一份根目录 SKILL.md,安装器负责把它放到各自能够发现的位置。

最终成品是一张重新编排的四格位图,因此完整运行依赖两项能力:

  1. 宿主能够读取并理解用户上传的照片;
  2. 宿主能够调用位图编辑、图像合成工具,或能够严格保留参考图内容的图片编辑模型。

Skill 本身提供场景分析、Visual path 识别、连续裁切地图、事实边界、文案和质量检查,不内置模型、API Key 或付费服务。它不要求模型“补拍”任何场景;模型若参与,只负责忠实编排同一张照片的连续裁切片段和克制文字。能使用确定性位图合成工具时,应优先保留原始像素,而不是让生成模型重新理解照片。

如果宿主只能看图、不能生图,Pocket Memory 只能输出四格镜头方案与文案草案,不能声称已经生成最终作品。它应明确说明缺少的能力,并由用户决定是否只需要文字方案。

输出命名

默认使用 <原文件名>-pocket-memory.png。例如输入 sunrise.jpg,输出为 sunrise-pocket-memory.png;若目标文件已经存在,则追加 -v2、-v3 等版本号,避免覆盖已有作品。

设计原则

  • 真图为锚:ESTABLISH 或 Source Anchor 保留原图的主要事实与空间关系,不改变身份、人数、关系、关键物件、光线或天气;在 Attention Time 中,Source Anchor 不固定为第一格。
  • 一图一机制:先判断照片适合真实运动接力,还是渐进式注视;不能先找三个漂亮局部,再给它们补一个解释。
  • 两种时间:有真实运动载体时使用 Motion Time;静态、同时发生或适合凝视的 scene 使用 Attention Time,不强行编造外部运动。
  • 渐变优先:Attention Time 先选择 Source Anchor + A + B + C,再比较可行顺序。最终使用 ENTRY → CONTINUE → TURN / REVEAL → SETTLE;原图锚点放在能形成最顺畅色调、尺度、信息密度与空间渐变的位置。
  • 角色接力:相邻格的主要名词必须变化;同一主体只能退到下一格边缘充当交接证据,不能以相近尺度被反复强调。
  • 显著性服从眼睛:裁切计划写谁是主体并不重要,第一眼真正看到的才是主体。半张脸、半座桥、半栋楼等高显著性残片若占据视觉中心,必须补全并正式作为该格主体,或裁掉到真正次要;不能让它抢走本来计划的主体。
  • 不是变焦:桥 → 更大的桥、脸 → 更近的脸、太阳 → 更大的太阳 都不构成时间。第三格必须让连接元素本身成为主角。
  • 动作接力:CONTACT、TRAVEL、ARRIVAL / RESIDUE 必须沿同一路径依次推进,相邻两格共享可指出的载体和动作动词。
  • 笼罩不是移动:面对铺满天空、雾气或城市的 diffuse field,默认使用 Attention Time;只有存在肉眼可追踪的具体载体时,才使用 Motion Time。
  • 观看亦生时:时间可以来自原图中的真实视觉运动,也可以来自逐层深入同一 scene 的注意力;绝不来自 graphic design effect。
  • 顺序不可换:先比较可行排列,再选择交接不断、渐变最顺、结尾最稳的一种。如果仍可任意交换,生成失败。
  • 语义递减:Motion Time 的后两格逐渐减少完整照片感;TRAVEL 强调传递,ARRIVAL / RESIDUE 强调碎片、纹理、抵达与消散。Attention Time 不套用这条规则,而要求 Entry、Continue、Turn/Reveal、Settle 功能不同。
  • 色调有层:所有画格共享原图色彩处理。当原图存在暗部、冷部、中间调和高光等不同区域时,四格应沿至少两种主色调角色形成有方向的变化;缩成模糊色块后仍显得互换无碍或出现无意义的色调折返,即失败。
  • 无缝切镜:full-bleed 2×2 使用严格 0px gap;没有外围框、独立 panel stroke、任何 gutter、分隔线、色带或边缘过渡。
  • 字幕模式:全图只有一句纤细克制的手写字幕,默认位于整体下方中部并可跨底部两格;不放在第一格角落,不使用 serif 引文、无衬线电影字幕或 editorial headline。
  • 自然收尾:ARRIVAL / RESIDUE 必须回答路径到了哪里,而不是随便选择一块空天空、海面或墙。
  • 情绪克制:具体名词和动作优先于抽象形容词;少说一步,给记忆留一点空白。
  • 后来之声:当用户提供了明确的当时感受或后来事实,字幕可以不复述 visual path,而像多年后覆在画面上的一句克制旁白。
  • 诚实想象:用户讲述高于模型猜测;不确定的信息不伪装成事实。

仓库结构

pocket-memory/
├── SKILL.md
├── README.md
├── README-en.md
├── LICENSE
├── package.json
├── examples/
└── references/
    ├── scene-grammar.md
    ├── visual-art-direction.md
    ├── writing-guide.md
    └── generation-and-quality.md

参考与致谢

本项目认真研究了以下开源 Skill 的场景读取、事实锚点、视觉约束、提示词编译和质量检查方法,并据此发展出独立的四格时间结构与文案系统:

请尊重参考项目各自的许可证与作者署名要求。本 Skill 不复制它们的成品模板、品牌语言或专有视觉风格。