看仓库刚建不久、还没什么外部用户,趁现在把开源前该准备的东西过一遍,成本最低。按重要性排。
1. 设置页那句「职位信息仅保存在本机浏览器」和实际行为不符
index.html:393:
<h2>⚙️ 设置 <span class="badge">职位信息仅保存在本机浏览器</span></h2>
但实际上公司名、职位、JD、本轮说明,以及用户的每一条面试回答,每轮都会完整 POST 给 Worker,再转发给 AI(index.html:644-660)。「仅保存在本机」对 localStorage 那部分成立,但用户读到的意思是「我填的东西不出本机」。
这个字段用户会填什么很关键 —— #roundInfo 的 placeholder 就在引导「面试官是团队 Leader、重点考察线上排障经验」,而面试回答里几乎必然带现公司的项目细节、技术选型、离职原因、薪资预期。
改一行就行:
<span class="badge">配置保存在本机;对话内容会发送至 AI 服务进行分析</span>
这条我放第一位,是因为它改起来只要一行,但性质上和「文档不全」不一样 —— 那是缺失,这是一句会让人误解的陈述,开源之后第一个认真读代码的人就会发现。
2. 没有 LICENSE
现在仓库里没有任何许可证文件,按 GitHub 的规则默认是保留一切权利 —— 别人除了在站内 fork 和提 PR,没有使用、修改、部署的权利。想让人能用的话这一步绕不开。
建议 MIT,两段话,包含 "AS IS, WITHOUT WARRANTY OF ANY KIND" 和 "IN NO EVENT SHALL THE AUTHORS BE LIABLE"。GitHub 网页上 Add file → Create new file,文件名打 LICENSE 会自动弹出模板选择器,一分钟。
不建议 Apache-2.0 或 AGPL 的理由:Apache 多出来的主要是显式专利授权和 NOTICE 机制,这个项目用不上;AGPL 是网络著作传染,要求部署修改版的人也公开源码,和「让别人自由使用」是相反的。
但 MIT 不够用,得单独写免责声明。MIT 免的是「代码许可方」的责任,而你同时还在运营一个自己付费的服务、页面上还有打赏入口 —— 这一层 MIT 覆盖不到。建议 README 里单开一节:
- AI 生成的面试问题与评价仅供练习参考,不构成职业建议,不保证准确性
- 演示服务由作者个人承担费用,可能随时限流或下线,不提供可用性承诺
- 请勿输入受保密协议约束的信息
现在打赏弹窗里那句「打赏完全自愿,不影响任何功能或服务」写得挺好,建议保留,再补一句「不予退款」。收钱这个动作会让「服务关系」的解释空间变大,这句话是很便宜的切割。
3. 没有 README
现在仓库主页下面是空白的。建议至少写这几节:
- 这是什么 + 截图 + 在线体验链接,并标注「演示服务由作者付费,可能限流」
- 数据会发到哪里 —— 建议放在功能介绍之后、部署之前,不要放在最末尾。写清楚:发送哪些字段、经过 Cloudflare Worker 转发给哪家 AI(把供应商名字写出来)、Worker 是否记录请求内容、对方是否会用于训练。最后这条比较关键 —— 如果用的是 OpenRouter 的
:free 端点,它是明确保留用输入做训练的权利的,这个必须说。
- 自行部署 —— 需要先把 Worker 源码放进仓库才写得了,见另一个 issue
- 需要自备什么 Key + 申请地址 + 国内访问的注意事项
- 成本 —— 自建用免费额度能做到 0 成本,但要写清免费的代价;换付费模型的话给个量级估算
- 素材来源 —— 见第 5 条
- License 与免责声明
旧版界面里那句「不要用 openrouter/free 自动路由,可能被分给只输出安全审查结果的模型」是很有价值的踩坑经验,建议搬进 README。
4. 打赏二维码建议改成外链
interview-prep-assets/donate-wechat.jpg 现在在仓库里,也就意味着它在 git 历史里 —— 以后就算删掉文件,git clone 依然拿得到,这一步是不可撤回的。而且 Pages workflow 用的是 path: '.',整个仓库都会发布,所以它同时也是一个公开可直接下载的 URL。
更实际的一个风险是:别人 fork 之后保留你的项目名和文案、只把这张图换成自己的。
建议改成爱发电 / Ko-fi / GitHub Sponsors 这类外部链接。好处是可撤销 —— 链接失效就结束了,不会把收款凭据永久刻进 git 对象。config.js 的 donation 字段改成 { url: "..." },弹窗从展示二维码改成跳转就行。
5. 素材来源建议在 README 里说明
interview-prep-assets/ 下的三张面试官立绘,建议注明来源和使用条款。
如果是 AI 生成的,建议直接写清楚,并且不要对图片主张版权。原因是纯 AI 生成内容的可版权性目前在各法域结论不一致 —— 美国版权局的立场是不予保护;而国内北京互联网法院 2023 年「李某诉刘某」案认定,提示词中体现足够智力投入的可以构成作品。两边结论相反,所以与其含糊地让 MIT 盖过去,不如在 README 里单写一句:
interview-prep-assets/ 下的图片素材为 AI 生成,不适用本项目代码的 MIT 许可;作者不对这些图片主张版权,使用者可自行使用,风险自负。
如果是从素材站下的,那就把授权来源写上,这个更要紧一些。
6. 两个仓库层面的小事
- 建议开启 GitHub 的邮箱隐私:Settings → Emails → 勾上 Keep my email addresses private 和 Block command line pushes that expose my email。现在提交记录里带的是真实邮箱地址。已有的提交要清除需要重写历史,考虑到目前只有 8 个提交、没有外部贡献者,直接重建仓库反而更省事。
- 历史里还压着 5.5 MB 的 PNG 原图:三张
interviewer-*.png 虽然已经删了换成 webp,但还在 git 历史里。仓库真实内容只有 40 KB,每次 clone 都要下这 5.5 MB。如果哪天要重写历史(比如上一条),可以顺手一起清掉。
7. 可以考虑加的
- CSP:
<head> 里加一条 meta CSP。renderMD() 目前是安全的(inline() 先 esc(),注入的标签都不带属性,而且没实现链接语法所以没有 javascript: 面),但 AI 输出是可以被 prompt injection 间接影响的,而且开源之后「给 markdown 加链接支持」大概率是第一个 PR —— CSP 能把这类回归提前挡住。
.gitignore 和 SECURITY.md:后者给一个私下报告的渠道,否则以后 Worker 相关的问题会直接以公开 issue 的形式落地。
- 「清除本地数据」按钮:十几行代码,共享电脑场景下有用,也顺便回应了隐私那节。
.github/workflows/static.yml 里的 path: '.' 可以改成显式文件列表,避免以后新增文件被误发布。
这些都是准备工作类的,不影响现在能不能用,按自己的节奏来就行。
看仓库刚建不久、还没什么外部用户,趁现在把开源前该准备的东西过一遍,成本最低。按重要性排。
1. 设置页那句「职位信息仅保存在本机浏览器」和实际行为不符
index.html:393:但实际上公司名、职位、JD、本轮说明,以及用户的每一条面试回答,每轮都会完整 POST 给 Worker,再转发给 AI(
index.html:644-660)。「仅保存在本机」对 localStorage 那部分成立,但用户读到的意思是「我填的东西不出本机」。这个字段用户会填什么很关键 ——
#roundInfo的 placeholder 就在引导「面试官是团队 Leader、重点考察线上排障经验」,而面试回答里几乎必然带现公司的项目细节、技术选型、离职原因、薪资预期。改一行就行:
这条我放第一位,是因为它改起来只要一行,但性质上和「文档不全」不一样 —— 那是缺失,这是一句会让人误解的陈述,开源之后第一个认真读代码的人就会发现。
2. 没有 LICENSE
现在仓库里没有任何许可证文件,按 GitHub 的规则默认是保留一切权利 —— 别人除了在站内 fork 和提 PR,没有使用、修改、部署的权利。想让人能用的话这一步绕不开。
建议 MIT,两段话,包含 "AS IS, WITHOUT WARRANTY OF ANY KIND" 和 "IN NO EVENT SHALL THE AUTHORS BE LIABLE"。GitHub 网页上 Add file → Create new file,文件名打
LICENSE会自动弹出模板选择器,一分钟。不建议 Apache-2.0 或 AGPL 的理由:Apache 多出来的主要是显式专利授权和 NOTICE 机制,这个项目用不上;AGPL 是网络著作传染,要求部署修改版的人也公开源码,和「让别人自由使用」是相反的。
但 MIT 不够用,得单独写免责声明。MIT 免的是「代码许可方」的责任,而你同时还在运营一个自己付费的服务、页面上还有打赏入口 —— 这一层 MIT 覆盖不到。建议 README 里单开一节:
现在打赏弹窗里那句「打赏完全自愿,不影响任何功能或服务」写得挺好,建议保留,再补一句「不予退款」。收钱这个动作会让「服务关系」的解释空间变大,这句话是很便宜的切割。
3. 没有 README
现在仓库主页下面是空白的。建议至少写这几节:
:free端点,它是明确保留用输入做训练的权利的,这个必须说。旧版界面里那句「不要用 openrouter/free 自动路由,可能被分给只输出安全审查结果的模型」是很有价值的踩坑经验,建议搬进 README。
4. 打赏二维码建议改成外链
interview-prep-assets/donate-wechat.jpg现在在仓库里,也就意味着它在 git 历史里 —— 以后就算删掉文件,git clone依然拿得到,这一步是不可撤回的。而且 Pages workflow 用的是path: '.',整个仓库都会发布,所以它同时也是一个公开可直接下载的 URL。更实际的一个风险是:别人 fork 之后保留你的项目名和文案、只把这张图换成自己的。
建议改成爱发电 / Ko-fi / GitHub Sponsors 这类外部链接。好处是可撤销 —— 链接失效就结束了,不会把收款凭据永久刻进 git 对象。
config.js的donation字段改成{ url: "..." },弹窗从展示二维码改成跳转就行。5. 素材来源建议在 README 里说明
interview-prep-assets/下的三张面试官立绘,建议注明来源和使用条款。如果是 AI 生成的,建议直接写清楚,并且不要对图片主张版权。原因是纯 AI 生成内容的可版权性目前在各法域结论不一致 —— 美国版权局的立场是不予保护;而国内北京互联网法院 2023 年「李某诉刘某」案认定,提示词中体现足够智力投入的可以构成作品。两边结论相反,所以与其含糊地让 MIT 盖过去,不如在 README 里单写一句:
如果是从素材站下的,那就把授权来源写上,这个更要紧一些。
6. 两个仓库层面的小事
interviewer-*.png虽然已经删了换成 webp,但还在 git 历史里。仓库真实内容只有 40 KB,每次 clone 都要下这 5.5 MB。如果哪天要重写历史(比如上一条),可以顺手一起清掉。7. 可以考虑加的
<head>里加一条 meta CSP。renderMD()目前是安全的(inline()先esc(),注入的标签都不带属性,而且没实现链接语法所以没有javascript:面),但 AI 输出是可以被 prompt injection 间接影响的,而且开源之后「给 markdown 加链接支持」大概率是第一个 PR —— CSP 能把这类回归提前挡住。.gitignore和SECURITY.md:后者给一个私下报告的渠道,否则以后 Worker 相关的问题会直接以公开 issue 的形式落地。.github/workflows/static.yml里的path: '.'可以改成显式文件列表,避免以后新增文件被误发布。这些都是准备工作类的,不影响现在能不能用,按自己的节奏来就行。