yoinks历史文件在哪里?history.json存储结构完全解析

发布时间:2026/10/4 18:01:52

yoinks历史文件在哪里?history.json存储结构完全解析 yoinks历史文件在哪里history.json存储结构完全解析【免费下载链接】yoinksyoink any video from your terminal. no shady ads.项目地址: https://gitcode.com/GitHub_Trending/yo/yoinksyoinks 历史文件即history.json是这款终端视频下载工具用来记住你下载过哪些链接的记忆库。yoinks 让你粘贴链接即可下载 YouTube、X、TikTok 等 1800 平台的视频而历史功能则让重复下载同一个链接只需按一下↑ 键就能召回。这篇指南带你彻底搞懂历史文件存在哪、内部结构长什么样、以及那些隐藏的运行规则。历史文件存储位置一个固定的隐藏路径yoinks 的历史记录保存在当前用户主目录下的固定位置~/.config/yoinks/history.json这个路径由 src/lib/history.ts 一行代码写死const HISTORY_FILE path.join(os.homedir(), .config, yoinks, history.json)几个要点不是全局共享的os.homedir()决定了每个系统用户各自拥有一份独立历史互不干扰目录自动创建首次写入历史时会自动执行mkdir -p ~/.config/yoinks你无需手动建目录全平台一致Linux / macOS / Windows 下规则相同Windows 上即%USERPROFILE%\.config\yoinks\history.jsonhistory.json 内部结构一个简单的字符串数组很多人以为历史文件会记录下载时间、文件路径、分辨率等复杂信息但实际上——它只是一个纯 URL 字符串数组没有对象、没有时间戳[ https://www.youtube.com/watch?vdQw4w9WgXcQ, https://x.com/user/status/1234567890, https://www.tiktok.com/creator/video/987654321 ]源码 src/lib/history.ts#L22 负责序列化格式上有两个小细节特征说明缩进JSON.stringify(next, null, 2)统一 2 空格缩进方便人手读结尾文件末尾固定追加一个换行符\n符合 Unix 文本习惯顺序最新的链接永远在数组第一个头部插入也就是说整个历史文件可以被理解为按时间倒序排列的去重 URL 列表。历史存储背后的三条隐藏规则写入逻辑全部集中在 addToHistory 函数里拆开看有 3 条规则规则一头部插入 自动去重const next [url, ...loadHistory().filter(entry entry ! url)].slice(0, LIMIT)每次成功下载后URL 被插到数组最前面如果该链接已经在历史里旧的那条会被过滤掉——所以同一链接无论下载多少次历史里始终只占一行规则二硬性上限 50 条const LIMIT 50slice(0, LIMIT)保证数组永远不超过 50 个元素超出部分最旧的链接会被静默丢弃。这意味着 history.json 的体积被天然锁死在很小的范围内不用担心它无限膨胀。规则三坏了也不误事下载永远优先这是整个模块最精妙的设计。读取端 loadHistory 和写入端都包在try/catch里文件不存在、JSON 损坏、目录无权限→ 读取直接返回空数组相当于没有历史工具照常工作过滤时会剔除所有非字符串条目typeof entry string手动改坏文件也只会少几条记录不会崩溃源码注释写得很直白history is a nicety — never let it break a download历史只是锦上添花绝不能让它毁掉下载所以如果你不小心把 history.json 改乱了最坏的结果也只是历史功能失忆下次下载成功后文件会被重建。实战如何在终端里用上这份历史下载完成的那一刻链接就自动写入了历史文件见 src/app.tsx#L276 中的setHistory(addToHistory(url))。使用方式非常简单运行yoinks进入首页光标停在输入框按一下↑ 键——底部提示栏出现↑ history时输入框就会回填最近一次下载的链接连续按 ↑ 依次回溯更早的记录按↵直接重新下载回填逻辑由 src/components/text-input.tsx 实现按 ↑ 之前你正在输入的内容会被暂存按 ↓ 可以回到暂存状态不会误删你打了一半的文字想彻底清空历史直接删除~/.config/yoinks/history.json即可下次启动时 yoinks 会自动从零开始记录。快速总结问题答案历史文件在哪~/.config/yoinks/history.json内部结构纯 URL 字符串数组2 空格缩进末尾带换行容量上限50 条超出丢弃最旧重复下载会重复记录吗不会自动去重且置顶文件损坏怎么办自动降级为空历史不影响下载如何召回历史首页按 ↑ 键至此yoinks 的history.json从存储路径到内部结构就完全解析清楚了一个极简、自修复、永不阻塞下载的小小记忆系统。【免费下载链接】yoinksyoink any video from your terminal. no shady ads.项目地址: https://gitcode.com/GitHub_Trending/yo/yoinks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/4 18:01:52

BIND IPv6 DNS配置核心原理与ip6.arpa反向解析详解

简介:本资源是一份面向Linux系统管理员与网络工程师的专业技术文档,聚焦IPv6时代DNS基础设施建设,系统讲解在Linux环境下部署支持IPv6的BIND DNS服务器的完整流程。内容涵盖IPv6地址结构与分类、DNS分层授权机制、正向/反向解析原理&#xff…

2026/10/4 18:01:52

嫌gpui还不够快,快试试gpui-fast

大家好,我是搬砖工呀。 先祝大家十一快乐,假日漫漫。我们今天继续来学习 GPUI 的最最新变种:gpui-fast。 GPUI 以其强大的性能,特别是虚拟不定长列表的完美支持,赢得了开发者的一致好评。昨天一个读者热心在评论区提醒我&#x…

2026/10/4 18:01:52

Elkan KMeans:用三角形不等式实现聚类加速的工程实践

先说明一下,标题里的 kemeas 我理解就是 kmeans,这种拼写在各种笔记和旧代码里太常见了,我入行这些年见过 K-MEAN、kmean、甚至 K-man 的写法都见过,都不影响我们聊技术。今天的主角是 kmeans 的经典加速方案——elkan kmeans。做…

2026/10/4 18:56:54

从零开始搭建AI工程能力:算法到生产的完整闭环

做AI工程这行久了,经常有朋友问我“怎么从零开始入门”。我一开始没太当回事,觉得照着教程跑通几个模型就算入门了。直到我亲眼看到不少科班出身、算法调参很熟练的同学,在把一个模型真正变成线上服务时被各种工程问题捶得没脾气,…

2026/10/4 18:56:54

LangGraph 从入门到实战(07):多智能体——让一个「主管」把任务派给几个「工人」

LangGraph 从入门到实战(07):多智能体——让一个「主管」把任务派给专业工人 前几篇都是「一个 Agent」。真实业务往往要分工:财务、技术、客服各司其职,由谁接活、派给谁,需要一个「主管」来协调。LangGraph 的多智能体本质就是一张图里放多个节点(每个节点就是一个「…

2026/10/4 18:56:54

AI Agent 缓存实战:Redis 数据结构选型与失效策略

Redis 在 AI Agent 里到底扮演什么角色,这个问题我在过去大半年里被问过不下二十次。每次有人听说我在 Agent 项目里用 Redis 做缓存,第一反应往往是"不就是个 key-value 存储吗,能有多复杂"。但真正把 Agent 跑在生产环境里、面对…

2026/10/4 18:56:54

插件报错排查指南:从加载到激活,一步步定位问题根源

plugins这个词,单独扔进搜索引擎的时候,往往不是出于好奇,而是带着一屏幕的报错来的。热搜里那几条很有意思——“iar plugins 是干什么的”“failed to load plugins web boot: 2 entries did not activate”“harness failed to load plugi…

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/4 1:01:05

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/4 1:01:05

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑