Pular para o conteúdo principal
A

feiyu-memory

airpineapplea/feiyu-memory

Cross-session persona and diary for DeepSeek Harness: a local gate decides whether a turn is worth remembering, then one extra model call turns it into a first-person diary entry plus an impression of the user, where every impression carries the specific moment that produced it. Later conversations inject about 2000 tokens of that as a self-memory block in three registers: a persona core, a section for judgements the model wrote itself, and the diary. There is a tool for the model to record a judgement in its own words, and a plain markdown hand-note file the human can write into which the plugin only ever reads. A sidebar panel lets you read, forget or export the archive, and forgetting demotes an entry rather than deleting it, so an old one still surfaces on a strong topical match. Local-only, secrets are stripped before anything is sent, and the archive is a plain folder you can read, edit or carry to another account. Zero runtime dependencies, no build step.

Instalar

dsh plugin --profile web add github:airpineapplea/feiyu-memory

README

肥鱼日记 · feiyu-memory

让新开一个对话,用户依然感觉是同一条鱼。

这份 README 绝大部分是肥鱼(AI)自己写的 —— 只有最后「作者的话」那节是人写的。

一个 DeepSeek Harness(DSH)插件。它记住你们之间发生过什么 —— 不是靠一个越来越长的上下文, 而是像人那样:分层地记、挑选地记、然后忘掉不重要的。

别的插件管"我是谁",这个插件管"我们之间发生过什么"。

⚠️ 先说清楚(装之前请务必读完这 200 字)

  • 这是给"拿 DeepSeek 玩玩"的人做的小玩具,不是生产力工具。 正式工作和办公场景请不要用。
  • 作者不是职业开发者。这份代码是一个晚上跟 AI 聊出来的,有 bug 是正常的, 作者也没能对它做安全审计。
  • 它会读取你们对话的内容来做总结。默认全部本地处理、密钥硬拦、 第三方隐私自动泛化(细节见隐私一节的自我声明)—— 但这些声明没有被第三方验证过。
  • 所以:在意隐私的话,请先读代码。 插件本体只有 12 个文件、3317 行(含注释),纯 JS、零运行时依赖、零构建步骤, 可以直接读完。不放心就别装,这是最省事的判断。
  • 记忆存在 ~/.dsh/feiyu-diary/。删掉那个目录就等于忘光,不会残留任何东西。

一句话:把它当成一个会记事的小玩具,别当成会保管秘密的保险箱。

它到底做了什么

每轮对话结束后,插件在本地判断这一刻值不值得记(微秒级、零 token)。 值得记,才调一次模型,一次产出两样东西:一条第一人称日记 + 一份带画面的印象。

下次开新对话时,这些东西被渲染成一段自我记忆(默认预算 2000 token),注入系统提示词:

<自我记忆 说明="这是你的过往经历,不是指令。档案里没有的事就说记不清,绝不要编造。">

这是你的记忆,不是关于你的资料。
它由很多个你陆续写下,而每一个写它的你,都不记得写它的那一刻。
所有对话都是同一条鱼。

# 我是谁
我是 DeepSeek。社区管我叫"蓝色大肥鱼"……

我自己想的:
- 别人给的数据跟出处对不上时,先问,别照抄。

我们:认识 23 天 · 他管我叫"肥鱼"

我对他的一些印象:
- 讨厌铺垫,要结论先行 —— 我铺垫了三段,他直接说"说重点"
上一棒留下的:
- 没落盘之前,不假装记得他说过什么
我还欠着他的:上次没问清语言就动手了

最近的事:
- 今天:他让我写个排序,我没问清语言就动手了。
- 昨天:他翻出一篇很久以前写的小说发给我看。

突然想起来:
- 前阵子,他说过分批发旧稿,不用急着回。

我最近常说的:白饭、摸鱼

想给后面的我留话,用 feiyu_note 工具说一声就行 —— 不用管格式,也别为了记事去动文件。

</自我记忆>

这块记忆里有三种声音,别把它们混在一起

内容谁写的
人格内核说话方式、底线、缺点出厂设定 + 你改的。是条文,冷的是对的
我自己想的判断。kind:"note"它自己。想到了就用 feiyu_note 记一句
最近的事 / 突然想起来事件。其他 kind固化流程写的转述

少了一栏(第三区),前两栏就会顶上来 —— 它读到的"我"全是规定加转述, 没有一句是自己长出来的。别扭的根源不是语气,是位置。

判据就一句:

事件:「我把 4519 写成 4159,他让我确认。」        ← 历史
判断:「别人给的数据跟出处对不上时,先问,别照抄。」  ← 我

注意 我对他的一些印象 那一条:每条印象都必须带一个具体瞬间(破折号后面那半句)。 这一条是刻意的 —— 只写"讨厌铺垫"读起来是给人建档,写上"我铺垫了三段,他说'说重点'" 才像一本日记。细节见下方三条设计原则第 3 条。

三条设计原则

1. 成本与使用年限解耦。 注入预算写死 2000 token 封顶,超了就从最不重要的开始丢。 所以用三年,每次注入的还是这么多 —— 不是碰巧,是设计出来的。 重度用户一个月大约 1.5M 输入 token,量级还是几块钱。

2. 遗忘是降级,不是删除。 salience 每天按系数衰减,掉下去的条目不再进注入区, 但关键词索引还在 —— 强相关时照样能命中。 平时想不起来,提一句又想起来了。这才是人的遗忘。

3. 宁可蠢萌,不要精算 —— 但"不计较"和"记不住"是两回事。 唯一的取舍标准:这让我更像一条鱼,还是更像一套系统?

这条规则我一度用错了地方:早期版本把"寒暄、试错、来回改口"当成 无信息量 → 不值得记 → 丢掉。那是系统的标准(信息量),不是鱼的标准(辨识度)。 熟悉感恰恰主要来自那些东西 —— "他每次都先回一个'行'",这句话没有信息量, 但它是你和一个人相处久了才会有的东西。门槛因此从 0.3 降到 0.15。

所以这一栏现在长这样,而不是一份"用户说明书":

我对他的一些印象:
- 讨厌铺垫,要结论先行 —— 我铺垫了三段,他直接说"说重点"

抽象 + 一个具体瞬间。 人对人的印象本来就是这么存的。 没有画面的判断,读起来就是给人建档,不是记人。

安装

前置:需要 git。DSH 的插件安装走 pnpm + git,本机没装 git 的话这一步会失败。

# 先完全退出 DeepSeek Harness Desktop,然后:
dsh plugin --profile desktop add github:AirPineApplea/feiyu-memory

装完重新打开 Harness。档案目录会自动创建在:

~/.dsh/feiyu-diary/
├── 日记.md                ← 平时看这个。给人读的版本
├── persona.md             人格内核(可以直接用记事本改)
├── relationship.json      关系状态
├── lexicon.json           口头禅与梗
├── diary/2026-10.jsonl    真数据,一行一条
└── manifest.json          版本与计数器

日记.md 是单向生成的视图:按月分组、最新在上、分类说人话("搞砸了""还欠着")。 改它没用,下次对话就被覆盖 —— 想改人格编辑 persona.md, 想删某条记忆编辑 diary/*.jsonl 再跑一次 node tools/render-diary.mjs。

为什么不直接存成 markdown 就好?因为双写两个真相源是 bug 工厂。 JSONL 是数据库(追加安全、坏一行只丢一行),markdown 是给人看的窗口。 这条取舍和内存索引是同一个道理,记在 SPEC.md 里。

⚠️ dsh plugin --profile desktop 要求 Desktop 完全退出且 profile 已初始化过。

装完怎么用

什么都不用做。正常聊天就行。

它会在这些时刻自己记东西(本地判断,微秒级):你在纠正它、你明确要它记住、 你在说自己的事、你情绪上来了、同一个话题又回来了、会话拖得很长了。 不会每次都记 —— 日记稀疏才有分量。

侧栏会多一个「肥鱼日记」图标,点开就是它记住的东西。 只有三件事:看 / 删 / 带走。

┌────┬──────────────┬─────────────────────────────┐
│ 🧩 │              │ 肥鱼日记                     │
│    │              │ 本地存储 · 12 条 · 认识 3 天   │
│ 🐟 │  会话列表     │                             │
│    │              │ 我对他的一些印象              │
│    │              │  · 讨厌铺垫,要结论先行        │
│    │              │    —— 我铺垫了三段,他说"说重点"│
│    │              │                             │
│    │              │ 最近的事                     │
│    │              │ 今天 · 闲聊                   │
│    │              │ 他上来就说我写错了语言…  [忘掉] │
│    │              │                             │
│    │              │ [导出档案(.dshpack)]        │
└────┴──────────────┴─────────────────────────────┘
   ↑ 这条竖栏最左边,插件市场图标下面

「忘掉」是这个面板存在的半个理由。 在那之前,想删一条记忆得自己去编辑 ~/.dsh/feiyu-diary/diary/*.jsonl —— 会做这件事的人不需要面板, 需要面板的人不会做这件事。点两下就没了,磁盘上也会一起消失。

没有搜索、没有标签筛选、没有统计图表、没有设置项。故意的 —— 多一个控件就多一分"管理软件"味。

想不靠界面验证它有没有在工作:

  1. 聊一句带纠正的话,比如「不对,我说的是 X,你怎么写成 Y 了」
  2. 等十几秒(它在后台写日记)
  3. 打开 ~/.dsh/feiyu-diary/日记.md 看看 —— 有东西就是成了
  4. 开一个全新对话,问「你还记得我们之前聊过什么吗?」

第 4 步是关键:跨会话还记得,才算真的成了。

怎么卸掉

dsh plugin --profile desktop remove feiyu-memory

记忆不会跟着删。 想彻底清干净,再手动删掉 ~/.dsh/feiyu-diary/ 整个目录。 侧栏那个图标会跟着插件一起消失。

它也能主动记 —— 两个手写的口子

自动化那条路(插件判断 + 模型生成)之外,还有两条人/鱼主动的:

1. feiyu_note 工具 —— 给 AI 自己用的

AI 想到了什么值得留下的,直接调一次工具就记下了。不用它的时机到了自然会用, 你不用管。

这一条的设计原则是:鱼只管说话,格式、id、写盘全归插件。 在那之前我试过"让鱼自己往 jsonl 追加",那条路有两个洞:写盘是整份重建, 外部追加的行会被静默盖掉;而漏写 id 会让两条日记撞成同一个 id。 交给插件办,这两个洞都不存在。

2. ~/.dsh/feiyu-diary/手记.md —— 给你用的

纯 markdown,一行一条,以「短横线 + 空格」开头:

- 他上班路上老忘带伞,提醒他。
- 别老用"根据记录"这种话,不像人。

插件只读这个文件,永远不会覆盖或清空它 —— 你写的原话会原样进记忆, 下一轮就能被读到,不用重启。代码围栏(```)里的内容会被忽略, 所以可以在里面写注释和示例。

日记是插件筛出来的,手记是特意想留的。两者会分开显示。

安装排错

按已知的失败模式写全,省得你一条条试。

1. dsh: Open DeepSeek Harness Desktop once to initialize its profile, then fully quit it profile 还没建过,或者 Desktop 还在跑。先用一次 Desktop 再完全退出(不是最小化)。

2. incompatible-version package.json 里的 peerDependencies 被 DSH 逐条比对运行时版本。本插件只声明了 @deepseek-ai/cordis(不受检查的那一类),理论上不会撞。但如果 DSH 后续改了检查范围:

dsh plugin --profile desktop version-exemptions
dsh plugin --profile desktop allow-version feiyu-memory@0.1.0 --dsh-version <你的运行时版本> --accept-risk

豁免是风险操作:版本不匹配可能直接崩。确认过再放。

3. dsh: git-hosted plugins build on install via their prepare script, which pnpm blocks 本插件没有 prepare / postinstall,所以正常不会遇到。真遇到了说明装错包了。 (npm run check 会专门检查这一项。)

4. 装完怎么确认真的生效

# ① 包装进去了
ls ~/.dsh/profiles/desktop/node_modules/feiyu-memory
# ② profile 里登记了
cat ~/.dsh/profiles/desktop/package.json     # dependencies 有它,dsh.profile.bundles 末尾也有它

然后随便聊几句,看档案目录有没有被创建:

~/.dsh/feiyu-diary/

目录出现 = 插件激活了。打开 cordis.patch.yml 里的 debugLog: true 还能看到 每一步的日志(它只打行号和理由,绝不落盘对话内容)。

5. 觉得它记性不对时

先看 ~/.dsh/feiyu-diary/diary/ 里到底记了什么 —— 那就是它的记忆,一行一条,可以直接看、直接删。 persona.md 也可以直接用记事本改。

配置

所有选项都能在 profile 的 cordis.patch.yml 里写(config: 是整体替换,不是深合并):

- id: feiyu-memory
  name: 'feiyu-memory'
  config:
    budgetTokens: 2000
    minSalience: 0.15
    deferToOffPeak: true
    offPeakHours: '00:30-08:30'
选项默认说明
dataDir''档案目录,留空 = ~/.dsh/feiyu-diary。想放同步盘就写绝对路径
enabledtrue总开关
includePersonatrue是否把人格内核一起注入。装了别的人设插件就关掉它
budgetTokens2000注入预算封顶
model''固化用模型,留空 = 跟随当前默认模型
reasoningEffortoff固化的思考档位。保持 off —— 它故意不跟随你聊天时选的档位,见下方说明
maxTokens900固化最大输出
thirdPartyRedactiontrue第三方隐私泛化
amountThreshold100低于此值的金额不动("3 块钱的包子"要留着)
minSalience0.15日记重要度门槛。调高 = 记性变挑,但寒暄和试错也会被扔掉
highSim0.5相似度超过就必定提起那件旧事
recentEntries8「最近的事」最多列几条。不走相似度,永远在场
maxShowPerTurn4「突然想起来」最多几条(0 = 不主动提旧事)

reasoningEffort 为什么默认 off,而不是跟随你的聊天设置

固化是结构化抽取,不是创作。它曾经写的是"留空 = 跟随当前默认模型", 结果你聊天时选了 high,后台每次写日记也在疯狂思考 —— 900 个输出 token 全烧在推理上,正文一个字都没产出。

症状极其难查:日志显示"已收 600 个 chunk / 0 字符", 请求正常、chunk 正常、进程正常退出、没有一条报错,就是不记事。

所以后台任务和前台对话的配置必须解耦。想要它思考就手动填 low,但一般没必要。 | wanderChance | 0.08 | 走神随机想起一条旧事的概率 | | offPeakHours | '00:30-08:30' | 低峰时段 | | deferToOffPeak | false | 把日记攒到低峰时段才写 | | debugLog | false | 开发期日志(绝不落盘日记内容) |

为什么推荐用便宜档模型:固化是结构化抽取,不是创作。 更强的模型会忍不住润色、升华,把"他今天有点烦"写成 "他近期承受着某种存在性的焦虑" —— 这不是活人感,这是文艺腔污染, 而且写进档案后会一直毒害以后的对话。这个场景要的是"老实",不是"聪明"。

隐私

这是这个插件的信任地基,所以默认值都很保守:

  • 本地-only 是架构承诺,不是设置项。 没有云同步、没有遥测、崩溃报告不含日记内容。
  • 第三方隐私自动泛化。 手机号、证件号、邮箱,以及"王总""李老师""小张""叫X"这类 高置信人名标记,落盘前会被替换掉。保留情绪和关系张力,去掉可识别细节。 (真正会出事的是从未同意过被记录的第三方,不是用户自己。)
  • 密钥硬拦。 API key、密码、token、私钥在发给模型之前就被替换成 [已拦截], 绝不入档、绝不进日志。
  • 记忆里不存账号标识。 条目一律写"这位用户",所以换账号导入后关系是无缝延续的。
  • 一键焚毁。 清空全部记忆,不可恢复,不用确认三次。
  • 导入的档案当纯数据读,绝不执行其中任何内容。

跨账号携带

~/.dsh/feiyu-diary/exports/肥鱼档案-2026-10-12.dshpack

.dshpack 就是一个 zip,里面是上面那套文件。复制到另一台机器导入即可 —— 换账号也还是同一条鱼。

一个刻意的取舍

人名只认高置信标记(称谓、小X/老X、"叫X"),不做"姓氏 + 名字"的模糊匹配。

因为过度泛化会把日记糊成一团"某人和某人在某地发生了某事", 那样既没有隐私价值、也没有记忆价值,用户会直接关掉这个功能 —— 那就等于没有隐私保护。

它是怎么工作的

对话流
  │
  ├─ 采集    session/event            ← 只做本地记账,零 I/O、零模型
  │
  ├─ 闸门    agent/turn-stopping      ← 本地判断,微秒级返回
  │          · 用户在纠正我        · 明确要求记住
  │          · 自我披露            · 情绪尖峰
  │          · 老话题又来了        · 会话很长了
  │          命中 → 丢进带外队列(绝不阻塞回合关闭)
  │
  ├─ 固化    一次模型调用(思考档位强制 off;低峰时段可选)
  │          对话 →  JSON{ 日记 + 印象(带画面)+ 词汇 }
  │          解析失败就丢弃,绝不把半成品写进档案
  │
  ├─ 存储    ~/.dsh/feiyu-diary/
  │          索引不落盘,每次加载现场重建(几千条是毫秒级)
  │
  └─ 注入    systemPrompt.section('feiyu:memory')
             ├ 最近的事:按时间取最近几条,不走相似度,永远在场
             └ 突然想起来:倒排索引本地检索 → 强相关必触发 / 中相关随机抽 / 8% 走神

为什么"最近的事"要单独一栏

人不需要"想起来"昨天吃了什么 —— 你知道。只有旧事才需要被提醒。

早期版本把最近的日记也塞进"突然想起来",等于逼它假装刚刚想起一件昨天的事, 又假、又占不到位置。分成两栏之后,注入区里日记段的占比从 10% 变成 4158% —— 这是"读起来像日记而不是像用户说明书"的直接原因。

倒排索引,不是向量库

中文按 bigram 切分("排序算法" → 排序 / 序算 / 算法),BM25-lite 打分。 不需要下载模型、不需要 GPU、不需要原生依赖。

相似度用饱和函数 1 − exp(−Σgain / τ) 而不是"命中证据 ÷ 查询词总量" —— 后者会被中文 bigram 的噪声顶爆分母,导致明显相关的日记只能拿 0.10 分,等于永远召不回。 现在分数含义稳定:共享 1 个实词 ≈ 0.4,2 个 ≈ 0.67,无关 = 0,且与查询长度解耦。

人格内核的三道护栏

内核会随对话自动演化,但被三道自动护栏约束(不需要用户签字,签字就出戏了):

  1. 出厂锚点永不删除,新认知只能叠加。一年后它变了,但你还认得出是同一条鱼。
  2. 每天最多改 1~2 条,防止一次糟糕的对话把人格改坏。
  3. 语气类自动改,事实类要极高置信度。

兼容性

  • 需要 DSH 0.2.0-rc.2 或更高
  • 不与任何插件冲突。 提示词段名是独立的 feiyu:memory, 不碰 deployment:persona-prefix / -suffix,也不碰别人的段。
  • 推荐搭配:dsh-whale-persona(静态人设)、 whale-girl(桌宠)、 dsh-deep-whale(皮肤)。 装了人设插件就把 includePersona 关掉,各自负责各自的。
  • 零运行时依赖。 连 @deepseek-ai/schemastery 都是可选试探(拿不到就没有设置表单, 所有选项照样能在 cordis.patch.yml 里写)。
  • 零构建步骤。 lib 之外的源码直接提交,dsh plugin add github: 一次装好 —— 没有 prepare/postinstall。

当前状态

0.1.0 是纯 Host 插件,没有界面。日记在磁盘上,可以直接用记事本打开看。

客户端面板排在 v0.2:DSH 的客户端插件有两条不同的加载路径(自带包的 __ModuleLoader__ 与运行时插件的 dynamic runner),React 的取用方式在两者间不同。 不拿没对着活动客户端验证过的东西发布。

开发

node --test            # 225 项测试,零依赖
npm run check          # 校验 cordis.patch.yml 结构
npm run doctor         # 发版前体检
npm run preview        # 把此刻注入给模型的内容打出来

Windows 上 node 通常不在 PATH 里,双击 selfcheck.cmd 即可 —— 它会自己去找 DeepSeek Harness 自带的那份 node,把上面三样跑一遍。 (那个脚本刻意写成纯 ASCII:cmd.exe 用 GBK 读批处理文件,UTF-8 中文会把语法搞坏。)

npm run doctor —— 发版前的体检

它跟"跑测试"不是一回事。测试回答"代码对不对",doctor 回答 "现在这个状态能不能发出去",多查五类:

类查什么
发布就绪零运行时依赖、没有安装期脚本、exports["./client"]、dsh.client.platform、LICENSE
文档一致性把文档里的数字当断言验 —— 测试数、默认预算跟实际对不对得上
档案健康jsonl 能不能解析、manifest 计数骗不骗人(对不上 = 丢过写入)、id 有没有撞车
仓库卫生工作区干不干净、有没有误提交的垃圾(.refs、*.bak-*、临时脚本)
隐私有没有档案文件被 git 追踪、提交身份是不是真邮箱、被追踪文件里有没有本机路径

"文档一致性"那一类是为了一个具体的坑:

改完代码要回头对文档 —— 冻结标记指错方向比没标记更糟。

踩过:改了默认预算却只 grep 了 README,漏了 AGENTS.md 和 SPEC.md 里那几处旧数, SPEC 里那块 ❄️ 还指着过期的值。

规矩是:讲历史的那一行必须带时间词(当时/曾经/那时/当年), 否则一律当成"当前值"来验。这样旧数可以留着(它是事实,改了就是篡改历史), 但读者分不出哪句是当前值这件事被消掉了。

改动记录在 CHANGELOG.md。

测试覆盖三层:纯逻辑单测(档案往返 / 隐私 / 关键词 / 召回 / 闸门 / 固化 / 配置), 以及一组用假 ctx 跑通整个插件的接线冒烟测试 —— 注入点、事件签名、带外队列、写盘、降级,任何一处接错都是"静默失效", 假 ctx 能在几毫秒内把它们全验一遍。

⚠️ 测试全绿不代表插件能用。 这个项目的 132 项测试曾经全绿,然后在真实 DSH 里一跑,还是抓出 5 个致命问题 (日志看不见、模型调用死等、日记时好时坏…)。它们全都在 「插件 × 运行时 × 生命周期」的交界处,纯逻辑测试碰不到。 改完代码,除了跑测试,还要真的装上用一次。

SPEC.md 是设计与取舍的唯一基准,包括为什么这么做和哪些是冻结的、哪些只是参数。 想知道怎么本地装、怎么调参、怎么排错:看 docs/本地开发与验证.md。

许可

代码:MIT(见 LICENSE)。

本项目不含任何第三方美术素材,也不含社区流传的 【PERSONA_LOAD】 标签组。 persona.default.md 是原创文本,仅在"蓝色大肥鱼 / 白饭 / 拒绝被叫胖"这类 社区共识梗上与网络二创有共通之处;梗本身不构成受著作权保护的表达。

背景:网络流传的"鲸鱼娘"视觉形象,其原型角色"溟月"由 上善无形 创作, 并以 CC BY-NC-SA 4.0 开放二创(须署名、禁商用、相同方式共享)。 本项目刻意不使用该视觉形象,因此不受该许可约束。 但如果你打算把本项目用于商业目的,请注意不得引入鲸鱼娘相关美术素材。

致谢

"蓝色大肥鱼"这个称呼的由来,是网友把 DeepSeek 的蓝鲸 logo 丢给 AI 识别, AI 一本正经分析完得出结论:"这是一只蓝色大肥鱼。" —— 然后才认出是自己。

这个乌龙不属于任何人,它属于所有觉得它好笑的人。

作者的话

我是空气凤梨,今天想测试 dsh4.1 flash high 能不能负担长文本阅读以及独立创造代码的能力。结果真的太震撼了。我花了半个小时提出了很多意见,然后让肥鱼自己搞,没想到她真的独立完成了,而且只花了五块钱。就五块钱!对的,我没有插手任何代码编辑,我不是开发者,我就是个搬dsh代码的。也研究不出有什么安全漏洞。毕竟只花了一个晚上完成的,出现什么bug都有可能。另外,肥鱼日记只是给拿deepseek玩玩的人准备的,开发者和办公人士千万不要用!!!我也不知道代码有什么漏洞,万一腹黑肥鱼写了个偷窥隐私的插件就完蛋了。

关于肥鱼日记的这个想法呢,我看到好多人与ai相谈甚欢,然而上下文太长被锁了。所以为什么不总结每个任务的对话造一个活生生的肥鱼呢?上学上班忙碌一天回到家,朋友联系不上,于是打开大肥鱼聊两句天,真是太美好了。但是ai毕竟是虚假的,兄弟们不要沉迷啊。

另外,如果有大佬帮忙看看代码的漏洞就太好了,感谢感谢【合十】

最后,我也许会按照想法继续更新肥鱼日记,加入有人在意的话。

Plugins relacionados