收藏夹里攒了几千条没看过?我用一个 SKILL.md 把它们变成了自己的“抖音” —— 第三届 NVIDIA DGX Spark 黑客松参赛记
项目仓库:https://github.com/chengang/skill-private-douyin
视频演示:https://www.bilibili.com/video/BV1WMa46eE9u/
一、看直播时引发的小灵感
看 DGX Spark 黑客松直播讲解那天,我边看直播边在清理我的收藏夹书签栏 —— 给黑客松相关的网址腾点地方 —— 我把不知道多少年积攒了多少条的、点都没点开过的链接归档到一个叫「以后再看」的文件夹里。
那一刻,我意识到一个事实:**我的「数字囤货」,已经多到连自己都消化不完了。Safari 书签里躺着两年前收藏的技术博客,macOS 备忘录里存着某天深夜记下的灵感碎片,B 站和小红书的收藏夹更是重灾区——每一次"收藏下来,以后再着",都是一次对未来的透支,是压在我心头甜蜜的负担。
直播里在讲解这届 DGX Spark 黑客松的主题,突然一句话击中了我:让 Agent 从"会回答"走向"能完成"。
是啊!我也需要的我收藏夹 能完成,在完成之后成为我知识的增长,而不是一直躺在那里变成我的心智负担。
于是,我就选了这个作为我本次参赛的主题 —— 让 Skill 帮助我 完成 —— 在我每天等着接孩子,等着公交车来,在我不知所措的每一刻,从我曾经攒的内容里挑一条真正合适当下的我的推给我 —— 阻止我开刷抖音,囤积更多收藏,更多心理负担。
于是就有了 私家抖音:用我的私家收藏作为内容库,StepFun 友情赠送的 stepfun-3.7-flash 这个大模型作为推荐引擎,为我的碎片时间,打造只属于我一个人的抖音。
二、比赛做了什么:认真学习 SKILL 标准
虽然我日常的工作也是在折腾 AI ,但我一直对 SKILL 都只有一些模糊懵懂的了解。
在比赛之前,我还从来没有真正动手写过一个 SKILL 呢。
这次的英伟达 DGX Spark 黑客松的契机敦促我好好的把 pi agent 的 skill 相关文档和 skill 的 spec https://agentskills.io/specification 好好地、从头到尾地读了一遍。算是对 SKILL 的制作入了个门。
这次比赛除了好好写 SKILL.md 之外,我也把 SKILL spec 里我觉得也有用的 script 和 reference 能力给用上了。
前者 script 是把从本地源读取收藏的能力,比如说从 bilibili 读取收藏,比如说把 macos 的备忘录读出来,这样一些能力固化成脚本。想法是避免 agent 反复生成类似的代码,有可能引入错误的同时,还浪费没必要的时间和没必要的 token。(虽然这次的 token 都是 stepfun 友情赠送的……)
后者 reference 我把我希望 LLM 回复我的方式、语气等等内容写了一个参照放里面了,希望 LLM 能参考这些样例给我某种拟人的、带有温情的回答。但时间因素,调整得还没有那么好。不得不承认,这种在 SKILL 里搞 few-shot 的难度,比我设想的要大一些。
三、设计思路:把「私家抖音」拆成 workflow
我给 private-douyin 定的目标很朴素:在我想看点什么的时候,由 StepFun 3.7 Flash 从我的囤货里选一条,做成 feed 发到我的飞书上。
制作的时候,有几个点我犹豫过。
- 接入哪些源? “数字囤货"天然是分散的:Safari 书签是我"理性收藏"的部分,备忘录是我"感性碎片"的部分,B 站和小红书收藏是我"消费内容"的部分。任何一个源单看都是不完整的"我”。只有把它们合在一起,Agent 看到的才是那个立体、矛盾、真实的人——早上可能想看一条技术深度文,深夜可能只想刷一条 3 分钟的沙雕视频。
时间所限,没能真正接入所有我希望接入的源。抖音的防机器人措施确实强大,折腾了很久也没找到稳定可依赖的接入方法。选了几个偏本地的、有现成 CLI 的源,先做出一版,把作业先交上……
- 用什么 UI 来承载这个功能? 因为我想做事情还挺多的。除了推荐,我也实现一个"用户反馈的小闭环"。每次推荐都自带"喜欢,下一条"和"不喜欢,下一条"按钮——点击后自动记录到本地偏好文件,已推荐过或点过"不喜欢"的内容下次自动排除。你的每一次点击,都在优化未来的推荐。
这个玩法并不新鲜,这已经是抖音的传统艺能了。而且,我觉得,这些数据也保留了未来,我们可以跳出 SKILL,使用更强大的模型改造能力,进一步加强产品的可能性。
但是,用什么 UI 来承载这些念头呢?黑客松时间所限,我偷师了小龙虾,就让 飞书 这样一个相对开放的平台,成为我们的前端和 UI 吧。
- 为什么偷"抖音"的名字? 抖音的认知度和流传度实在太高了,这两个字一出,人人都知道它是在干嘛。我希望借它的名,尽量降低评委和用户理解这个 SKILL 到底在干嘛的成本。 —— 它就是用私人收藏作为内容,LLM 作为推荐引擎,搭建了一个专为你服务的 feed 流。
当然,我还希望它在一定程度上,把我刷抖音的时间挤一挤,少看点短视频……
四、产品 Slogan —— 「Only you can do」
我们还想了一个 产品 Slogan 用于传达我们两个产品理念 —— 「Only you can do」—— 「这件事只有你能做到」
理念一:数据隐私只有你自己能触碰
看我们的 INSTALL.md 应该能感觉到,想在 macos 拿到这些数据,真的需要点击很多「允许」、「授权」和「放行」。
设想一下,如果这是一个某大厂呈现给我的产品,我会用吗?
我感觉我会退缩,我还是对把数据隐私上传到云端持保守态度的。
所以,这是我们的第一个理念 —— 你的数据只有你能触碰,一切程序透明地跑在本地,你不该信任任何第三方去触碰你的隐私
理念二:你的碎片时间只有你自己能拯救
刷抖音真的是件停不下来的事。
明知道有毒,还一直刷。碎片时间全被他填满了,我也拿自己没办法了。
想转换这个状态,戒掉短视频的「瘾」,我想不管什么产品,什么 SKILL,也都只是辅助手段。
最终,把自己从「瘾」里拽出来,好好夺回自己的时间的人,可能也只有每个人自己。
当然,「私人抖音」能起到一个加油打气的辅助作用。这是我们想借「Only you can do」这个 Slogan 传达的第二个产品理念。
五、收获与未完成,请投我们一票!
从 9 月 20 日线上训练营开营,到 9 月 29 日作品提交,学习新技能,制作新产品的过程是让人愉悦的。
过程中当然也有些不足为道的技术探索和纠结,但总算我们还是把作业给按时交上了。
现在的 私家抖音 无疑还是粗糙的 —— 未来规划里还有一堆没做完的事:
- 支持更多数据源(微信读书、豆瓣标记、本地 NAS)
- 解决偶尔会推荐的很慢的BUG(其实也不太「偶尔」)
- 基于用户反馈微调轻量级推荐模型(也许本地跑个 jev 做推荐,然后再让 LLM 写推荐语?)
- 等等等等
但作为一个 Agent Skill,它已经完整地跑通了从"理解触发"到"执行推荐"到"收集反馈"的闭环。
如果你也是一个收藏夹里躺着几百条「以后再看」的人,如果你也曾想过「要是有人能替我把这些陈年旧货翻出来晒晒该多好」—— 欢迎来 GitHub 看看这个项目,也欢迎在 B 站看看我们的 Demo 视频。
感谢 NVIDIA 开发者社区、StepFun 阶跃星辰、赞奇科技 XSUPERZONE、华硕 ASUS 联合发起这届比赛,感谢线上训练营里那些干货满满的技术分享,也感谢所有在群里热烈讨论、相互激励的朋友。
这不是一个多厉害的项目,但它是一份 SKILL.md、一台 DGX Spark、和一个 StepFun 模型,给你和我造的一个小小的、贴心的、只属于你我的「私家抖音」。
187



被折叠的 条评论
为什么被折叠?



