Dokumentaro / explanation
Sekureco kaj privateco
Kion la publikaj kaj administraj interfacoj povas fari, kiel SSO, agentaj servaj ĵetonoj, la kontrolregistro kaj aliro al GitHub protektas ilin, kaj kio okazas al datumoj de vizitantoj.
Du specoj de aliro
Publika — iu ajn, sen akreditaĵoj. La REST API (/api/v1/*), la publika MCP-servilo (/mcp), la
publikaj komandoj de la CLI kaj la statikaj dosieroj estas nurlegeblaj. Ili elmontras nur la publikigitan korpuson,
kiu estas publika laŭdezajne. ask_jenks kaj la retpaĝa babilo vokas lingvan modelon, do ili estas
rapid-limigitaj laŭ IP-adreso por malhelpi misuzon.
Admin — Jenks, kaj la AI-agentoj al kiuj li donas ĵetonon. /api/admin/*, /mcp/admin,
jenks admin … kaj la konzolo povas validigi, skribi kaj forigi enhavajn dosierojn, alŝuti kaj forigi aŭdvidaĵojn
kaj promocii dev al main. Tio estas vera povo, do ekzistas tri tavoloj.
Ensaluto por homoj: SSO
La konzolo estas ĉe https://admin.jenksguo.xyz/admin (kaj https://admin.dev.jenksguo.xyz/admin por
la disvolva retejo). Cloudflare Access staras antaŭ tiuj gastigantoj: neniu atingas la konzolon ĝis
ili ensalutas per permesita Google-konto. /admin ĉe ĉiu alia adreso redirektas tien.
La Worker ne simple fidas la kapojn de Cloudflare. Ĉe ĉiu administra peto ĝi mem kontrolas la subskribitan Access-ĵetonon — la subskribon kontraŭ la publikaj ŝlosiloj de la Access-teamo, la aŭdiencan etikedon de la aplikaĵo, la eldonanton kaj la eksvalidiĝon — kaj la retpoŝto devas esti en la admin-listo.
Servaj ĵetonoj por agentoj
AI-agento neniam uzas la ensaluton de Jenks. Jenks kreas servan ĵetonon por ĉiu agento en la konzolo (Access → New agent token):
- Nomita — "Claude Code on MacBook", por ke la kontrolregistro montru kiu agento faris kion.
- Amplekso-difinita —
content(enhavo, tradukoj kaj teksto de la retejo),media(la aŭdvidaĵa biblioteko),publish(skribi rekte al produktado kaj promociidev→main). Ĉiu ĵetono povas legi. Senpublish, agento konservas aldevkaj Jenks promocias la ŝanĝon. - Eksvalidiĝanta — 30 ĝis 365 tagoj (defaŭlte 90).
- Revokebla — unu klako, efika ĉe la sekva peto.
- Ligita al SSO — nur persono ensalutinta tra Access povas krei, listigi aŭ revoki ĵetonojn; agenta ĵetono ne povas krei alian ĵetonon. Ĵetono ankaŭ ĉesas funkcii se la persono kiu kreis ĝin jam ne estas administranto.
- Konservata kiel haketaĵo — la ĵetono montriĝas unufoje, kiam ĝi estas kreita; la datumbazo konservas nur ĝian SHA-256-haketaĵon.
Agentoj sendas la ĵetonon kiel Authorization: Bearer jgx_agt_… al /api/admin/* aŭ /mcp/admin ĉe
https://jenksguo.pages.dev (Access haltigus programon ĉe la administra gastiganto). Retumiloj ne sendas
tian kapon mem, do malica paĝo ne povas pruntepreni ĝin.
La kontrolregistro
Ĉiu administra skribo — kaj ĉiu rifuzita provo — estas registrita: kiu (retpoŝto aŭ agent:<name>), kiu
ilo, kiuj dosieroj, branĉo, gastiganto, kaj la rezulto aŭ eraro. Kreo kaj revoko de ĵetonoj estas registritaj
ankaŭ. Enhavaj dosieroj neniam estas registritaj. Jenks legas la registron en la konzolo (Access); agento povas
legi nur siajn proprajn enskribojn (admin_audit_log). Git-historio restas la rekordo de tio, kio ŝanĝiĝis en
la enhavo mem.
La urĝa administra ĵetono
La originala administra ĵetono ankoraŭ funkcias, por krizoj, sed ĝi ne povas krei agentajn ĵetonojn. Ĝi loĝas
en la macOS Keychain kiel agent-env:JENKSGUO_ADMIN_TOKEN kaj kiel ĉifrita Worker-sekreto, kaj estas
komparata konstanta-tempe. Rotaciu ĝin se ĝi eble likis: konservu novan valoron en la Keychain kaj
en la Worker-sekreto, kaj la malnova ĉesas funkcii tuj. Por loka disvolvado nur (wrangler dev ĉe localhost) la konzolo povas ensaluti per ĝi: la ĵetono estas interŝanĝita unufoje kontraŭ HttpOnly
sesia kuketo.
Kion la administra API povas tuŝi
Skriboj estas limigitaj al permeslisto de enhavaj vojoj — la korpusaj enskriboj, lensoj, kapabloj, kernaj
dokumentoj, la traduka glosaro kaj ĉi tiuj dokumentoj. Ĝi ne povas ŝanĝi kodon, laborfluojn, sekretojn aŭ
ion ajn ekster content/. Ĉiu skribo estas unue validigita kontraŭ la enhava skemo.
Aŭdvidaĵoj
Bildoj, videoj kaj PDF-oj alŝutitaj tra la administraj interfacoj estas konservataj en Cloudflare R2-bukedo
kaj servataj el /media/…. Ili estas publikaj laŭ adreso ekde la momento de alŝuto, do nur
materialo destinita por ĉiu vizitanto apartenas tien.
- La dosiertipo estas detektata el la bajtoj, ne el la nomo, kaj nur retecaj bildaj, videaj kaj PDF-formatoj estas akceptataj (25 MB ĉiu).
- SVG-bildoj estas rifuzataj se ili enhavas skriptojn aŭ eventajn pritraktilojn, kaj ĉiu SVG estas servata ene de enhav-sekureca sablokesto, tiel ke eĉ artefarite farita SVG malfermita rekte ne povas ruli kodon en ĉi tiu retejo.
- Male al enhavo, aŭdvidaĵoj ne estas en git: forigo estas konstanta. Forigoj estas rifuzataj dum publikigita enhavo ankoraŭ uzas la dosieron.
GitHub-aliron
Adminaj skriboj iĝas commit-oj tra la GitHub API uzante detalnivelan personan alirĵetonon limigitan al la sola deponejo, kun nur la permesoj kiujn publikigado bezonas. Ĝi estas konservata kiel ĉifrita Worker-sekreto. Ĉar ĉiu ŝanĝo estas commit:
- git-historio registras ĉiun ŝanĝon — kio ŝanĝiĝis, kiam, kaj kial (la commit-mesaĝo; la commit-trailero nomas la agenton),
- malfari ĉiam eblas — ajna pli frua versio de ajna dosiero povas esti restaŭrita.
Riskaĵaj ŝanĝoj povas esti preparitaj en la dev-branĉo kaj kontrolitaj ĉe https://dev.jenksguo.xyz antaŭ ol
io ajn atingas la vivan retejon.
Privateco de vizitantoj
- Neniuj reklamaj spuriloj kaj neniuj merkatikaj kuketoj.
- La babileja transskribo estas konservata nur en la retumilo de la vizitanto (
sessionStorage) kaj vakuiĝas kiam la langeto fermiĝas. La retejo ne konservas babilajn transskribojn. - Babilmesaĝoj estas sendataj tra la Cloudflare Worker al OpenRouter, kiu enrutas ilin al triaflanka lingva modelo. Vizitantoj estas petitaj ne dividi sentemajn personajn informojn.
- Voĉo estas malŝaltita ĝis la vizitanto alklakas la mikrofonon, kaj ĝi mem malŝaltiĝas post dek turnoj aŭ kiam ĝi ne aŭdas veran konversacion. Voĉa enigo uzas la propran parolrekonon de la retumilo kie disponebla; alie sono estas sendata al OpenRouter por transskribo. Parolitaj respondoj estas generataj de Cloudflare Workers AI (Deepgram Aura-2, English) aŭ OpenRouter (aliaj lingvoj), kun la parolsintezo de la aparato kiel rezervo. Neniuj registraĵoj aŭ generita sono estas konservataj.
- Cloudflare konservas normajn petregistrojn por sekureco kaj rapid-limigado.
Privateco de enhavo
Ĉio sub content/ estas publika. La vivresumoj (CV-oj) de Jenks enhavis telefonnumerojn, hejman adreson kaj
referencajn kontaktojn; neniu el tiuj estas en la korpuso, kaj ili neniam devas esti aldonitaj. Faktoj pri aliaj
homoj estas limigitaj al tio, kio necesas por priskribi la rolojn de Jenks.
Raporti problemon
Retpoŝtu al jenksguo@gmail.com kun detaloj. Bonvolu ne testi la administran interfacon sen permeso.
.mdĈi tiu paĝo estas tradukita kun helpo de AI; oficialaj titoloj restas en la angla.