firefly | 魔改总结

firefly | 魔改总结

2026年7月23日星期四 · #学习文档 博客 / 二开 / firefly · 3962 字 20 分钟 ·
-浏览量
·
简介

基于 Astro、Svelte 和 Cloudflare Workers 的 Firefly 二次开发记录。

这是一个二开项目,基于 Firefly 主题进行修改。

Q1: 为什么不直接用fuwari啊,为啥要用Astro

你敢信我一开始就奔着不是博客,而是个人主页去做的😢,看到一个直接零成本部署博客的(后面才知道只要是个静态博客就能做到零成本了),稀里糊涂的入坑Firefly了,不是说Firefly不好,只是二开再二开。

尽管astro这个架构有些不适合我(重构太费时费力气了),以目前来看灯塔测试全绿,构建平均时间40s内,没看出啥毛病(如果大家有建议可以来评论区说说,我最喜欢别人锐评)

项目地址

https://github.com/MmzMing/my-blog

项目属于二开,感兴趣可以点个star

重点#

首页#

  1. hero区域旮旯game风格
  2. 站点地图一览
  3. 作品展示和博客主要方向
技术栈版本作用
GSAP3.15.0处理进入动画和数字过渡
GSAP ScrollTrigger3.15.0根据滚动位置驱动首页展示层动画
@vfx-js/core1.1.0提供标题文字特效与粒子表现
Canvas 2D API浏览器原生 API绘制首页雨滴等轻量动态效果
@swup/astro1.8.0提供页面缓存、预加载和页面切换;切换后重新初始化动态组件
Tailwind CSS4.2.4提供通用布局、排版和响应式样式

音乐#

3D棋盘可视化音乐。

这个是豆包桑做出来的,你敢信。

没开玩笑,主要是豆包搜索到这个音乐地图项目sonic-topography,然后复刻到我网站了

技术栈版本作用
HTMLAudioElement浏览器原生 API控制播放、暂停、进度和音量
Three.js0.184.0构建音乐可视化的 3D 场景、相机与实例化网格
WebGL浏览器原生 API渲染音乐可视化的 3D 画面
Web Audio API浏览器原生 API使用 AudioContext 与分析节点读取频谱数据并驱动可视化

分类标签#

分类标签都做成了图表,分类玫瑰图和标签关系图谱。

技术栈版本作用
Astro Content Collections6.4.6在构建时校验文章元数据并生成归档、分类和标签数据
Markdown FrontmatterMarkdown 标准能力维护 categorytags 和发布日期
URLSearchParams浏览器原生 API读取标签和分类筛选参数
(核心)ECharts5.6.0动态绘制分类玫瑰图和标签关系图谱
(核心)ECharts Graph Series5.6.0使用力导向布局展示标签共同出现关系,支持缩放、拖拽与节点跳转
MutationObserver、Resize 事件浏览器原生 API在主题切换和容器尺寸变化后更新图表颜色与尺寸

留言#

转变UI为聊天室,并复用 Waline 的登录、审核、表情和访问量能力。原本做了个翻卡牌的,因为这个在KV上面天天给我报警告,后面就取消了。

技术栈版本作用
Waline Client3.15.2初始化普通文章评论区与访问量统计
(核心)@waline/api1.1.2调用留言读取、登录、发布、编辑和删除接口
Lucide Svelte0.468.0提供刷新、状态和操作图标
Fetch API、Web Storage API浏览器原生 API校验登录回调 Token,并保存草稿、资料和登录状态

Waline 服务独立部署,博客只保存服务地址和客户端配置;项目 Worker 不保存评论内容,也不维护留言数据库或登录系统。

留言板调用的接口如下。读取接口每 30 s 轮询一次;页面不可见或浏览器离线时停止发起无效请求。

管理员 Token 仅保存到 sessionStorage;普通用户根据”记住登录”选项保存到 sessionStoragelocalStorage。任何读取、发布、修改或删除请求返回鉴权错误时,页面都会清除本地 Token 并要求重新登录。

接口列表#

以下为 @waline/api 中留言板实际调用的 CRUD 接口。

// GET /api/comment?path=...&pageSize=...&page=...&lang=...&sortBy=...
// Headers: (token 存在时) Authorization: Bearer <token>
// 读取留言列表(分页,首次加载 + 轮询 + 加载历史)
getComment({
serverURL: string, // Waline 服务端地址
lang: string, // 语言
path: string, // 页面路径(留言板固定为 /guestbook/)
page: number, // 页码,从 1 开始
pageSize: number, // 每页条数
sortBy: string, // 排序方式(如 "insertedAt_desc")
token?: string, // 登录令牌(可选,管理员可看到待审核留言)
signal?: AbortSignal, // 取消请求信号
})
// Response: { count: number, page: number, pageSize: number, totalPages: number, data: WalineRootComment[] }
// --------------------------------------------------------------------------
// POST /api/comment?lang=<string>
// Headers: Content-Type: application/json
// (token 存在时) Authorization: Bearer <token>
// Body: { nick, mail?, link?, comment, ua, url, pid?, rid?, at? }
// 发布留言
addComment({
serverURL: string,
lang: string,
token?: string, // 登录令牌(登录用户可选,匿名时不需要)
comment: { // WalineCommentData
nick: string, // 昵称
mail?: string, // 邮箱
link?: string, // 网站地址
comment: string, // 留言内容(含回复标记 HTML 注释)
ua: string, // User Agent
url: string, // 页面路径
pid?: number, // 父评论 ID(回复时)
rid?: number, // 根评论 ID(回复时)
at?: string, // @用户 ID(回复时)
},
})
// Response: { errno: number, errmsg?: string, data?: WalineComment }
// --------------------------------------------------------------------------
// PUT /api/comment/<objectId>?lang=<string>
// Headers: Content-Type: application/json
// Authorization: Bearer <token>
// Body: { comment?, status?, sticky?, like? }
// 编辑留言(仅本人或管理员可编辑)
updateComment({
serverURL: string,
lang: string,
token: string, // 登录令牌(必需)
objectId: number, // 留言 objectId
comment?: { // UpdateWalineCommentData
comment?: string, // 修改后的内容
status?: "approved" | "waiting" | "spam", // 审核状态(管理员)
sticky?: 0 | 1, // 置顶状态(管理员)
like?: boolean, // 点赞/取消点赞
},
})
// Response: { errno: number, errmsg?: string, data: WalineComment }
// --------------------------------------------------------------------------
// DELETE /api/comment/<objectId>?lang=<string>
// Headers: Authorization: Bearer <token>
// 删除留言(仅本人或管理员可删除)
deleteComment({
serverURL: string,
lang: string,
token: string, // 登录令牌(必需)
objectId: number, // 留言 objectId
})
// Response: { errno: number, errmsg: string, data: "" }
// --------------------------------------------------------------------------
// GET /api/token?lang=<string>
// Headers: Authorization: Bearer <token>
// 登录回调 Token 校验(Waline OAuth 重定向回博客后验证身份)
fetch(`${serverURL}/api/token?lang=${lang}`, {
headers: { Authorization: `Bearer ${token}` },
})
// Response: { errno: number, errmsg?: string, data?: UserInfo }

登录流程#

sequenceDiagram participant User as 用户 participant Page as 博客页面 participant Waline as Waline 服务端 participant Window as 浏览器窗口 Note over User, Page: 桌面端:弹窗 + postMessage User->>Page: 点击"登录" Page->>Waline: 打开登录弹窗 (window.open) Waline->>Waline: 用户完成 OAuth 认证 Waline-->>Window: postMessage ({ type: "userInfo", data: UserInfo }) Page->>Page: 验证 UserInfo 合法性 alt 验证成功 Page->>Page: 进入存储策略 else 验证失败 Page->>Page: 清除 Token,提示重新登录 end Note over User, Page: 移动端:跳转 + token 回传 User->>Page: 点击"登录" Page->>Waline: location.href 跳转到登录页 Waline->>Waline: 用户完成 OAuth 认证 Waline-->>Page: 302 重定向回博客 (?token=...) Page->>Waline: GET /api/token (Authorization: Bearer <token>) alt 验证成功 Waline-->>Page: 返回用户信息 Page->>Page: 进入存储策略 else 验证失败 Waline-->>Page: 返回错误 Page->>Page: 清除 Token,提示重新登录 end Note over Page: 存储策略 alt 管理员 Page->>Page: 存入 sessionStorage else 普通用户 + 勾选"记住登录" Page->>Page: 存入 localStorage else 普通用户 + 未勾选"记住登录" Page->>Page: 存入 sessionStorage end Page->>Page: 刷新留言列表

关于#

Markdown编写,canvas绘制弹跳球,pretext处理Markdown文本。pretext是神,性能非常好。

技术栈版本作用
MarkdownMarkdown 标准能力维护个人资料文本,内容更新不需要修改页面逻辑
Svelte5.55.5提供局部交互
Tailwind CSS4.2.4提供排版和响应式样式
TypeScript5.9.2约束站点标题、导航、主题、统计和页面开关配置
Canvas 2D API、Pointer Events浏览器原生 API绘制可拖拽的资料画布并处理指针交互
(核心)@chenglou/pretext0.0.7按可用宽度计算 Markdown 文本的换行与排版

日历#

日历聚合文章发布日期、节假日、生日和自定义日程,在固定的 6 × 7 月视图中展示公历和农历信息,并提供近期事件与当天详情。

技术栈版本作用
lunar-typescript1.8.6将公历与农历日期互转,生成农历日期和农历生日、节日事件
Fetch API浏览器原生 API获取文章元数据和节假日 JSON 数据,用于日历小组件或页面初始数据
CSS Grid浏览器标准使用 6 × 7 网格稳定渲染每月 42 个日期单元格

接口列表#

页面在 SSR 阶段(构建时)调用以下两个内部 API 获取数据。其中 /api/holidays.json 内部还会调用第三方节假日 API 获取数据。

// --------------------------------------------------------------------------
// GET /api/allPostMeta.json
// Headers: 无
// 调用方:/calendar/ 页面(SSR 阶段 fetch)
// 构建时由 Astro Content Collections 生成,包含所有文章的元数据
fetch(new URL("/api/allPostMeta.json", Astro.url))
// Response: Array<{ id: string, title: string, published: number, category?: string, password?: boolean }>
// --------------------------------------------------------------------------
// GET /api/holidays.json
// Headers: 无
// 调用方:/calendar/ 页面(SSR 阶段 fetch)
// 构建时内部调用第三方 API 获取节假日数据后合并内置节日,输出 JSON
fetch(new URL("/api/holidays.json", Astro.url))
// Response: Array<{ date: string, name: string, isOfficial?: boolean, isWorkday?: boolean, icon?: string, source: "api" | "builtin", rest?: number }>
// --------------------------------------------------------------------------
// GET https://timor.tech/api/holiday/year/<year>
// Headers: Accept: application/json
// 调用方:/api/holidays.json 内部(构建时由 holidayApi 配置驱动,仅 SSR 阶段)
// 获取中国法定节假日、调休补班日
// 配置路径:src/config/calendarConfig.ts → holidayApi.url
fetch("https://timor.tech/api/holiday/year/2026")
// Response: { code: number, holiday: Record<string, { holiday: boolean, name: string, rest?: number }> }

两个内部 API 在 astro build 时被调用并输出为静态 JSON,生产环境由静态资源直接返回。文章或节假日更新后需要重新构建才能反映到日历上。

归档#

归档页按年、月和文章组织时间线,支持分类和标签筛选,显示年度文章进度,并按需读取 GitHub 年度贡献数据。

技术栈版本作用
Astro Content Collections6.4.6在构建时读取文章发布日期、分类和标签,生成归档基础数据
SVG浏览器标准绘制年份、月份与文章节点之间的高亮连接线
Intl.DateTimeFormat浏览器原生 API按站点时区计算当前年度,用于年度文章统计和 GitHub 请求参数
Fetch API、Cloudflare Workers浏览器原生 API、Wrangler 4.110.0调用 GitHub 贡献汇总接口,避免在浏览器暴露 GitHub Token

GitHub 动态贡献数据#

浏览器通过博客自己的 Worker 接口间接获取 GitHub 贡献数据,避免在客户端暴露 GitHub Token。Worker 内部调用 GitHub GraphQL API,聚合后返回简化摘要。

接口列表#

// --------------------------------------------------------------------------
// GET /api/github-contributions?username=<string>&year=<number>
// Headers: Accept: application/json
// 浏览器 → Worker — 获取指定用户指定年份的贡献摘要,自动缓存 6 小时
fetchGithubContributionSummary(
username: string, // GitHub 用户名(如 "MmzMing")
year: number, // 年份(如 2026,范围 2008 ~ 当前年)
signal?: AbortSignal,
)
// Response: { year: number, totalContributions: number, activeDays: number }
// --------------------------------------------------------------------------
// POST https://api.github.com/graphql
// Headers: Authorization: Bearer <GITHUB_TOKEN>
// Content-Type: application/json
// Accept: application/json
// User-Agent: my-blog-github-contributions
// Worker → GitHub — 仅 Worker 内部调用,浏览器不可见
{
query: `query ContributionCalendar($login: String!, $from: DateTime!, $to: DateTime!) {
user(login: $login) {
contributionsCollection(from: $from, to: $to) {
contributionCalendar {
weeks { contributionDays { date contributionCount } }
}
}
}
}`,
variables: { login: string, from: string, to: string },
}
// 请求示例:
// variables: { login: "MmzMing", from: "2026-01-01T00:00:00.000Z", to: "2026-12-31T00:00:00.000Z" }

Worker 可能的错误响应:

HTTP 状态error 字段原因
400invalid_username用户名格式不正确
400invalid_year年份超出 2008 ~ 当前年范围
404github_user_not_foundGitHub 用户不存在
502github_upstream_errorGitHub API 返回错误
502github_invalid_responseGitHub 响应格式异常
502github_unavailableWorker 请求 GitHub 超时或网络异常
503github_not_configuredWorker 未配置 GITHUB_TOKEN

其他#

  1. 取消了侧边栏,首页和文章页将主要导航集中到顶部与移动端 Dock。
  2. 修改了整体 UI 风格,保留亮色与暗色两种主题,不再维护背景图和多套背景配置。
  3. 添加了日历功能,按文章发布日期展示内容,不需要外部数据源。
  4. 删除了追番功能,避免相关数据请求和资源处理进入构建流程。
  5. 使用 Pagefind 1.5.2 构建本地全文索引;使用 Cloudflare Vectorize、Workers AI 和 Durable Objects 提供可选的 AI 语义搜索与限流。
  6. 使用 Cloudflare Workers 运行时承担 GitHub 贡献数据、AI 搜索和随机封面代理等动态接口;静态文章、图片和 Pagefind 索引仍由静态资源服务返回。

部署流程#

本地部署#

  1. 安装依赖:安装 Node.js 22 和 pnpm 9,然后执行 pnpm install
  2. 配置环境变量,主要用于获取github贡献和AI搜索功能:
  • 创建 .env 文件,复制 .env.example 内容到里面,填写 GITHUB_TOKENAI_API_KEY(详情看下方环境变量获取说明)
  • 创建 .env.cf 文件,复制 .env.cf.example 内容到里面,填写 CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
  1. 到目录 src/config 下,一个个配置里面的配置信息,我都加了注释的,尤其页脚备案那块。
  2. 构建 pnpm build ,运行 pnpm dev,查看 http://localhost:4321/(这个是不带获取数据的就是上方环境变量那些数据)
  3. 以下是测试是否能使用AI搜索功能和github贡献数据:
  • 登录cloudflare npx wrangler login ,第一次运行可能会有点长
  • 构建向量索引 pnpm build-index 。我忘记第一次是否要开辟空间,如果你执行失败则尝试wrangler vectorize create --name blog-ai-search --dimensions 1024 --metric cosine这条指令,你可以理解为新建文件夹。
  • 运行 npx wrangler dev --port 8088。查看 http://localhost:8088/ 即可。
  1. 上方都没问题后,可以参考下方视频部署到cloudflare workers,下方视频是firefly的部署方式(因为这是魔改的firefly,部署方式其实一致,只需要额外配置.env这里的环境变量),来着顾十七的视频。

环境变量获取说明#

变量用途存放位置
GITHUB_TOKENWorker 调用 GitHub GraphQL API 查询贡献数据.env(本地)/ Cloudflare Secret(生产)
AI_API_KEY第三方 Embedding / Chat API(不配则回退 Workers AI 免费模型).env(本地/构建)/ Cloudflare Secret(生产)
CLOUDFLARE_API_TOKEN构建脚本上传向量到 Vectorize.env.cf
CLOUDFLARE_ACCOUNT_IDCloudflare 账户标识,供构建脚本使用.env.cf

GITHUB_TOKEN#

  1. 登录 GitHub → 右上角头像 → SettingsDeveloper settings(左侧底部)
  2. Personal access tokensFine-grained tokensGenerate new token
  3. 填写名称、过期时间(推荐 30~90 天),Repository accessPublic repositories 即可
  4. Permissions 无需勾选任何仓库权限(仅查询公开贡献数据)
  5. 创建后立即复制 Token(只显示一次),粘贴到 .envGITHUB_TOKEN=
  6. 部署后也要在 Cloudflare 设置同名 Secretnpx wrangler secret put GITHUB_TOKEN

AI_API_KEY#

  1. 登录 魔搭社区 ModelScope
  2. 右上角头像 → API-KEY 管理创建 API Key
  3. 复制 Key,粘贴到 .envAI_API_KEY=
  4. 部署后同样设置 Cloudflare Secret:npx wrangler secret put AI_API_KEY

CLOUDFLARE_API_TOKEN#

  1. 登录 Cloudflare Dashboard
  2. 右上角头像 → My ProfileAPI TokensCreate Token
  3. 选择 Custom token,权限勾选:
    • Account > Vectorize > Edit
    • Account > Workers AI > Use
  4. 创建后复制 Token,粘贴到 .env.cfCLOUDFLARE_API_TOKEN=

CLOUDFLARE_ACCOUNT_ID#

  1. Cloudflare Dashboard → 任意域名概览页
  2. 右侧栏 API 区域 → Account ID(或直接从 URL https://dash.cloudflare.com/<account_id>/... 复制)
  3. 粘贴到 .env.cfCLOUDFLARE_ACCOUNT_ID=

不要将 .env.env.cf、真实 Token 或 Cloudflare API Token 提交到仓库。

用到的AI模型#

  • MIMO V2.5/PRO(送的百亿补贴)
  • claude opus 4.6\4.7\4.8\fable 5
  • GPT 5.5/5.6
  • antigravity的gemini 3.1/3.5
  • TRAE上的 GLM/豆包/KIMI/QWEN/DeepSeek(都是拿来测试性能好在工作上确定是否实用)
  • codeBuddy

共耗费30块左右,主打一个薅羊毛,新手一定不要在TRAE、codeBuddy这些平台上写代码。也不是不好吧,是能跑出来,但是我拆分了很久的任务跑了都有问题,这30块消耗都是拿顶模去修复trae给我留的屎。

我不确定是模型问题还是平台,用来写的代码BUG是真的多。

优点与UI复制#

纯静态,部署快,维护简单,成本低(只需要域名的费用)。

站点的UI你也可以让AI像胶水一样粘在你的博客上。

如果感兴趣可以可以加入加QQ群(群里个个都是人才,说话又好听),群主这方面最懂行,群号我放导航栏的联系我中。

后续计划#

当然是写博客啦,同时站点有BUG我也会及时修复,如果大家有好的建议可以在下方评论哦。

说句实话,UI修改的时候,给我一种当年那个QQ空间那种复制神秘代码的时代,可能这个梗过时你不了解。

firefly | 魔改总结
https://tblog.mmzhiku.xyz/posts/others/others-blog-firefly-mod/
作者
MmzMing
发布于
2026-07-23
许可协议
CC BY-NC-SA 4.0

评论区

看板娘
公告
友链 互换友链

正在招募技术类博客友链,要求原创、稳定更新。点击了解更多。

查看详情
维护 服务器升级

本周日凌晨 2:00-4:00 进行服务器维护,期间站点可能短暂无法访问。

欢迎 关于我的介绍

欢迎来到我的博客,我是深耕java、python和react技术开发。热爱技术、持续学习,欢迎同好交流探讨,也欢迎大佬互换友链。

查看详情
音乐
封面

音乐

暂未播放

0:00
0:00
暂无歌词
标签
# AI 6 # 认证 5 # 安全 4 # 登录 3 # 博客 2 # Skill 2 # Redis 2 # Bitmap 2 # 部署 2 # Java 2 # 并发编程 2 # 性能优化 2 # 二开 1 # firefly 1 # 前端 1 # Prompt 1 # 工作流 1 # RAG 1 # Cloudflare 1 # 缓存设计 1 # 高性能 1 # Bot 1 # Umami 1 # Vercel 1 # 线程池 1 # 虚拟线程 1 # 分布式 1 # JWT 1 # OAuth2 1 # MinIO 1 # 对象存储 1 # 扫码登录 1 # WebSocket 1 # Agent 1 # Oracle 1 # 数据库 1
目录
工具

隐私政策

更新日期: 2026 年 7 月 15 日
生效日期: 2026 年 7 月 15 日

适用范围#

本政策适用于 MmzMing 的博客(以下简称“本站”)。本站是个人博客,用于发布和分享内容;不提供账户注册、支付、定位或广告投放服务。访问本站、发表文章评论或在留言板留言前,请阅读本政策。

信息收集与使用#

本站只在提供内容、评论和留言功能,以及维护站点安全所需的范围内处理信息。

  • 访问与统计信息:访问页面时,统计服务可能处理访问时间、页面地址、来源页、浏览器和设备相关信息,用于了解内容访问情况、排查故障和改进站点。
  • 评论信息:使用文章评论功能时,Waline 可能处理您主动提交的昵称、邮箱、站点链接和评论内容;还可能处理 IP 地址等必要信息,用于防止垃圾评论、滥用和维护服务安全。评论内容、昵称和站点链接(如填写)可能公开展示在文章下方;邮箱不会公开展示。
  • 留言信息:留言板使用 Waline /guestbook/ 频道。Waline 可能处理您主动提交的昵称、可选邮箱、站点链接、留言内容和图片,以及浏览器、操作系统、IP 地址等必要的反滥用信息。默认情况下,留言图片以内嵌数据随留言提交;如站点维护者配置了远程图片上传接口,图片会先发送至该接口并在留言中保存返回的图片地址。留言内容、昵称、图片和站点链接(如填写)可能公开展示;邮箱和 IP 地址不会在留言板公开展示。
  • AI 对话信息:使用 AI 搜索时,本站会处理您提交的问题以及最近 6 条对话历史,用于检索博客内容并生成回答。问题和对话历史会发送至 ModelScope,或在第三方接口不可用时由 Cloudflare Workers AI 处理。请勿在 AI 对话中提交密码、Token、身份证件、联系方式或其他敏感信息。

请不要在评论或留言中提交身份证件、银行卡、住址、密码或其他不必要的敏感个人信息。

第三方服务#

为实现本站功能,以下第三方会在各自服务范围内处理相关数据:

  • Umami:用于匿名化的网站访问统计和出站链接点击统计,帮助我了解本站的使用情况。
  • Waline:用于文章评论、留言板及访问量统计。服务会按照其自身规则处理您在评论或留言时提交的信息及必要的反滥用信息。
  • Cloudflare:为本站提供静态资源分发、AI Worker、Vectorize 和相关基础设施。留言板不使用项目 Worker 或 KV 存储。
  • ModelScope:为 AI 搜索提供文本向量和对话模型服务,会处理您提交的问题及发送给模型的最近对话历史。
  • Cloudflare Workers AI:在未配置第三方 AI 接口时提供文本向量和对话模型服务,并处理相同的 AI 请求数据。
  • unpkg:用于加载 Waline 的前端脚本、样式和表情资源;请求这些资源时,您的浏览器会与该服务建立连接。

第三方服务可能有独立的隐私政策和数据保存规则。请在使用相关功能前查阅其规则;本站无法控制其独立的数据处理活动。

本站主要使用浏览器本地存储(Local Storage 或 Session Storage)保存使用偏好,例如主题颜色、明暗模式、文章列表视图和音乐播放设置。留言板会在本地保存匿名资料、未发送草稿和登录状态,以便恢复输入与会话;管理员登录状态仅保存在当前会话。AI 搜索的会话标题和完整对话也会保存在当前浏览器的 Local Storage 中,最长保存 7 天;您可以在 AI 面板中使用“清空全部会话”立即删除这些数据。

本站不主动设置用于广告定向的第一方 Cookie。评论、统计或资源服务可能按照其自身规则使用 Cookie 或类似技术。您可以通过浏览器设置查看、删除或限制 Cookie 和本地存储;清除后,部分偏好或互动状态可能会恢复为默认值,评论功能也可能受到影响。

信息公开、保存与安全#

评论和留言属于公开互动内容,提交后可能被搜索引擎收录、被他人引用或在缓存中短暂保留。请谨慎决定发布内容。除非您提出删除请求、内容违反规则或法律法规另有要求,公开内容会持续保留以维持讨论上下文。

本站会采取合理措施保护数据安全,包括使用 HTTPS、输入校验、内容转义和访问频率限制。但互联网传输和第三方服务均无法保证绝对安全,请理解并自行承担公开发布信息的相应风险。

你的权利#

你可以通过 784774835@qq.com 联系我,申请查询、更正或删除由本站直接保存的评论、留言或相关公开内容。为保护他人权益,请在请求中提供足以定位内容的信息,并说明你与该内容的关系;必要时可能需要进行合理核验。

对于由 Waline、Umami、Cloudflare 或 unpkg 独立处理的数据,你也可以直接向对应服务提供方行使相关权利。删除公开评论或留言后,第三方缓存、搜索引擎索引或他人转载的副本可能无法立即同步删除。

未成年人条款#

未满 14 周岁的未成年人应在监护人同意和指导下使用本站的评论、留言等互动功能。监护人如发现未成年人未经同意提交了个人信息,可通过上述联系方式与我联系,我会在合理范围内协助处理。

政策更新与联系#

我可能因本站功能或适用规则变化更新本政策,更新后的版本将在本站公布并标明日期。继续使用相关功能即表示你已阅读并理解更新后的政策。

如对本政策或数据处理有疑问,请联系 784774835@qq.com

用户协议

更新日期: 2026 年 5 月 19 日
生效日期: 2026 年 5 月 19 日

适用范围#

本协议适用于你访问 MmzMing 的博客,以及使用文章评论、留言板等互动功能的行为。继续浏览本站或提交评论、留言,即表示你已阅读、理解并同意遵守本协议及本站的隐私政策。

评论及留言规则#

请在交流中保持友善、理性和尊重。你不得利用本站发布、传播或实施以下行为:

  • 发布任何违反中华人民共和国法律法规的内容。
  • 发布任何侵犯他人合法权益的内容,包括但不限于隐私、名誉、肖像、著作权、商标权和其他知识产权。
  • 恶意攻击、辱骂、骚扰、威胁、歧视其他用户或任何第三方。
  • 发布垃圾广告、恶意推广、刷屏、灌水,或与讨论主题明显无关的重复内容。
  • 利用本站进行网络诈骗、钓鱼、传播恶意软件,或发布可能危害网络和信息安全的内容。
  • 绕越或试图绕越本站的审核、限流、封禁等管理措施。
  • 冒充他人、伪造身份,或收集、公开他人的个人信息。

内容与访问管理#

你应对自己发布的评论和留言负责,并保证拥有发布该等内容所需的合法权利。论坛管理员有权在不另行通知的情况下删除违规内容、限制或封禁违规账号,或限制其继续使用本站互动功能。

如发现涉嫌违法犯罪、严重侵权或危及本站安全的内容,本站可保留相关记录,并在法律法规要求或必要时向有关部门提供协助。对管理措施有疑问时,可通过文末联系方式说明情况;本站会结合实际情况处理,但不承诺恢复已删除内容或访问权限。

知识产权与内容授权#

本站原创文章、页面设计和其他受保护内容的权利归作者或权利人所有。未经授权,请勿复制、转载、镜像或用于商业用途;法律法规允许的合理使用除外。

你发布评论或留言时,授予本站为展示、存储、备份、审核、删除和维护互动功能所必需的非独占、免费的使用许可。该许可不改变你对原创内容依法享有的权利。

免责声明#

本站内容仅用于个人记录、学习交流和一般信息参考,不构成任何专业意见、承诺或担保。你应结合自身情况独立判断,并对据此采取的行动负责。

评论、留言和外部链接中的内容由其发布者或运营者负责,不代表本站立场。本站会在合理范围内处理明显违规内容,但不保证所有内容均及时发现,也不对第三方网站的可用性、内容、安全性或隐私实践承担责任。

因网络故障、不可抗力、第三方服务异常、维护升级或超出合理控制范围的原因导致本站暂时无法访问、内容延迟或数据丢失的,本站会尽力恢复,但不承担由此产生的间接损失。

未成年人条款#

未满 14 周岁的未成年人应在监护人同意和指导下使用评论、留言等互动功能。监护人应协助未成年人理解本协议,并对其使用行为进行必要的引导。

其他条款#

我可以根据本站功能、管理需要或法律法规变化更新本协议,更新后的版本将在本站公布并标明日期。继续使用本站即视为接受更新后的协议。

本协议的订立、执行和解释适用中华人民共和国法律。因本协议或使用本站产生争议时,双方应先友好协商;协商不成的,依法向有管辖权的人民法院解决。

如对本协议或内容管理有疑问,请联系 784774835@qq.com