[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93086":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},93086,"shortlink","flyfish-dev\u002Fshortlink","flyfish-dev","Self-hosted short link and live QR platform with ownership, review, branded QR codes, analytics, and an auditable path to AI-assisted operations.","https:\u002F\u002Fs.flyfish.dev",null,"Go",60,11,1,0,7,43.94,"GNU Affero General Public License v3.0",false,"main",true,[23,24,25,26,27,28,29,30,31,32,33],"analytics","docker","dynamic-qr-code","golang","link-management","mysql","qr-code","self-hosted","short-link","sqlite","url-shortener","2026-07-22 04:02:08","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fs.flyfish.dev\">\n    \u003Cimg src=\"web\u002Fstatic\u002Fbrand.svg\" width=\"76\" height=\"76\" alt=\"AI Shortlink logo\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">AI Shortlink\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>让每一个公开入口，在传播之后仍然可控。\u003C\u002Fstrong>\n  \u003Cbr>\n  Keep every shared entry point controllable after it leaves your hands.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README.md\">简体中文\u003C\u002Fa> · \u003Ca href=\"README.en.md\">English\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg alt=\"CI\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fflyfish-dev\u002Fshortlink\u002Fci.yml?branch=main&style=flat-square&label=CI\">\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-AGPL--3.0--only-5A31F4?style=flat-square\">\u003C\u002Fa>\n  \u003Cimg alt=\"Go\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.23+-00ADD8?style=flat-square&logo=go&logoColor=white\">\n  \u003Cimg alt=\"Docker\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-ready-2496ED?style=flat-square&logo=docker&logoColor=white\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink\u002Fissues\">\u003Cimg alt=\"Issues\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002Fflyfish-dev\u002Fshortlink?style=flat-square\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fs.flyfish.dev\">\u003Cimg alt=\"Production\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fproduction-s.flyfish.dev-111827?style=flat-square\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fs.flyfish.dev\">在线体验\u003C\u002Fa>\n  · \u003Ca href=\"#为什么是-ai-shortlink\">品牌理念\u003C\u002Fa>\n  · \u003Ca href=\"#核心能力\">核心能力\u003C\u002Fa>\n  · \u003Ca href=\"#快速开始\">快速开始\u003C\u002Fa>\n  · \u003Ca href=\"ROADMAP.md\">开发计划\u003C\u002Fa>\n  · \u003Ca href=\"CONTRIBUTING.md\">参与贡献\u003C\u002Fa>\n\u003C\u002Fp>\n\n## 产品预览\n\n![AI Shortlink 功能录屏](docs\u002Fassets\u002Fai-shortlink-demo.gif)\n\n录屏来自真实实例，覆盖总览、短链管理、折叠操作、活码二维码池、品牌二维码定制、多格式下载和系统设置。可直接访问 [s.flyfish.dev](https:\u002F\u002Fs.flyfish.dev) 体验当前生产版本。\n\n## 为什么是 AI Shortlink\n\n链接和二维码一旦被印刷、发布或转发，就很难回收；但它们背后的目标、权限和运营策略仍会变化。AI Shortlink 将短链和活码视为长期运营的数字入口，而不是一次性的转换工具。\n\n产品坚持四个原则：\n\n- **稳定入口，持续演进**：入口保持不变，目标、二维码池和分发策略可以安全调整。\n- **控制先于自动化**：所有自动化都应可预览、可确认、可撤销，并留下审计记录。\n- **边界清晰**：普通用户只管理自己创建的资源，管理员负责全局设置与审核。\n- **轻量但完整**：单体 Go 服务、内置管理端和 SQLite 可快速部署，同时保留 MySQL\u002FMariaDB 的生产扩展路径。\n\n### “AI” 具体指什么\n\n[Issue #1](https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink\u002Fissues\u002F1) 提出了一个重要问题：AI Shortlink 中的 AI 是否仅仅表示“项目由 AI 编写”？答案是：**不止于开发方式，也不等于当前版本已经把所有功能 AI 化。**\n\nAI 在这里有两层含义：\n\n1. **工程方式**：项目采用人类主导、AI 协作的开发方式，加快设计、实现、测试和文档迭代；最终判断与责任始终由维护者承担。\n2. **产品方向**：逐步引入可选的大模型能力，辅助完成自然语言配置、审核信息整理、风险提示和运营洞察。\n\n当前版本聚焦可靠的链接基础设施，**默认不调用任何大模型 API，也不会把链接或用户数据发送给第三方模型服务**。未来 AI 能力将遵循显式开启、最小数据、人工确认、结果可解释、操作可审计的原则。完整阶段与边界见 [ROADMAP.md](ROADMAP.md)。\n\n## 核心能力\n\n| 领域 | 能力 |\n| --- | --- |\n| 短链管理 | 自定义短码、301\u002F302\u002F307\u002F308、启停与有效期、访问上限、备用链接、二维码与访问统计 |\n| 活码运营 | 固定入口、多二维码池、排序与权重、轮询\u002F随机\u002F最少展示策略、事务化保存 |\n| 品牌二维码 | classic \u002F rounded \u002F dots、前景与背景色、中心贴图、实时预览、SVG \u002F PNG \u002F WEBP 下载 |\n| 团队协作 | 多用户、资源所有权、管理员审核、通过后邮件通知、操作审计 |\n| 安全登录 | Magic Link、GitHub OAuth、可信浏览器一键登录、恢复 Key、账户状态控制 |\n| 数据洞察 | 近 30 日趋势、独立 IP、设备与浏览器分布、活码展示与长按识别意图 |\n| 私有部署 | Docker、Linux amd64 二进制、Render、SQLite、MySQL \u002F MariaDB |\n| 国际化 | 中英文产品名称、界面与邮件文案，支持自动匹配浏览器语言 |\n\n## 快速开始\n\n最轻量的方式是使用 Docker 和内置 SQLite：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink.git\ncd shortlink\ncp .env.example .env\ndocker compose up -d --build\n```\n\n访问 `http:\u002F\u002Flocalhost:8080\u002Fsetup`，按向导配置站点与管理员。运行数据保存在 Docker volume 中。\n\n本地编译需要 Go 1.23+、C 编译器和 SQLite3 开发库：\n\n```bash\nmake test\nmake build\n.\u002Fbin\u002Fai-shortlink\n```\n\nMySQL\u002FMariaDB、GitHub OAuth、HTTPS 反向代理、systemd 和 Render 部署说明见 [部署指南](docs\u002FDEPLOYMENT.md)。\n\n## 系统边界\n\n```text\n公开访问者 ──> \u002Fs\u002F{code} 短链跳转\n          └──> \u002Fq\u002F{code} 活码展示\n\n普通用户 ────> 仅查看和维护自己创建的短链、活码与统计\n管理员 ──────> 全部资源、用户、系统设置与审核\n\nSQLite \u002F MySQL \u003C── Go 单体服务 ──> 内置 HTML \u002F CSS \u002F JavaScript 管理端\n```\n\n关键约束：\n\n- 普通用户的列表、详情、统计、编辑和删除均受 `owner_account_id` 限制，不能跨账户访问资源。\n- 新建或修改的短链、活码和二维码项进入待审状态；未通过审核的入口不会公开生效。\n- 二维码中心贴图会保留必要的纠错与留白，相关渲染逻辑覆盖真实解码测试。\n- Magic Link 是一次性且限时的；GitHub OAuth 只读取登录所需的用户资料和已验证邮箱。\n\n更完整的模块、请求流和数据边界见 [架构说明](docs\u002FARCHITECTURE.md) 与 [用户及权限模型](docs\u002FUSER_MANAGEMENT.md)。\n\n## AI 能力演进\n\n| 阶段 | 目标 | 状态 |\n| --- | --- | --- |\n| 可信入口基础 | 短链、活码、品牌二维码、权限、审核、统计、登录与部署 | 已交付，持续加固 |\n| AI 接入基础 | 可选模型供应商、明确的数据范围、提示词版本、调用审计与失败降级 | 规划中 |\n| 配置助手 | 将自然语言意图转换为可检查的短链\u002F活码配置草稿，由用户确认后保存 | 规划中 |\n| 审核助手 | 汇总目标信息、给出风险信号与审核建议，默认不替代管理员决定 | 规划中 |\n| 运营洞察 | 趋势摘要、异常提醒和可追溯的优化建议 | 探索中 |\n\n路线图不是发布日期承诺。每项能力会先形成可讨论的 Issue，再进入实现；欢迎通过 [Feature request](https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink\u002Fissues\u002Fnew?template=feature_request.yml) 补充真实场景。\n\n## 文档导航\n\n| 文档 | 适合谁 | 内容 |\n| --- | --- | --- |\n| [部署指南](docs\u002FDEPLOYMENT.md) | 使用者、运维 | Docker、二进制、数据库、OAuth、SMTP、HTTPS |\n| [架构说明](docs\u002FARCHITECTURE.md) | 开发者 | 模块边界、请求流、数据模型、关键设计决策 |\n| [用户及权限模型](docs\u002FUSER_MANAGEMENT.md) | 管理员、开发者 | 角色、资源隔离、审核与二维码样式 |\n| [开发路线图](ROADMAP.md) | 使用者、贡献者 | 产品阶段、AI 原则、近期优先级与非目标 |\n| [贡献指南](CONTRIBUTING.md) | 贡献者 | 环境搭建、分支、测试、PR 与文档要求 |\n| [安全策略](SECURITY.md) | 安全研究者 | 支持范围、漏洞报告和响应流程 |\n| [支持指南](SUPPORT.md) | 所有人 | 问题分类、提问信息与维护范围 |\n| [行为准则](CODE_OF_CONDUCT.md) | 社区参与者 | 协作标准与执行原则 |\n\n## 参与贡献\n\n建议先阅读 [CONTRIBUTING.md](CONTRIBUTING.md)，再选择合适入口：\n\n- 可复现的缺陷：[Bug report](https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink\u002Fissues\u002Fnew?template=bug_report.yml)\n- 产品建议与 AI 场景：[Feature request](https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink\u002Fissues\u002Fnew?template=feature_request.yml)\n- 使用问题：[Question](https:\u002F\u002Fgithub.com\u002Fflyfish-dev\u002Fshortlink\u002Fissues\u002Fnew?template=question.yml)\n- 安全问题：请勿公开披露，按 [SECURITY.md](SECURITY.md) 私下报告\n\n提交前至少运行：\n\n```bash\ngo test .\u002F...\ngo vet .\u002F...\ngo build -o bin\u002Fai-shortlink .\u002Fcmd\u002Fserver\nnode --check web\u002Fstatic\u002Fapp.js\nnode --check web\u002Fstatic\u002Fplatform_ext.js\n```\n\n## 开源许可\n\nAI Shortlink 采用 [GNU Affero General Public License v3.0 only](LICENSE)（SPDX: `AGPL-3.0-only`）开源。修改、分发或通过网络提供本项目服务时，需要遵守 AGPL-3.0-only 的源码公开与版权告知要求。版权和源码声明见 [NOTICE](NOTICE)。\n\nCopyright (C) 2026 [Flyfish Dev](https:\u002F\u002Fflyfish.dev)\n","AI Shortlink 是一个可自托管的短链接与动态二维码管理平台，支持短链创建、活码（多目标轮换）运营、品牌化二维码定制、访问统计与操作审计。技术上采用 Go 单体架构，内置 SQLite（支持 MySQL 扩展），提供 Docker 部署、Magic Link 登录、多用户权限隔离及完整 API。其核心特点是入口长期可控——短链\u002F二维码 URL 不变，后端目标、分发策略与样式可随时调整且留痕；当前版本默认不调用外部 AI 服务，AI 定位为未来可选的、本地可控的辅助能力（如自然语言配置、审核摘要）。适用于企业营销、线下物料投放、活动运营等需长期维护公开入口的场景。",2,"2026-07-11 02:30:54","CREATED_QUERY"]