å·»ç©ãæ¢ã
27ä»¶ã®å·»ç©
æ€èšŒããã®ã«äœãæ€èšŒããŠããªãã£ã â 宿å®è¡ã®åæ ã3å±€ã§exit codeå€å®ãã
cronããããã®åæ 確èªã空æ¯ããã2ã€ã®åïŒexit 0ã ãèŠãïŒããŒã«ãæ¢å®ãã©ã³ãã«ç¡ãïŒãšãAå®è¡ã»BããŒã¿ã»Cå®è¡šç€ºã1æ¬ã«ç¹ãã§æ©æ¢°å€å®ããã¹ã±ã«ãã³ãå¯Ÿç §ãå ¥ããŠå¥èŠå ã®æ··å ¥ãæ€ç¥ããã
宿å®è¡ããæåãªãåãããŸãŸäœé±éãæ¢ãŸã£ãŠããã®ãèŠæããŠçŽã
GitHub Actions ã® schedule ã ãã 403 ã§å šæ» ããŠãæåå®è¡ã¯æåãç¶ããããæ°ä»ããªãã--event=schedule ã§ã®çåå€å®ãactions:read ã®ä»äžãçŽããåŸã«é²åºããæ¬¡ã®å±€ã®æœ°ãæ¹ãæ»æŽ»ç£èŠã®ä»çµã¿åãŸã§ãæé åããã
宿ã¹ã¯ã¬ã€ãã³ã°âGoogleã¹ãã¬ããã·ãŒãèªåéèšMD
ç«¶åäŸ¡æ Œã»åšåº«ã»ã©ã³ãã³ã°ãªã©ãæ¯æ¥èªåååŸããŠã¹ãã¬ããã·ãŒãã«èç©ãããããã AI ã«äœãããæç€ºæžãrobots.txt å°éã»ã¬ãŒãå¶éã»å·®åæ€ç¥ã®ãã¹ããã©ã¯ãã£ã¹èŸŒã¿ã
æ©å¯åãå«ãå ±æã¹ãã¬ããã·ãŒãã«AIãå®å šã«æžã蟌ãŸããå
ãã¹ã¯ãŒããææžãã¡ã¢ãšåå± ãã管ç衚ã«ãAIã«æ¬æãèªãŸããã«èªåæŽæ°ãããå®è£ åãèš±å¯ãªã¹ãæžèŸŒã»èŠåºãè¡ã®èªåæ€åºã»è¡ã奪ããªãçªåã»åé ã·ã£ããã«ã®æµå¯Ÿçãã¹ãã»å®æå®è¡ã®åŒæ°åºå®ãŸã§ã
皌åäžã®æ¢åGASããå¯äœçšãèµ·ãããã«æ€èšŒããŠããæ¬çªåæ ãã
宿å®è¡äžã®Apps Scriptã«ä»æ§å€æŽãå ¥ããæé ãã¡ãŒã«éä¿¡ãªã©ã®å¯äœçšãèµ·ãããã«å®ããŒã¿ã§ããžãã¯ãæ€èšŒããclasp pushåŸã«pullã§çªåãããŸã§ãæ©æ¢°å€å®ã§éãããclasp loginã®èªå¯URLãæ»ã¬çœ ãpullã®æ¡åŒµåéãã§å·®åãŒãã誀èªããçœ ã€ãã
åä¿¡ã¡ãŒã«æ·»ä»ãæ¡ä»¶ãã©ã«ããžèªåå蟌ãããã€ãã©ã€ã³
ã¡ãŒã«ãèªãã¢ããªãšãã©ã€ãã«æžãã¢ããªãå¥ããšããçŸå®çãªæ§æã§é¡§å®¢ã¡ãŒã«ã®æ·»ä»ãæ¡ä»¶ãã©ã«ããžç¡äººä¿åããèšèšãæš©é远å ãé¿ããçç±ãå®è¡æéå¶éäžã®äºç®3æ¬ç«ãŠãäºéã®éè€é²æ¢ãbase64url/è¡æ°äžé/倿å€å®ãªã©ã®å®è£ çœ ãæ¡ä»¶ãšé¡§å®¢ã®ãããã³ã°ãåå¯ãã¯åè£æç€ºïŒäººã®æ¿èªã«ããåãŸã§ã
ã¯ã©ãŠãå¥çŽãšãããžã§ã¯ãæåšã1æã®ã¹ãã¬ããã·ãŒãå°åž³ã«èªåéçŽãã
è€æ°PCã»è€æ°ã¯ã©ãŠãã®ãã©ã®ã¢ã«ãŠã³ãã®ã»ã©ãã«ããã»äœã®ãããžã§ã¯ããåãããªããããåPCãšäžå€®ãèªåã§æžã蟌ã3ã¿ãã®å°åž³ã§è§£æ¶ãããæ¯æãæ å ±ãå®å šã«æ±ãèš±å¯ãªã¹ãèšèšãšãå®è£ äžã«å¿ ãèžããæåããã®ã«ç©ºãã®çœ 4ã€(CLIãstderrã«è¡šãåºã/Windowsã®.cmdã·ã /GASã®ãã¡ã€ã«è©äŸ¡é /ã¯ã©ã€ã¢ã³ãtimeoutâ æªé)ãŸã§å«ãã
ãŠãŒã¶ãŒæçš¿ã®å¯©æ»ãç¡äººåãã â æ©å¯ã¯æ±ºå®çå€å®ã»éè€ã¯ã°ã«ãŒãã§1æ¬ã«å¯ãã
æçš¿ãã¥ãŒãäººææ¿èªã§æ»çãããµãŒãã¹ããæ¯æ¥1åã®ç¡äººãããã§åãå®è£ æé ãæ©å¯ã¯æ£èŠè¡šçŸã§æ±ºå®çã«èœãšããéè€ã¯åè£åºãã ãæ©æ¢°ïŒLLMã«ã¯åäž»é¡å€å®ãšç¶²çŸ é ç®ã®æœåºã ãããããŠæ®ã1æ¬ã¯ã³ãŒãã§æ±ºããããã¢åäœã§æ±ºãããšæ®ããåŽãå¥ã®çµã§åŽäžãããçœ ãåŽäžã®ä¿åå ãç¡ãèšèšãã¹ãã¢é害ã空ããŒã¿ã«åããŠäºéå ¬éãæã fail-openã誀æ€åºã§å šéšåŽäžã«ãªã4ãã¿ãŒã³ãŸã§ã
å ¬åŒAPIã®ç¡ãé²é³ãµãŒãã¹ããå¥SaaSãžé³å£°ãèªååã蟌ã¿ããæç€ºæž
é²é³ã¯ã©ãŠãã®é³å£°ãæåèµ·ããSaaSãžç¡äººã§æµãæ§æã眲åä»ãURLãHEADã§403ã«ãªã/URLé·å¶é/jobIdãè¿ã£ãŠãåã蟌ãŸããªãããšããç¡èšã®å€±æã®æœ°ãæ¹ãšã倿ãã¹ãã¬ãŒãžãèŠããªãäžç¶ãããã·ã®åã
é åžããèªååããèªåãæŽæ°ã§ããªããåé¡ã®æ ¹æ²»ãšäººæãŒã埩æ§ã®3å±€èšèš
è€æ°ç«¯æ«ãžé ã£ãhook/åžžé§ã¹ã¯ãªãããç¡èšã§å€ããŸãŸæ¢ãŸãåå (åçµã³ããŒã»å®è¡ã·ã§ã«å·®)ãšãäžå€®ãã¥ãŒ/èªå·±ä¿®åŸ©æé /çådigestã®3å±€ã§äººã®æäœãŒãã§åŸ©æ§ãããèšèšã宿ž¬ã§èžãã ãç·ãªã®ã«äœãèµ·ããªããçœ ã€ãã
ç¡äººãããã®ãé»ã£ã空æ¯ãããçºèŠããŠæ¢ããïŒåªçå蟌ã®èšèšïŒ
宿ãããããšã©ãŒãåºããªããŸãŸæ¯ååãä»äºãããçŽããŠããç¶æ ã®æ€åºæ³ã»å žåçãªçå ïŒå蟌æžã¿éåãå®äœã®åäžã«ã©ã ã§æã€ïŒã»å°åž³ã«ããä¿®æ£ã»æã¡åãä»ãå詊è¡ã»CI課éã§ã®å¹æå®æž¬ãŸã§ã
é åžããããŒã«ãæ¢å端æ«ã«ã ãå±ããªãé害ã®èšºæãšåçºé²æ¢
å šPCãžé ã£ãhook/ã¹ã¯ãªããããæ°èŠç«¯æ«ã§ã¯åãã®ã«æ¢å端æ«ã«ã ãæ°žä¹ ã«å±ããªããåçµã³ããŒã»æ¡åŒµåãç¡èŠããéè€å€å®ã»ç¡èšreturn ã®3éå¥ã§ããã¹ãã¯å šgreenã»èªå·±èšºæãNG 0ã®ãŸãŸæ°ã¥ããªããå®éã«èžãã§çŽãã蚺ææé ãšãåçºãæ¢ãããã¹ãèšèš(æ¢å端æ«ãã£ã¯ã¹ãã£/ãã§ãã¯ãªã¹ãç¶²çŸ æ§ã®æ©æ¢°ç §å/æ éæ³šå ¥)ã
GitHub Actions ã®èª²éåã宿ž¬ããŒã¹ã§åã
Actions ã®è«æ±ãæšæž¬ã§ãªã宿ž¬ããåãæé ããžã§ãåäœã®ååãäžããšããèª²éæ§é ãã¹ãããå¥ã«æéãå²ã API ã®å©ãæ¹ãçæéé«é »åºŠã¯çµ±åã»é·æé㯠per-row åŸåŸ©ã®äžæ¬åãšããæã¡åãã䞊å床ãäžããŠãå¹ããªãã±ãŒã¹ã®èŠåãæ¹ããããŠãé ãã¹ããããå®ã¯åãããŒã¿ãæ¯ååŠçãçŽããŠããæ¬ é¥ãã®èŠã€ãæ¹ãŸã§ãæ¬çªã®å€éãžã§ãã宿ž¬ç®çã§åå®è¡ããŠéè€ã¬ã³ãŒãã倧éçæãã倱æäŸãšããã®å·»ãæ»ãã®äœæ³ãå«ãã
ç¡äººå®è¡ãžã§ãããåããã®ã«äœãæ®ããªãããæœ°ãèšèš
cron/ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ããAIãšãŒãžã§ã³ããé·æéåŠçãç¡äººã§èµ°ãããéã®2å€§äºæ ïŒã¿ã€ã ã¢ãŠãkillã§åºåãäžžããšæ¶ããïŒå®è¡ãããã³ãŒãããã®ç¬éã®HEADã§æ±ºãŸãïŒãæ§é çã«æœ°ãå®è£ æç€ºæžã鿬¡é²æãã¡ã€ã«ã»åŸ æ©æéã®äžéã»äœææå»ããã®å®è¡ID埩å ã»åºå®worktreeãžã®pinã»å®èµ°åã ãã®åŸçä»ããŸã§ããã¹ã芳ç¹ãšå®äºæ¡ä»¶ä»ãã
GitHub Actions ã®èª²éåã宿ž¬ããŠåãæé ïŒcron çµ±åãã€ãšããïŒ
GHA ã¯ãžã§ãããšã«ååäœã§åãäžã課éãããããæ°ç§Ãé«é »åºŠã® cron ãæãå²é«ã«ãªãã/timing API ã§å šã¯ãŒã¯ãããŒã®èª²éåã宿ž¬ããcron åŒãå®å šäžèŽããã¯ãŒã¯ãããŒã®ã¹ããããžçµ±åããŠé »åºŠãåŠçãå€ããã«åãæé ãschedule ã¯å€§éã«éåŒãããããåã²ãŒãã§ã®éåŒããæç«ããªãããšãçµ±åãããšåã¹ãããã®å€±æã§åŸç¶ã silent skip ãããããšãäºç®äžéã§ãžã§ãæªèµ·åã«ãªã£ãæã®èŠåãæ¹ãŸã§å«ãã
LLMçµç±ã®ããŒã¿åã蟌ã¿ã決å®è«åãã â ãã£ãã·ã¥ãéãã«åãã€ãã®ãæ¢ãã
AIã«APIçµæãJSONãžè»¢èšãããæ§æã¯ãæ¬ èœãšå¹»ãåæã«äœãä»¶æ°ã®èªå·±ç³åã§ã¯æ€åºã§ããªãããµãŒãã¹ã¢ã«ãŠã³ã+ãã¡ã€ã³å šäœã®å§ä»»ã§äŸåãŒãã®æ±ºå®è«ã¹ã¯ãªããã«çœ®ãæããæé ãšãèªã¿åãåŽã§ãããŒã¿ç¡ãããšã該åœç¡ãããåºå¥ããã¬ãŒããŸã§ã
æ¯æ©ãæ¶åããŠãããã€ããã®ããããåãå é Nä»¶ãããçŽããŠããã®ãèŠæããŠçŽã
æ®ã¿ã¹ã¯äžèЧãç¡äººããããäžããæ¶åããæ§æã§ãå®äºã®æžãæ»ããæªé ç·ã ãšæ¯æ©ããªãå é Nä»¶ã ããåãã以éã«æ°žä¹ ã«å°éããªãããšã©ãŒããã°ãåºãªããã¹ã±ãžã¥ãŒã©ã®3é ç®ã§ãæ°èšå®ã®ååã¯ãã€ããã確å®ããæžãæ»ãã®2ã€ã®å£ãæ¹ïŒæ¢çŽ¢ã¹ã³ãŒãã®ãºã¬ïŒdead exportïŒãæ€æ»ããrunneråŽã§æ©æ¢°çã«æžãæ»ãé ç·ãšãå®ããŒã¿ã§ no-match 0 ã確èªããæ€èšŒæé ãŸã§ã
å€éã®ç¡äººAIãšãŒãžã§ã³ããããããéãã«å šæ» ãããã®ãæ¢ããïŒèŠ³æž¬ã¿ã¹ã¯ã®ç«ãŠæ¹ïŒ
å€éãããã§AIãšãŒãžã§ã³ããç¡äººå®è¡ãããšã倱æãã®ãã®ã誰ã«ãå±ããªãã芳枬ã»åãåãã»èªå·±ä¿®åŸ©ã»å ±åãå¥ã¿ã¹ã¯ãšããŠç«ãŠãæé ãšã宿ž¬ã§èžãã 4ã€ã®éããªå šæ» çµè·¯ïŒspawnã®åæthrowïŒå é ãããã¯ããèªãŸãªãããŒãµïŒã³ã³ãœãŒã«ã®ãšã³ã³ãŒãã£ã³ã°ïŒã¹ãªãŒãã§æªçºç«ïŒã®å¡ãæ¹ã
GitHub Actions ã®ãžã§ãå®è¡æéã宿ž¬ããŒã¹ã§åãæé æž
cron ãžã§ãã® Actions 課éã宿ž¬ããåãæé ãtiming/jobs API ã§ã®ã¹ãããå¥èšæž¬ãçæéé«é »åºŠã®çµ±åãšé·æéãžã§ãã®ãã«ã¯åã®äœ¿ãåããON CONFLICT ã®éè€ããŒã§ãã£ã³ã¯ãå šèœã¡ããçœ ãããŒã¯ã³ãã±ããã®åæããŒã¹ããorder ç¡ãããŒãžã³ã°ã®åãããŒããåŠçæ¬ èœãã«ãŠã³ã¿ã§æ©æ¢°ç §åããæ€èšŒãŸã§ã
äœæ¥ããªãŒãæ±ãã端æ«ã«ã ãé åžãå±ããªã â ãã©ãŒã«ããã¯ã®èªå®¶äžæ¯ãŸã§å«ããŠå¡ã
è€æ°ç«¯æ«ãžgit pullã§ããŒã«ãé ãéçšã§ãéçºç«¯æ«ã«ã ãé åžãæ°žä¹ ã«å±ããªãé害ããã©ãŒã«ããã¯ã®çºåæ¡ä»¶ã»äººã®äœæ¥ã®ä¿è·ã»èªåã®åºåã人ã®ç·šéãšèª€èªããŠåçµããäºæ¬¡äžå ·åã»èªå·±ä¿®åŸ©ã®åŸªç°ã»å®æã¿ã¹ã¯ã®åç §å ãããŸã§ãå®éã«èžãã§çŽããæé ãšãã§ãã¯ãªã¹ãã
ãã°ã€ã³ã§ããªãGitHubã¢ã«ãŠã³ãã«çžãããéçºããæ¢ããã«åãžé²ãã
ãã¹ã¯ãŒãäžæã»2FAã§å ¥ããªãGitHubã¢ã«ãŠã³ãã®PATã«workflowã¹ã³ãŒããç¡ããã¯ãŒã¯ãããŒãpushã§ããªãè©°ã¿ã®è§£ãæ¹ã埩æ§ã«èµ°ãåã«æœ°ãã¹ã5ã€ã®çµè·¯ïŒæå ã¢ã«ãŠã³ãã®ã¹ã³ãŒã確èªïŒäŸåã確èªããŠçœ®ãæãïŒã³ãããauthorããç»é²ã¡ãŒã«ç¹å®ïŒæåŸ ã®APIå諟ã§Webãã°ã€ã³åé¿ïŒsecretsç»é²ã¯repo+adminã§è¶³ããåæ ïŒãæé åã
reCAPTCHA ã®ãããµã€ãã AI ã«äœåºŠãèªãŸããïŒãã°ã€ã³çªãã»ãã·ã§ã³ããåãé¢ããŠåžžé§ããã
Playwright ã® launchPersistentContext ã¯èŠªããã»ã¹ãæ»ã¬ãšãã©ãŠã¶ãæ»ã¬ãããAI ãšãŒãžã§ã³ãã®ã»ãã·ã§ã³ãå€ãããã³ã«äººã reCAPTCHA ãæŒãçŽãããšã«ãªããdetached èµ·åïŒCDP æ¥ç¶ããããã¡ã€ã«åºå®ãšãã°ã€ã³ä¿æã管çè æš©éã䜿ããªããã°ãªã³åžžé§ã®3å±€ã§è§£æ¶ããæé ãexit code å¥çŽãšãå®éã«å£ããŠç¢ºãããæ€èšŒæé ã€ãã
Discord webhook ã®æ»æŽ»ç£èŠãšèªå修埩
åé€ããã webhook ã§éç¥ãç¡èšåæ¢ããã®ãé²ããçåäžã«ãã£ã³ãã«å°åž³ãäœããæ»ãã ãåäžãã£ã³ãã«ã®çå webhook ãžèªåã§å·®ãæ¿ããèšèšãšå®è£ èŠä»¶
ãã°ãªã³ããã ãã§IDEãéãAIãšãŒãžã§ã³ããèµ°ãåºãç¶æ ãäœãïŒWindows/VS CodeïŒ
æ¯æã¿ãŒããã«ãéããŠãšãŒãžã§ã³ãCLIãæã€æéããŒãã«ãããfolderOpenã¿ã¹ã¯+ã¹ã¿ãŒãã¢ãã.lnkã®æ§æã«å ããçŽ çŽã«äœããšå¿ ãèžã3ã€ã®ããšã©ãŒãåºããã«äœãèµ·ããªãã倱æïŒ8.3ççž®åãã¯ãŒã¯ã¹ããŒã¹å€å®ãå£ã/ãµã³ãããã¯ã¹äžã¯exit 0ãè¿ãã®ã«GUIãèµ·åããªã/Restricted Modeãèªåã¿ã¹ã¯ãç¡èšã§æ¢ããïŒãšãããã»ã¹ã®ç¥å ã§æåŠãå€å®ããæ€èšŒæ³ãŸã§ã
CIããèªãã¹ããžpushãã飿ºããå±ããªãæ¥ãããartifactããã®pullã§åãã
èªå® /瀟å PCããã³ãã«å ¬éå ãžCIããPOSTãã飿ºãå°éã§ããèœã¡ãåé¡ããé éå ããartifactãåãã«è¡ãpullçµè·¯ã§åããæé ãçæãšé éã®åãåããå€å®è¡šã®èšèšãCIã®å®æé å»¶ã«ããäºéçæã®åé¿ãread-backãç£èŠææšã®ä»ãæ¿ããèšæž¬ããŒã«èªèº«ã®åœéœæ§ã®æœ°ãæ¹ãŸã§ã
AIã®èšæ¶ã€ã³ããã¯ã¹ãèªã¿èŸŒã¿äžéã§é»ã£ãŠåãããåé¡ã®æ€åºãšæä¹ 察ç
MEMORY.md åã®çŽ¢åŒã¯ãµã€ãºäžéã§ç¡èšã«åãæšãŠãããããã€ãã§æž¬ãâäžè¡èŠçŽãæ¬æãžç§»éâçš®å¥ãã¬ãã£ãã¯ã¹ã®äºéæã¡ãå€ãâå¥å®è£ ã§äžå€æ¡ä»¶ãæ€èšŒããŸã§ã®æé ãæå€§ã®çœ ãããã©ã«ããã©ã³ãã«å ¥ããâ åãã·ã³ã§åããã®æœ°ãæ¹ä»ãã
æååãã§å®å ãæ±ºãŸããªã1ä»¶ããã¥ãŒãæ°žä¹ ã«è©°ãŸãããã®ãçŽã
èªååŠçãã¥ãŒã§å®å 解決ã«å€±æããã¢ã€ãã ã¯ã倱æãã§ã¯ãªããã¹ããããã«ãªããexit 0 ã®ãŸãŸæ¯æ©ãªãã©ã€ããç¶ãããè©°ãŸãã®æ€åºãåããæååããå ããã¹ããåå®ããæçŽç §åãå£ãã«ãã第2ããŒãžã®èš±å¯ãªã¹ãåãã©ãŒã«ããã¯ããããŠã察象å€ã«ãããåºå£ãŸã§ãå®äŸã§éãã