Skip to main content
JGJenks Guo

文档 / explanation

安全与隐私

公共与管理接口的权限边界,admin token 与 GitHub 访问的保护方式,以及访客数据的处理方式。

两类访问

公共 — 任何人,无需凭证。REST API (/api/v1/*)、公共 MCP 服务器(/mcp)、CLI 的公共命令以及静态文件均为只读。它们只暴露按设计公开发布的语料库。ask_jenks 和网站聊天会调用语言模型,因此按 IP 地址进行速率限制以防止滥用。

管理员 — 仅 Jenks 可用。/api/admin/*、/mcp/admin、jenks admin … 以及位于 /admin 的控制台需要在 Authorization: Bearer 头中提供 Jenks 的个人 admin token。凭此,调用方可以校验、写入和删除内容文件,并将 dev 提升到 main。这是真正的高权限,因此该 token 被当作密码对待。

管理员 token

  • 它存放在 macOS 钥匙串(Keychain)中,条目为 agent-env:JENKSGUO_ADMIN_TOKEN,只在需要时加载到 shell。它从不写入会被共享的内容、提交、配置文件或聊天中。
  • Worker 将其存为加密的密钥,并以恒定时间进行比较。
  • /admin 控制台从不存储该 token。登录时仅一次性 POST 到 /api/admin/login,由其设置一个 HttpOnly、Secure、SameSite=Strict 的会话 Cookie(12 小时,或勾选“remember”为 14 天)。页面脚本无法读取该 Cookie,且使用 Cookie 认证进行写入时还必须发送 x-jenks-admin 头,而跨站表单无法设置该头。
  • 轮换 若怀疑泄露:生成新 token,存入钥匙串,更新 Worker 密钥;旧 token 会立即失效——所有控制台会话也将失效,因为会话以由该 token 派生的密钥签名。

管理 API 的触达范围

写操作仅限于一份允许列表中的内容路径——语料条目、lenses、skills、核心文档、翻译术语表以及本文档。它无法更改代码、工作流、密钥,或 content/ 之外的任何内容。每一次写入都会先按内容模式进行校验。

GitHub 访问

管理员写入会通过 GitHub API 转化为提交,使用限定到单一仓库、仅授予发布所需权限的细粒度个人访问令牌。该令牌以加密的 Worker 密钥保存。由于每次更改都是一次提交:

  • git 历史就是审计日志 —— 谁在何时因何(提交信息)更改了什么,
  • 始终可以撤销 —— 任何文件的任意早期版本都可被恢复。

高风险变更可先在 dev 分支进行分阶段发布,并在 https://dev.jenksguo.xyz 上检查后再进入线上站点。

访客隐私

  • 无广告跟踪器,也无营销 Cookie。
  • 聊天记录仅保存在访客浏览器(sessionStorage)中,并在标签页关闭时清除。本站不存储聊天记录。
  • 聊天消息通过 Cloudflare Worker 转发至 OpenRouter,后者将其路由至第三方语言模型。我们会提示访客不要分享敏感的个人信息。
  • 语音输入在可用时使用浏览器自带的语音识别;否则音频将发送至 OpenRouter 进行转录。语音回复使用设备的语音合成。
  • Cloudflare 为安全与限流目的保留标准请求日志。

内容隐私

content/ 下的一切均为公开。Jenks 的简历曾包含电话号码、家庭住址和推荐人联系方式;这些均不在语料库中,且绝不可添加。关于他人的事实仅限于描述 Jenks 角色所必需者。

问题报告

发送邮件至 jenksguo@gmail.com 并说明详情。未获许可请勿测试管理接口。

.md本页内容在 AI 协助下翻译;官方职位名称保留英文。