ClaudeããŒã¯ã³æ¶è²»ãæããŠïŒå䜿ã: ãåå§äººãå£èª¿ã80%åæž
[泚æ]AIã«æžãããèšäºããã®ãŸãŸç§ã®æ¹ã§ã¬ãã¥ãŒããŠæ²èŒããŠããŸãã
ClaudeããŒã±ãããã¬ã€ã¹ã«ã ããããŸãæŽæ°ããããïŒããããããããããŸãã
@远èš: 2026幎4æ18æ¥

- Claudeã®ããŒã±ãããã¬ã€ã¹ã«ç¡äºå ¬éãããŸããð
-
genshijin@v1.3.0ãå ¬éããŸããããã«ããšãŒãžã§ã³ã察å¿ãã»ãã¥ãªãã£å¯Ÿå¿ããã³ãããŒã¯æŽæ°ãªã©ãå«ããŠããŸã
@远èš: 2026幎5æ7æ¥
-
genshijin@v1.4.0ãå ¬éããŸãã - cavemanæ¬å®¶v1.3.0以éã®å·®åïŒstats receipts / smart installer / cavecrewçžåœ / cavepackçžåœ / MCP-shrinkïŒãå šé ç®ç§»æ€
- äž»ãªè¿œå :
/genshijin-statsã§ãªã¢ã«ã»ãã·ã§ã³åæžéïŒUSDæšå®è¡šç€ºã3 subagent (genshijin-investigator/builder/reviewer) ã§é·ã»ãã·ã§ã³ã³ã³ããã¹ãæç¶ãgenshijin-shrinkMCP middlewareãroot ãã«ããšãŒãžã§ã³ã installerãultra-mode code-symbol guard 匷å - æè¡çã«é¢çœããããã¯ãäžèšãv1.4.0 æè¡æ·±æããã«è¿œå ïŒMCP middleware proxy ã®ä»çµã¿ãUSDæç®ã®èŠç©ããæ¹æ³, subagent å§çž®ã«ããé·ã»ãã·ã§ã³æç¶ïŒ
TL;DR
- caveman: Claude Codeåãã®è±èªå§çž®ã¹ãã«ãå è©ããã£ã©ãŒãæ¶ããŠããŒã¯ã³çŽ68%åæž
- genshijinïŒåå§äººïŒ: cavemanã®æ¥æ¬èªæé©åçãæ¬èªã»ã¯ãã·ã§ã³èšèã»åé·å©è©ãæ¶ããŠããŒã¯ã³çŽ80%åæž
- cavemanããããã«38%å°ãªãããŒã¯ã³ã§åãæè¡çå 容ãäŒéã§ãã
- ãªããããªããšãå¯èœãªã®ãïŒ Claudeã®ããŒã¯ãã€ã¶ã𿥿¬èªã®èšèªæ§é ã«ç§å¯ããã
ã¯ããã«ïŒããªãã®Claudeã¯åããããŠãã
Claude Codeãæ¥åžžçã«äœ¿ã£ãŠãããšã³ãžãã¢ãªãããããªå¿çãèŠãããšãããã¯ãã ã
ã質åããããšãããããŸããã調ã¹ãããšããããã¡ãã®åé¡ã«ã€ããŸããŠã¯ãèªèšŒããã«ãŠã§ã¢ã«ãããããŒã¯ã³ã®æå¹æéãã§ãã¯ã®éšåã«åå ãããå¯èœæ§ãèããããŸããå ·äœçã«ã¯ã
<æŒç®åã䜿çšããŠãããšããã<=ã«å€æŽããŠããã ãããšã§è§£æ±ºã§ããããšæããŸãã
67ããŒã¯ã³ã äŒãããæ å ±ã¯ããã ãïŒ
èªèšŒããã«ãŠã§ã¢ ãã°ãããŒã¯ã³æéãã§ãã¯
<â<=ãä¿®æ£:
14ããŒã¯ã³ã å 容ã¯åãã80%ããæ¬èªããå眮ããããŒããããšããè£ é£Ÿã ã£ãã
Claude Codeã®åºåããŒã¯ã³ã«ã¯èª²éãããããMax planã§æé¡$100ããããã¯APIçµç±ãªãåºåããŒã¯ã³1Mããã$15ïŒSonnetïŒãããªãããããããšãããããŸãããšãããšæãããŸããã«æ¯æ¥ãéãæã£ãŠããã
caveman ãšã¯äœã
caveman ã¯ãJulius Brusseeæ°ãäœã£ãClaude Codeåãã¹ãã«ã ãã³ã³ã»ããã¯ã·ã³ãã«ïŒ
ãåå§äººã¿ããã«åããäžèº«ã¯å šéšæ®ããç¡é§ã ãæ¶ããã
ã·ã¹ãã ããã³ããã«ããæžãã ãã§ãClaudeã®å¿çãåçã«å€ããã
Respond terse like smart caveman. All technical substance stay. Only fluff die.
BeforeïŒéåžžå¿çïŒ
Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by the authentication middleware where the token expiry check uses
<instead of<=.
AfterïŒcavemanã¢ãŒãïŒ
Bug in auth middleware. Token expiry check use
<not<=. Fix:
å è©ïŒa/an/theïŒããã£ã©ãŒïŒjust/really/basicallyïŒãå眮ãïŒSure! I'd be happy to...ïŒããŒããïŒmight/perhaps/likelyïŒãåé€ãæè¡çšèªãšã³ãŒããããã¯ã¯ãã®ãŸãŸã
ããã ãã§è±èªç°å¢ã§ã¯å¹³å68%ã®ããŒã¯ã³åæžãå®çŸããã
ãªããããæ©èœããã®ãââ Claudeã®ä»çµã¿ããçè§£ãã
ãããã³ããã«ãçãåãããšæžãã ãã§ãããªã«å€ããã®ïŒããšæããããããªãããããçè§£ããã«ã¯ãClaudeã®å éšåäœã3ã€ã®ã¬ã€ã€ãŒã§èŠãå¿ èŠãããã
ã¬ã€ã€ãŒ1: ããŒã¯ãã€ã¶ââ æååã¯ããåå²ããã
Claudeã¯BPEïŒByte Pair EncodingïŒããŒã¹ã®ããŒã¯ãã€ã¶ã䜿ã£ãŠãããããã¹ãã¯æåãã®ãã®ã§ã¯ãªããããŒã¯ã³ããšããåäœã«åå²ãããŠåŠçãããã
è±èªã®å ŽåïŒ
"I'd be happy to help you with that."
â ["I", "'d", " be", " happy", " to", " help", " you", " with", " that", "."]
â 10ããŒã¯ã³
ãã®10ããŒã¯ã³ã«ã¯æ å ±éãã»ãŒãŒãã®ãã®ãå€ãã"I'd be happy to" ã¯æå³çã«äœãäŒããŠããªããcavemanã¯ãã®ãæ å ±éãŒãã®ããŒã¯ã³ããçæãããªãããã«ããã
ã¬ã€ã€ãŒ2: èªå·±ååž°çæââ åé·ãã¯éªã ããŸåŒã«å¢ãã
Claudeã¯èªå·±ååž°ã¢ãã«ã ãã€ãŸãã1ããŒã¯ã³ãã€ãåã®ããŒã¯ã³ãèŠãŠæ¬¡ã®ããŒã¯ã³ãäºæž¬ããã
ãããéèŠïŒãã質åããããšãããããŸãããšåºåããŠããŸããšããã®åŸã®æäœãäžå¯§ã¢ãŒãã«ãããã¯ãããããäžå¯§ãªå眮ãã®åŸã«ã¯äžå¯§ãªæ¬æãç¶ããäžå¯§ãªæ¬æã®åŸã«ã¯äžå¯§ãªãŸãšããç¶ããåé·ãã¯éªã ããŸåŒã«èšããã
cavemanã®ã·ã¹ãã ããã³ããã¯ããã®æåã®1ããŒã¯ã³ç®ã®æ¹åãå€ããã"Sure" ã§ã¯ãªã "Bug" ããå§ããããããšã§ãåŸç¶ã®ããŒã¯ã³åå šäœãç°¡æœãªæ¹åã«åæããã
ã¬ã€ã€ãŒ3: ã·ã¹ãã ããã³ããã®ç¹æš©çäœçœ®
Claude ã®ã¢ãŒããã¯ãã£ã«ãããŠãã·ã¹ãã ããã³ããã¯ãŠãŒã¶ãŒã¡ãã»ãŒãžããåªå 床ãé«ããAnthropicã®ããã¥ã¡ã³ãã«ãæèšãããŠããéããã·ã¹ãã ããã³ããã¯å¿çã®ãäººæ ŒããèŠå®ããã
cavemanã¯ãã®ä»çµã¿ãå©çšããŠããäžå¯§ã«æ¯ãèãããšããClaudeã®ããã©ã«ãäººæ Œããåå§äººã®ããã«ç°¡æœã«æ¯ãèããã«äžæžãããããŠãŒã¶ãŒãæ¯åãçãçããŠããšæžãå¿ èŠã¯ãªããã¹ãã«ãšããŠäžåºŠèšå®ããã°ãã»ãã·ã§ã³äžãã£ãšæå¹ã«ãªãã
ãªãæ¥æ¬èªã§ã¯ caveman ã ãã§ã¯è¶³ããªãã®ã
ãããããæ¬é¡ãcavemanã¯è±èªã§ã¯èŠäºã«æ©èœããããããæ¥æ¬èªã®è³ªåã«å¯ŸããŠcavemanãé©çšãããšãè±èªã»ã©ã®å§çž®çãåºãªãã
30çš®é¡ã®ããã³ããã§ãã³ãããŒã¯ãåã£ãçµæãããã ïŒ
| ã¢ãŒã | å¹³åããŒã¯ã³æ° | éåžžæ¯åæžç |
|---|---|---|
| éåžžïŒæ¬èªããïŒ | 1,483 | ââ |
| caveman | 476 | 68% |
| genshijin | 296 | 80% |
cavemanã§ã68%åæžã§ããŠããããgenshijinã¯ããããããã«38%åã蟌ãã§ããããªããïŒ
çç±1: æ¥æ¬èªã®åé·æ§ã¯è±èªãšæ§é ãéã
è±èªã®åé·æ§ã¯äž»ã«ãä»å çãã ïŒ
Sure, I'd be happy to help. â ä»ãè¶³ãããå眮ã
The issue is basically that... â ä»ãè¶³ããããã£ã©ãŒ
ãããã¯åçŽã«åé€ã§ãããcavemanã® "Drop articles, filler, pleasantries" ã§å¯ŸåŠå¯èœã
ãããæ¥æ¬èªã®åé·æ§ã¯ææ«ã«åã蟌ãŸããŠããïŒ
åé¡ã§ããããŸã â åé¡ ïŒãã§ããããŸãããåé·ïŒ
ããããšãã§ããŸã â ã§ãã ïŒãããããšãããåé·ïŒ
ããšããããšã«ãªããŸã â ãã«ãªã ïŒããšããããšããåé·ïŒ
è±èªã®å è©åé€ã«ãŒã« "Drop a/an/the" ã«çžåœããæ¥æ¬èªã®ã«ãŒã«ã¯ååšããªããæ¥æ¬èªã«ã¯å è©ããªãããã ã代ããã«å¿ èŠãªã®ã¯ïŒ
- æ¬èªã¬ã€ã€ãŒã®é€å»: ã§ã/ãŸã/ããããŸã â äœèšæ¢ã
- å©è©ã®å§çž®: ãããããšãã§ãã â ãã§ãã
- æ¥ç¶è©ã®å§çž®: ããšããããšã«ãªããŸãã®ã§ â ã ãã
cavemanã®è±èªã«ãŒã«ããã®ãŸãŸæ¥æ¬èªã«é©çšããŠãããããã®åæžã¯èµ·ããªãã
çç±2: æ¥æ¬èªã®ããŒã¯ã³å¹çã¯è±èªããæªã
BPEããŒã¯ãã€ã¶ã«ãšã£ãŠãæ¥æ¬èªã¯è±èªããã³ã¹ããé«ãã
è±èªïŒ
"authentication" â ["auth", "ent", "ication"] â 3ããŒã¯ã³
æ¥æ¬èªïŒ
"èªèšŒ" â ["èª", "蚌"] â 2ããŒã¯ã³ïŒæŒ¢å2æåã§2ããŒã¯ã³ïŒ
"èªèšŒããã«ãŠã§ã¢" â ["èª", "蚌", "ããã«", "ãŠã§ã¢"] â 4ããŒã¯ã³
äžèŠãããšæ¥æ¬èªã®æ¹ãå¹çãè¯ãããã ããåé¡ã¯ä»éããææ³èŠçŽ ã ïŒ
"èªèšŒããã«ãŠã§ã¢ã«ãããããŒã¯ã³ã®æå¹æéãã§ãã¯ã®éšåã«åå ãããå¯èœæ§ãèããããŸã"
ãã®æã®å 容ã¯ãèªèšŒããã«ãŠã§ã¢ ããŒã¯ã³æéãã§ã㯠åå ãã§äŒããããããæ¥æ¬èªã®ææ³ã«åŸããšãã«ãããããã®ããã«ãããããããå¯èœæ§ãããèããããŸãããšããå©è©ã»å©åè©ã»æ¬èªãé£éããã
ãããã¯ãããã1ã2ããŒã¯ã³ãæ¶è²»ããã«ãããããããæ å ±éã¯ã»ãŒãŒããgenshijinã¯ãããæ»æããã
çç±3: genshijin ã®æ¥æ¬èªç¹åã«ãŒã«
genshijinã caveman ããå€ãã®ããŒã¯ã³ãåããçç±ã¯ãæ¥æ¬èªåºæã®åé·ãã¿ãŒã³ãæç€ºçã«ã«ãŒã«åããŠããããã ã
# cavemanã®ã«ãŒã«ïŒè±èªåãïŒ
Drop: articles (a/an/the), filler (just/really/basically),
pleasantries (sure/certainly), hedging
# genshijinã®ã«ãŒã«ïŒæ¥æ¬èªåãïŒ
åé€å¯Ÿè±¡:
- æ¬èªã»äžå¯§èªïŒã§ã/ãŸã/ããããŸã â äœèšæ¢ãã»çšèšæ¢ãïŒ
- ã¯ãã·ã§ã³èšèïŒããŒãš/ãŸã/ã¡ãªã¿ã«/äžå¿/åºæ¬çã«ïŒ
- ãŒããïŒããããããŸãã/ããšæãããŸã/ããããïŒ
- åé·å©è©ïŒãããããšãã§ããâãã§ããïŒ
- åé·æ¥ç¶ïŒããšããããšã«ãªããŸãã®ã§âã ããïŒ
- èªæãªå©è©ïŒã/ã®/ã/ã«/ã§/ã¯/ãš/ãïŒâ æå³éãããªãçç¥
- æ
å ±æ°Žå¢ã â èãããããšã ãçãã
ç¹ã«åŒ·åãªã®ãæåŸã®2ã€ã ã
èªæãªå©è©ã®çç¥ã¯ãæ¥æ¬èªè©±è ãªãèªç¶ã«è£å®ã§ããæ å ±ãåãïŒ
Before: ãã¬ã³ããªã³ã°ãè¡ããããã³ã«æ°ãããªããžã§ã¯ãã®åç
§ãçæãããã
After: ãã¬ã³ããªã³ã°æ¯ æ°ãªããžã§ã¯ãåç
§ çæã
å©è©ãæ¶ããŠã¹ããŒã¹ã§åºåããæ¥æ¬èªææ³ãšããŠã¯ç Žç¶»ããŠããããæè¡è ãªãäžç¬ã§æå³ãåããã
æ å ±æ°Žå¢ãã®çŠæ¢ã¯ãLLMã®ã芪åã«ç¶²çŸ çã«çãããããšããåŸåãæå¶ããïŒ
質å: ãCORSãšã©ãŒãåºãã
éåžž: CORSãšã¯äœã â åå 5ãã¿ãŒã³ â åãã¿ãŒã³ã®è§£æ±ºç â ãã©ãŠã¶ããšã®éã â ...
genshijin: ãµãŒãåŽ Access-Control-Allow-Origin æªèšå®ãããã远å ã
èãããŠããªãèæ¯èª¬æãç¶²çŸ çãªåæãçŠæ¢ããããšã§ãåçã®æ§é ã¬ãã«ã§ããŒã¯ã³ãåæžããã
å®éã®åçãèŠæ¯ã¹ãŠã¿ãã
æ°åã ãã§ã¯äŒãããªããå®éã®å¿çã䞊ã¹ãŠèŠãŠã»ããããã¹ãŠåãããã³ããã»åãã¢ãã«ïŒClaude SonnetïŒã§çæãããã®ã ã
äŸ1: ãCORSãšã©ãŒãåºããåå ãšè§£æ±ºçãæããŠã
éåžžã¢ãŒãïŒ1,168ããŒã¯ã³ïŒ:
CORSãšã©ãŒã®åå ãšè§£æ±ºçã«ã€ããŠè©³ãã説æããŸãã
CORSãšã©ãŒãšã¯
CORSïŒCross-Origin Resource SharingïŒãšã©ãŒã¯ããã©ãŠã¶ã®ã»ãã¥ãªãã£æ©èœã«ãã£ãŠãç°ãªããªãªãžã³ïŒãã¡ã€ã³ããããã³ã«ãããŒãïŒéã§ã®ãªãœãŒã¹å ±æãå¶éãããããšã§çºçããŸãã
ããããåå
- ç°ãªããã¡ã€ã³éã§ã®APIåŒã³åºã
- ããã³ããšã³ã:
http://localhost:3000- ããã¯ãšã³ã:
http://localhost:8000- ãããã³ã«ã®éã ...ïŒä»¥äžãExpress/Spring Boot/Django/Nginx ã®èšå®äŸãå»¶ã ãšç¶ãïŒ
cavemanïŒ358ããŒã¯ã³ïŒ:
CORS = ãã©ãŠã¶ã®ã»ãã¥ãªãã£æ©èœãå¥ãã¡ã€ã³ããã®ãªã¯ãšã¹ã鮿ã
åå
ããã³ã
http://localhost:3000â APIhttp://localhost:8080= ç°ãªããªãªãžã³ â CORSå¶é解決ç
ãµãŒããŒåŽå¯Ÿå¿ïŒæšå¥šïŒ
app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type,Authorization'); next(); });OPTIONS preflightæ¥ã = è€éãªã¯ãšã¹ãããµãŒããŒãOPTIONSå¿çå¿ èŠã
genshijinïŒ217ããŒã¯ã³ïŒ:
CORS ãšã©ãŒåå :
- ãã©ãŠã¶åäžãªãªãžã³å¶é
- ãµãŒãåŽ CORSèšå®ãªã
- preflight ãªã¯ãšã¹ã倱æ
解決ç:
ãµãŒãåŽïŒæšå¥šïŒ:
app.use(cors({ origin: 'http://localhost:3000', credentials: true }));確èªç¹:
Access-Control-Allow-OriginãããOPTIONSã¡ãœãã察å¿- èªèšŒCookieäœ¿çšæ
credentials: trueæ¬çªç°å¢ã¯å¿ ããµãŒãåŽä¿®æ£ã
éåžžã¢ãŒãã¯ãCORSãšã¯äœããããäžå¯§ã«å§ãŸãã4ã€ã®ãã¬ãŒã ã¯ãŒã¯ã®èšå®äŸãç¶²çŸ ãããgenshijinã¯ãåå 3è¡ã解決çã³ãŒã1ã€ã確èªãã€ã³ã3è¡ãã§çµãããæ å ±éã¯åãã
äŸ2: ãNode.jsã®ã€ãã³ãã«ãŒãã®ä»çµã¿ã説æããŠã
éåžžã¢ãŒãïŒ1,294ããŒã¯ã³ïŒ:
Node.jsã®ã€ãã³ãã«ãŒãã«ã€ããŠè©³ãã説æãããŠããã ããŸãã
ã€ãã³ãã«ãŒããšã¯
ã€ãã³ãã«ãŒãã¯ãNode.jsã®éåæåŠçã®äžæ žãšãªãä»çµã¿ã§ãã·ã³ã°ã«ã¹ã¬ããã§ãããªãã䞊è¡åŠçãå®çŸããããã®ä»çµã¿ã§ãã
ã€ãã³ãã«ãŒãã®æ§é
ã€ãã³ãã«ãŒãã¯ä»¥äžã®6ã€ã®ãã§ãŒãºããæ§æãããŠããŸãïŒ
âââââââââââââââââââââââââââââ ââ>â timers â ââ setTimeout, setInterval â âââââââââââââââ¬ââââââââââââââ â âââââââââââââââŽââââââââââââââ â â pending callbacks â ...ïŒä»¥äžãåãã§ãŒãºã®è©³çŽ°è§£èª¬ãã³ãŒãäŸãå³è§£ãç¶ãïŒ
cavemanïŒ741ããŒã¯ã³ïŒ:
cavemanã§ã741ããŒã¯ã³äœ¿ã£ãŠãããASCIIå³ããã®ãŸãŸåºåãããã§ãŒãºããšã®èª¬æãäžå¯§ã ãcavemanã¯è±èªã®ãã£ã©ãŒãæ¶ãããæ¥æ¬èªã®äžå¯§ãªèª¬ææ§é ã¯ãã®ãŸãŸæ®ããŠããŸãã
genshijinïŒ244ããŒã¯ã³ïŒ:
ã€ãã³ãã«ãŒã = ã·ã³ã°ã«ã¹ã¬ãã éåæåŠçæ©æ§ã
åºæ¬æ§é :
- ã³ãŒã«ã¹ã¿ãã¯: å®è¡äžfn
- ã³ãŒã«ããã¯ãã¥ãŒ: å®äºåŸ ã¡fn
- ã€ãã³ãã«ãŒã: ãã¥ãŒâã¹ã¿ãã¯è»¢é
åäœé åº:
- åæã³ãŒã ã¹ã¿ãã¯å®è¡
- éåæåŠç â WebAPI/libuvå§èš
- å®äºåŸ ã³ãŒã«ããã¯âãã¥ãŒè¿œå
- ã¹ã¿ãã¯ç©º â ãã¥ãŒããpopâã¹ã¿ãã¯è¿œå
- ç¹°ãè¿ã
ãã§ãŒãºé :
Timer â Pending â Poll â Check â CloseéèŠ:
- ã¹ã¿ãã¯ç©ºã§ãªããšãã¥ãŒåŠçãªã
- éãåæåŠç = UI/ä»åŠçãããã¯
process.nextTick> Promise > ä»ã³ãŒã«ããã¯ã·ã³ã°ã«ã¹ã¬ããæ CPUéçŽåŠç泚æã
cavemanæ¯ã§67%åæžãASCIIå³ãçãããã§ãŒãºã1è¡ã«ãŸãšããèŠç¹ã ããç®æ¡æžãã«ãããæŠå¿µèª¬æç³»ã¿ã¹ã¯ã§ã®å·®ãæãé¡èã«åºãã
äŸ3: ãèªèšŒããã«ãŠã§ã¢ã®ããŒã¯ã³æå¹æéãã§ãã¯ã«ãã°ããããä¿®æ£ããŠã
éåžžã¢ãŒãïŒ1,766ããŒã¯ã³ïŒ:
èªèšŒããã«ãŠã§ã¢ã®ããŒã¯ã³æå¹æéãã§ãã¯ã®ãã°ãä¿®æ£ããããŸããäžè¬çãªãã°ãã¿ãŒã³ãšãã®ä¿®æ£äŸã瀺ããŸãã
ãããããã°ãã¿ãŒã³ãšä¿®æ£
1. æå»æ¯èŒã®ãã°
// â ééã£ãäŸ function validateToken(token) { const decoded = jwt.verify(token, secret); const currentTime = Date.now(); // ãã°: åäœãç°ãªãïŒexp ã¯ç§ãDate.now() ã¯ããªç§ïŒ if (decoded.exp < currentTime) { ...ïŒä»¥äžã3ãã¿ãŒã³ã®ä¿®æ£äŸãã¿ã€ã ãŸãŒã³èæ ®ãå ç¢ãªããã«ãŠã§ã¢å®å šå®è£ ãç¶ãïŒ
cavemanïŒ202ããŒã¯ã³ïŒ:
ãã°è©³çŽ°äžæãæšæž¬ïŒæéåãããŒã¯ã³éãåé¡ã
ããããåå ïŒ
<vs<=æ··å- ã¿ã€ã ãŸãŒã³äžäžèŽ
- æå»åäœéã (ç§ vs ããªç§)
å žåäŸä¿®æ£ïŒ
// ãã°ç if (token.exp < Date.now()) { return next(); // å±éºïŒæéåããªã®ã«éã } // ä¿®æ£ç if (token.exp <= Date.now() / 1000) { return res.status(401).json({ error: 'Token expired' }); }å ·äœçãšã©ãŒã¡ãã»ãŒãžã»ã³ãŒãèŠããŠãæ£ç¢ºä¿®æ£åºãã
genshijinïŒ80ããŒã¯ã³ïŒ:
èªèšŒããã«ãŠã§ã¢ ãã°ãããŒã¯ã³æéãã§ãã¯åé¡ã
ã³ãŒã貌ããçŸç¶èŠãªããšä¿®æ£äžå¯ã
ããããåå :
- æå»æ¯èŒ
<â<=å¿ èŠ- UTC/JSTæ··åš
expãã£ãŒã«ã ç§/ããªç§ åäœéã// æªãäŸ if (Date.now() < tokenExp * 1000) // è¯ãäŸ if (Date.now() <= tokenExp * 1000)çŸã³ãŒã貌ã£ãŠã
80ããŒã¯ã³ã éåžžã¢ãŒãã®95%åæžããããŠæ³šç®ãã¹ãã¯ãã³ãŒã貌ãããšããå¿çã ãéåžžã¢ãŒãã¯èãããŠãããªãã®ã«3ãã¿ãŒã³ã®ä¿®æ£äŸãç¶²çŸ çã«æç€ºãããgenshijinã¯ãã³ãŒããèŠãªããšæ£ç¢ºãªä¿®æ£ã¯ã§ããªãããšæ£çŽã«è¿ããããããããæ å ±æ°Žå¢ãçŠæ¢ãã«ãŒã«ã®å¹æã ã
å š30ã¿ã¹ã¯ã®å¹³å
| ææš | å€ |
|---|---|
| éåžžâcaveman åæžç | 68% |
| éåžžâgenshijin åæžç | 80% |
| cavemanâgenshijin 远å åæžç | 38% |
caveman ãåãããŒãã32%ã®ããŒã¯ã³ïŒéåžžæ¯ïŒã®ãã¡ãgenshijinã¯ãã®çŽååãããã«ååããŠããã
æè¡çã«é¢çœããã€ã³ã
ãªããäœèšæ¢ããããããªã«å¹ãã®ã
æ¥æ¬èªã®ææ«åŠçã¯é©ãã»ã©ããŒã¯ã³ãæ¶è²»ããïŒ
ãèšå®ãããŠããŸãã â ãèšå®ã
â 5-6ããŒã¯ã³ â 1-2ããŒã¯ã³
ããããŠããŸããã ãã§3ã4ããŒã¯ã³ããããå¿çäžã®å šæã«é©çšããããšãææ«ã ãã§å šäœã®20ã30%ã®ããŒã¯ã³ãæ¶è²»ãããäœèšæ¢ãã«åãæ¿ããã ãã§ããã®åããŸãããšæ¶ããã
3段éã®åŒ·åºŠèšèš
genshijinã¯çšéã«å¿ããŠ3段éã®å§çž®ã¬ãã«ãæã€ïŒ
äžå¯§ã¢ãŒã ââ ããžãã¹åããæ¬èªã¯æ®ããã¯ãã·ã§ã³èšèã ãæ¶ãã
Before: ãã質åããããšãããããŸããã調ã¹ãããšããããã¡ãã®åé¡ã«ã€ããŸããŠã¯...ã
After: ãã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ãããã®ã¯ãã¬ã³ããªã³ã°ããšã«æ°ãã
ãªããžã§ã¯ãåç
§ãçæãããããã§ããuseMemoã§è§£æ±ºã§ããŸããã
éåžžã¢ãŒã ââ æ®æ®µäœ¿ããæ¬èªãèœãšãäœèšæ¢ãã
Before: ããã¡ãã®åé¡ã¯ãã¬ã³ããªã³ã°ãè¡ããããã³ã«...ã
After: ãã¬ã³ããªã³ã°æ¯ æ°ãªããžã§ã¯ãåç
§ çæãinline obj prop = æ°åç
§
= åã¬ã³ããªã³ã°ãuseMemoã§å
ããã
極éã¢ãŒã ââ é»å ±ãæ¥æ¬èªææ³ãå®å šç¡èŠã
Before: ãããŒã¿ããŒã¹ã®ã³ãã¯ã·ã§ã³ããŒãªã³ã°ãšããã®ã¯...ã
After: ãããŒã«=DBæ¥ç¶åå©çšããã³ãã·ã§ã€ã¯çç¥âé«è² è·æé«éãã
å®å šåŒã®èšèš
å§çž®ã¢ãŒãã«ã¯å±éºãã€ããŸãšããç Žå£çæäœã®ç¢ºèªãå§çž®ãããããŠãŒã¶ãŒã誀èªããŠæ¬çªDBãå¹ãé£ã°ããããããªãã
genshijinã¯ç Žå£çæäœã®ç¢ºèªæã®ã¿èªåçã«éåžžã®æ¥æ¬èªã«åŸ©åž°ããïŒ
> â ïž èŠå: `users`ããŒãã«å
šè¡åé€ãåæ¶äžå¯ã
> DROP TABLE users;
>
> åå§äººåŸ©åž°ãããã¯ã¢ãã確èªã
ãã®ãå®å šåŒãã®èšèšã¯ãå®çšããŒã«ãšããŠéèŠãªãã€ã³ãã ã
å°å ¥æ¹æ³
Claude Code ãã©ã°ã€ã³ïŒæšå¥šïŒ
claude plugin marketplace add InterfaceX-co-jp/genshijin
æåã€ã³ã¹ããŒã«ïŒã°ããŒãã«ïŒ
mkdir -p ~/.claude/skills/genshijin
curl -o ~/.claude/skills/genshijin/SKILL.md \
https://raw.githubusercontent.com/InterfaceX-co-jp/genshijin/main/skills/genshijin/SKILL.md
äœ¿ãæ¹
/genshijin # éåžžã¢ãŒãïŒããã©ã«ãïŒ
/genshijin äžå¯§ # ããžãã¹åã
/genshijin 極é # æå€§å§çž®
åå§äººãã㊠ã§è§£é€ã
è£èšïŒv1.3.0 æç¹ã®èªååã»æ¡åŒµæ©èœ
å§çž®ã¹ãã«ã®æå€§ã®åŒ±ç¹ã¯ãæ°ã¿ãŒã³åŸã«å¿ãããããšã ãã»ãã·ã§ã³åé ã§ /genshijin ãå©ããŠãã20ã30ã¿ãŒã³çµéãããšæ¬èªãååž°ãããã£ã©ãŒãæŒæµããŠå
ã®åé·ã¢ãŒãã«æ»ããããã³ãã1çºã§ã¯æ°žç¶åããªãã
genshijin ã¯ãã®åé¡ã v1.2.0 ã§ããã¯æ©æ§ã«å¯Ÿå¿ããŠè§£æ±ºããv1.3.0 ã§å¯Ÿå¿ç°å¢ã Claude Code å€ã«ãåºããã
èªååããã¯ïŒv1.2.0ãïŒ
Claude Code ãã©ã°ã€ã³å°å ¥åŸã以äžãèªåã§åãã
-
SessionStart ãã㯠(
hooks/genshijin-activate.js): ã»ãã·ã§ã³éå§æ¯ã«SKILL.mdããçŸã¢ã¯ãã£ãã¬ãã«ã®è©²åœè¡ã®ã¿ãã£ã«ã¿ã㊠hidden context ã«æ³šå ¥ãå€ã¿ãŒã³çµéåŸã®æ¬èªååž°ã»ãã£ã©ãŒæŒæµãé²ã anchor ãšããŠæ©èœããã -
UserPromptSubmit ãã㯠(
hooks/genshijin-mode-tracker.js):/genshijinç³»ã³ãã³ããèªç¶èšèªããªã¬ãŒïŒãåå§äººã¢ãŒãããåå§äººãããŠãçïŒã§ã¢ãŒãåæ¿ã远跡ãã¢ã¯ãã£ãäžã¯æ¯ã¿ãŒã³çãè£åŒ·ãªãã€ã³ããæ³šå ¥ããŠãä»ãã©ã°ã€ã³ãã¹ã¿ã€ã«æç€ºãæ¯ã¿ãŒã³æ³šå ¥ããç°å¢ã§ãããªãããé²ãã -
Statusline ãããž:
[åå§äºº]/[åå§äºº:極é]/[åå§äºº:ã³ããã]çã§çŸã¢ãŒãå¯èŠåã -
æ¢å®ã¢ãŒãèšå®:
GENSHIJIN_DEFAULT_MODEç°å¢å€æ°ããŸãã¯~/.config/genshijin/config.jsonïŒXDG察å¿ïŒã§äžæžãå¯èœãoffæå®ã§äžæåæ¢ïŒã¢ã³ã€ã³ã¹ããŒã«äžèŠïŒã
ãã©ã°ãã¡ã€ã« ~/.claude/.genshijin-active 㯠symlink æåŠã»64ãã€ãäžéã»ã¢ãŒããã¯ã€ããªã¹ãæ€èšŒã§ä¿è·ã芪ãã£ã¬ã¯ããªã® symlink å·®æ¿ãã§ ~/.ssh/id_rsa çã® secret ãã€ãã statusline ãã¢ãã«ã³ã³ããã¹ãã«æµãèŸŒãæ»æçµè·¯ããO_NOFOLLOW + temp+rename ã¢ãããã¯æžèŸŒ + 0o600 ããŒããã·ã§ã³ã§å¡ãèšèšã«ããã
ã¹ã©ãã·ã¥ã³ãã³ãïŒv1.3.0ãïŒ
v1.3.0 ã§ commands/ é
äžã«ã³ãã³ãå®çŸ©ã远å ãåŒ·åºŠåæ¿ã»ã³ãããçæã»PRã¬ãã¥ãŒãåçºåŒã³åºãã§ããã
/genshijin # éåžžã¢ãŒãïŒããã©ã«ãïŒ
/genshijin äžå¯§ # ããžãã¹åã
/genshijin 極é # æå€§å§çž®
/genshijin-commit # Conventional Commits 圢åŒã®ç°¡æœã³ãããã¡ãã»ãŒãžçæ
/genshijin-review # 1è¡PRã³ã¡ã³ãïŒL42: ðŽ ãã°: ...ïŒ
/genshijin-help # å
šã¢ãŒãã»ãµãã¹ãã« ãªãã¡ã¬ã³ã¹ã«ãŒã
ãã«ããšãŒãžã§ã³ã察å¿ïŒv1.3.0ãïŒ
Claude Code 以å€ã®ç°å¢ã§ãåãå§çž®ã«ãŒã«ãå¹ããããããäž»èŠ AI ãšãŒãžã§ã³ãåã rules ãã¡ã€ã«ã忢±ããã
-
.cursor/rules/genshijin.mdcâ Cursor -
.windsurf/rules/genshijin.mdâ Windsurf -
.clinerules/genshijin.mdâ Cline -
.github/copilot-instructions.mdâ GitHub Copilot -
AGENTS.mdâ Codex / Gemini CLI çã®ãµãã¹ãã«åç §ã€ã³ããã¯ã¹ -
rules/genshijin-activate.mdâ ããã¯æ©æ§ãæããªããã©ãããã©ãŒã åãå ±éã¢ã¯ãã£ããŒã·ã§ã³
Standalone ããã¯ã€ã³ã¹ããŒã©ïŒv1.3.0ãïŒ
Claude Code ãã©ã°ã€ã³æ©æ§ã䜿ããã«ãããã¯ã ããæåå°å ¥ãããã±ãŒã¹åãã
# macOS / Linux
./hooks/install.sh
./hooks/uninstall.sh
# Windows
./hooks/install.ps1
./hooks/uninstall.ps1
æ¢å ~/.claude/settings.json ãžã®å®å
šããŒãžïŒæ¢åãšã³ããªç Žå£ãªãã»éè€è¿œå ãªãïŒã§ SessionStart / UserPromptSubmit / Statusline ãå°å
¥ããã
ãã³ãããŒã¯ç¬¬4ã¢ãŒã terseïŒv1.3.0ãïŒ
ãgenshijin ã®åæžå¹æã¯ãåã«ãç°¡æœã«çããŠããšæç€ºããã°åçŸã§ããã®ã§ã¯ïŒããšããçåãžã®æ£çŽãªåçãšããŠã第4ã¢ãŒã terseïŒç°¡æœæç€ºã®ã¿ã»ã«ãŒã«ç¡ãïŒã远å ããã
çŸè¡ãã³ãããŒã¯ã¯4ã¢ãŒã æ¯èŒã«ãªã£ãŠããã
-
éåžžïŒæ¬èªããïŒ -
ç°¡æœïŒterse æç€ºã®ã¿ïŒ -
cavemanïŒè±èªå§çž®ã¹ãã«ïŒ -
genshijinïŒæ¥æ¬èªç¹åã¹ãã«ïŒ
genshijin vs ç°¡æœ ã®å·®åããããskill èªäœãæ±çšç㪠terse æç€ºãè¶
ããŠåæžããçŽç²ãªå¹æéã«ãªãã
v1.4.0 æè¡æ·±æã
v1.4.0 ã§æ¬å®¶ caveman v1.3.0 以éã®æ©èœããŸãšããŠç§»æ€ãããäžã§ãå®è£ ãšããŠããããã3ã€ãæãäžããã
MCP middleware proxy ã®ä»çµã¿
genshijin-shrink 㯠MCPïŒModel Context ProtocolïŒã® stdio middleware proxy ã ãClaudeïŒor ä»»æã® MCP clientïŒãš upstream MCP server ã®éã«æãŸããJSON-RPC ã¬ã¹ãã³ã¹å
ã® description field ã ããå§çž®ããã
ãªããããå¹ãããMCP ãµãŒããŒã¯ Claude ã«ããã®ããŒã«ã䜿ãããããšæãããšããtools/list ãšãã RPC ã§å
šããŒã«ã®ã¡ã¿ããŒã¿ãè¿ãããããããŒã¯ã³ãé£ããäŸãã° Filesystem MCP ãµãŒããŒã¯æ°åã®ããŒã« à å 200ã400 ããŒã¯ã³ã®è±èª description ã§ æ°åããŒã¯ã³ãæ¯ã»ãã·ã§ã³éå§æã«æ¶è²»ããã
genshijin-shrink ã¯ãããåãã
Claude ââ genshijin-shrink (proxy) ââ upstream MCP server
â
tools/list ã¬ã¹ãã³ã¹ã intercept
description field ã®ã¿å§çž®
ã³ãŒã/URL/ãã¹/èå¥å㯠byte-for-byte ä¿è·
å®è£ ã§æ°ãã€ãããã€ã³ã:
- stdio line-bufferingïŒJSON-RPC ã¯1è¡1ã¡ãã»ãŒãžãªã®ã§äž¡æ¹åã§ line buffer ãå ¥ãããéäžã§ stdin/stdout ãéšåçã« flush ãããŠã reassemble ããã
-
ä¿è·ããŒã¯ã³ã® sentinel 眮æïŒå§çž®åã« code block / URL / ãã¹ / CamelCase èå¥åã sentinel æååã«çœ®æ â æ£æéšåã ããæ£èŠè¡šçŸã§åã â sentinel ãå
ã«æ»ããããã§
useEffectãhttps://...ã絶察ã«å£ããªãã -
request side ã¯ç¡å€æŽã§ pass-throughïŒupstream ã«åãã request body ã¯è§Šããªãã
tools/callã®ã¬ã¹ãã³ã¹ãè§ŠããªãïŒcontent ã mutate ãããš downstream parsing ãå£ãããªã¹ã¯ãé«ãïŒãv1 ã¯åŸ¹åºçã«ä¿å®çã«ããŠãtools/list/prompts/list/resources/listã®descriptionã ãã«ä»å ¥ããã
// ä¿è·ãã¿ãŒã³ (mcp-servers/genshijin-shrink/compress.js)
const PROTECTED_PATTERNS = [
/```[\s\S]*?```/g, // fenced code
/`[^`\n]+`/g, // inline code
/\bhttps?:\/\/\S+/gi, // URLs
/\b[\w.-]*[\/\\][\w.\/\\\-]+/g, // paths
/\b[A-Z][A-Za-z0-9]*(?:_[A-Z][A-Za-z0-9]*)+\b/g, // CONST_CASE
/\b\w+\.\w+(?:\.\w+)*\(\)?/g, // dotted.method()
/[A-Za-z_][A-Za-z0-9_]*\s*\([^)]*\)/g, // function calls
/\b\d+\.\d+\.\d+\b/g, // semver
];
LSPïŒLanguage Server ProtocolïŒã«è§Šã£ãããšããããšã³ãžãã¢ãªããstdio middleware proxy ã®ãã¿ãŒã³ã¯éŠŽæã¿æ·±ãã¯ãã ãMCP ãåã JSON-RPC ããŒã¹ãªã®ã§ãåã middleware ã¢ãããŒããå¹ããMCP ãšã³ã·ã¹ãã ãä»åŸåºãã£ãŠããã»ã©ããã®çš®ã® proxy ç³»ããŒã«ã®äŸ¡å€ã¯äžããã
USDæç®ã®èŠç©ããæ¹æ³
/genshijin-stats ã¯ãã»ãã·ã§ã³ã§ $29 åæžãã¿ãããªæ°åãåºãããããã©ãèšç®ãããŠããã説æããã
Step 1: 宿¶è²»ããŒã¯ã³ã®ååŸ
Claude Code ã¯ã»ãã·ã§ã³ãã°ã ~/.claude/projects/<project>/<session-id>.jsonl ã«æžãåºãã1è¡1JSON ãšã³ããªã§ãassistant ã¡ãã»ãŒãžã«ã¯ usage.output_tokens ãå«ãŸããã
// hooks/genshijin-stats.js
function parseSession(filePath) {
const raw = fs.readFileSync(filePath, 'utf8');
let outputTokens = 0, turns = 0, model = null;
for (const line of raw.split('\n')) {
const entry = JSON.parse(line);
if (entry.type !== 'assistant') continue;
outputTokens += entry.message.usage.output_tokens || 0;
turns++;
if (!model) model = entry.message.model;
}
return { outputTokens, turns, model };
}
ããã§ãã€ã³ãã¯ãAI æšå®ã§ã¯ãªãå®ãã¡ã€ã«ããèªããããšãClaude èªèº«ã«ãåäœããŒã¯ã³äœ¿ã£ãïŒããšèããšé©åœãªæ°åãè¿ããŠãããããã¯ã¹ã¯ãªãããçŽæ¥ JSONL ã parse ããŠæ°ããã®ã§ãæ°å€ã®ä¿¡é Œæ§ã¯ 100%ã
Step 2: æšå®åæžéã®èšç®
ãã³ãããŒã¯ã§ãgenshijin éåžžã¢ãŒãã¯å¹³å 65% åæžããšåãã£ãŠãããactual_output = normal_output à (1 - 0.65) ã®é¢ä¿ããéç®:
estimated_normal = actual_output / (1 - 0.65)
estimated_saved = estimated_normal - actual_output
ã€ãŸãå®åºåã 18,000 ããŒã¯ã³ãªããæšå®ã§ 51,400 ããŒã¯ã³äœ¿ãã¯ãã ã£ããšããã 33,400 ããŒã¯ã³åã£ãèšç®ã«ãªãã
Step 3: USD æç®
Anthropic ã®åºåããŒã¯ã³ pricing ã model id prefix ã§ç §åãã:
const MODEL_OUTPUT_PRICE_PER_M = [
['claude-opus-4', 75.00],
['claude-sonnet-4', 15.00],
['claude-haiku-4', 4.00],
// ...
];
function priceForModel(model) {
for (const [prefix, price] of MODEL_OUTPUT_PRICE_PER_M) {
if (model.startsWith(prefix)) return price;
}
return null;
}
prefix ç
§åã«ããŠããçç±ïŒclaude-sonnet-4-20250514 ã claude-sonnet-4-7 ãåãæééå±€ãªã®ã§ãpoint release ããšã« table ãæŽæ°ããæéãé¿ãããæ°ããã¢ãã«äžä»£ãåºããšãã ã entry ã远å ããã°è¯ãã
æçµèšç®:
estimated_saved_usd = (estimated_saved_tokens / 1_000_000) Ã price_per_million
ããã§ãã»ãã·ã§ã³ã§ $0.51 åæžããåºãã
ãªãããããæ£çŽãªæ°åããªã®ã
estimated_saved 㯠平å 65% ãšããåæãæç«ããŠããå Žåã®èŠç©ãããã¿ã¹ã¯ã«ãã£ãŠã¯å§çž®çã 40% ã®ããšãããã 80% ã®ããšããããã ããåºåã«ã¯åžžã«ããæžã:
æšå®å€ = benchmarks/ å¹³åå€ç±æ¥ã宿°ã¯ã¿ã¹ã¯äŸåã
宿¶è²»ïŒå·ŠååïŒã¯ 100% æ£ç¢ºãæšå®åæžïŒå³ååïŒã¯ äºåãã³ãããŒã¯çµ±èšã®é©çšçµæ ã§ãã£ãŠã¢ãã«ãå¹»èŠã§çããæ°åã§ã¯ãªãããããããæ°ãªããã©å€§äºã
Lifetime éèš
.genshijin-history.jsonl ã« session æ¯ã®ã¹ãããã·ã§ããã append ãã/genshijin-stats --all ã§éèšãããsession_id ã§ latest-per-session ãåãããšã§ãåã»ãã·ã§ã³å
ã§äœåºŠ /stats ãå©ããŠãããã«ã«ãŠã³ããé¿ããŠãã:
const latestPerSession = new Map();
for (const entry of historyEntries) {
const id = entry.session_id;
const prev = latestPerSession.get(id);
if (!prev || entry.ts >= prev.ts) latestPerSession.set(id, entry);
}
ããã¯æç³»åãã°ãéèšãããšãã®å®çªãã¿ãŒã³ãDatadog ã Prometheus ãè§Šã£ãããšããããªã銎æã¿ã® dedup ããžãã¯ã ã
ãšã³ãžãã¢ã rtk gain ã time ã³ãã³ãã®åºåãçºããã®ã奜ããªã®ãšåãã§ãèªåãåã£ãæ°åãèŠãããšå¬ãããgenshijin-stats ãåãæ°æã¡ã§äœã£ãã
subagent å§çž®ã«ããé·ã»ãã·ã§ã³æç¶
genshijin-crew ã¯3ã€ã® Claude Code subagent presetã
| Subagent | åœ¹å² |
|---|---|
genshijin-investigator |
read-only ã³ãŒãäœçœ®ç¹å®ïŒhaiku modelïŒ |
genshijin-builder |
1-2ãã¡ã€ã« surgical ç·šé |
genshijin-reviewer |
severity-tagged ã¬ãã¥ãŒïŒhaiku modelïŒ |
ãªããããå¿
èŠããClaude Code ã«ã¯ ExploreïŒvanillaïŒãšãã subagent ããã£ãŠãã³ãŒããæ¢ããããæ£æã§çµæãè¿ããŠããã
Sure! I'll search for the safeWriteFlag function. I found it defined in
hooks/genshijin-config.js at line 81. It's an atomic write function that
uses O_NOFOLLOW to prevent symlink attacks. It's called from...
ïŒ2,000ããŒã¯ã³ïŒ
ãã® 2,000 ããŒã¯ã³ã äž»ã¹ã¬ããã®ã³ã³ããã¹ãã« verbatim æ³šå ¥ãããã20å Explore ãå©ããš 40,000 ããŒã¯ã³ãèã®èª¿æ»ãã°ã§ã³ã³ããã¹ããé£ããé·ã»ãã·ã§ã³ã context exhaustion ã§æ»ã¬å žåãã¿ãŒã³ã
genshijin-investigator ã¯åãä»äºãå§çž®åœ¢åŒã§è¿ã:
Defs:
- hooks/genshijin-config.js:81 â `safeWriteFlag` â atomic write w/ O_NOFOLLOW
Callers:
- hooks/genshijin-mode-tracker.js:33,87
- hooks/genshijin-activate.js:40
1 def, 2 callers.
ïŒ700ããŒã¯ã³ïŒ
3åã®1ã®ããŒã¯ã³ã§åãæ å ±ãdelegations ãå€ãã»ã©å¹ãã®ã§ã1ã»ãã·ã§ã³ã§ 30 ã 50 å subagent ãåŒã¶ãããªé·äœæ¥ïŒrefactoring / migration / å€§èŠæš¡èª¿æ»ïŒã§ context budget ã倧ããæç¶ããã
å®è£ äžã®ãã¢ã¯ãåºåå¥çŽãå³å¯ã«æžãã SKILL.mdãã ãsubagent ã«ãå§çž®ããŠè¿ããŠãããšé Œãã ãã ãšè¡šèšæºããåºããã ããåºåãã©ãŒãããã SKILL.md ã«æç€ºãã:
åºå圢åŒ:
<path:line> â `<symbol>` â <â€6èªã¡ã¢>
3è¡ä»¥äžæã¯1èªãããä»äž: Defs: / Refs: / Callers: / Tests: / Imports:
0ããã â No match.
æ«å°Ÿ â éèš: 2 defs, 5 refs.
ããã§äž»ã¹ã¬ããåŽã¯ path:\d+ ã§ grep ããŠçµæãæ©æ¢°çã«æŸãããhuman-readable ãš machine-readable ã®äž¡ç«ã¯ subagent èšèšã®é£æã§ãcavecrew ã¯ãããããè§£ããŠããã
ã¢ãã«ç¬èªã®æåãå¿ èŠãªé å㯠LLM ã«ä»»ããæ§é åãããçµæãæ¬²ããå Žé¢ã¯ subagent + åºåå¥çŽã§åºãã
ããã v1.4.0 ã§åºãé©çšãããèšèšååã ã/genshijin-stats ãåæ§ã§ãæ°å€èšç®ã Claude ã«ãããã Node ã¹ã¯ãªããã«ä»»ããClaude ã¯è¡šç€ºããæ
åœããªãïŒããã¯ã decision: "block" ã§æååãè¿ãã ãïŒãLLM ã®åšèŸºããŒã«ãæžããšãã®å®ç³ãšããŠèŠããŠãããšäœ¿ãåããã
ãŸãšã
LLMã®ããŒã¯ã³æ¶è²»ãæžããã¢ãããŒãã«ã¯ãã¢ãã«ã®åãæ¿ããã³ã³ããã¹ãã®åã蟌ã¿ãããã³ããã®å·¥å€«ãªã©ããããcaveman / genshijin ã¯ãåºååŽã®æäœãå¶åŸ¡ããããšããã·ã³ãã«ãã€å¹æçãªææ³ã ã
ç¹ã«genshijinã瀺ããã®ã¯ãèšèªããšã«åé·æ§ã®æ§é ãéããšããäºå®ã ãè±èªã®åé·æ§ã¯ä»å çïŒå眮ãããã£ã©ãŒãå è©ïŒã§ãæ¥æ¬èªã®åé·æ§ã¯æ§é çïŒæ¬èªãå©è©é£éãææ«åŠçïŒãæ±çšçãªå§çž®ã«ãŒã«ã§ã¯åŸè ãåãããŒãã
æã ãšã³ãžãã¢ã¯æ¥ã ãããŒã¿ã®å§çž®ã»æé©åããã£ãŠãããgzipãbrotliãProtocol Buffersââãã¹ãŠãäŒãããæ å ±ã¯ãã®ãŸãŸã«ãåé·ãªè¡šçŸãåãããšããææ³ã ãgenshijinããã£ãŠããã®ã¯ããŸãã«ããã®èªç¶èšèªçã«ãããªãã
ããªãã®Claudeããåå§äººã«ãªããã
ãŠã§ããµã€ã: https://interfacex-co-jp.github.io/genshijin/
ãªããžããª: InterfaceX-co-jp/genshijin
å
ãããžã§ã¯ã: JuliusBrussee/caveman
ã©ã€ã»ã³ã¹: MIT
Discussion
éåžžã«é¢çœãèšäºããããšãããããŸãïŒ
ãããã«å©è©å©åè©ã¯æ å ±éã®ããã«ç¡é§ã«ããŒã¯ã³æ°é£ã£ãŠãã€ã¡ãŒãžããã®ã§ã
ãã®ææ³ã¯çµæ§ã¯ãŒã¯ãããã ãªãšæããŸããã
ïŒãªããPCAçãªãæ å ±éäœãããã«ç¡é§ãªéšåãåæžããæãã§ãããïŒã¡ãªã¿ã«ç Žå£çæäœã®æ€ç¥ã£ãŠã©ãããæãã§ãããŠããã®ã§ãããããèŸæžçãªãã®ã§ããïŒãããšãLLM as a judgeçãªãã®ã§ãããããïŒ
ããããšãããããŸãã
äžå¿ãåçŽã«èšèªã®åé·æ§ãé©åã«æé€ããŠå 容ãäŒéããããšã念é ã«èšèšããŠããŸããskills/genshijin/SKILL.md:71 ã«èªç¶èšèªã«ãŒã«èšè¿°ã®ã¿:
ã§ãããŸã§åºç€ã¢ãã«èªèº«ã«å€æãå§ãã圢ã«ãªã£ãŠããŸã£ãŠããŸããã¢ãã«ã«ãã£ãŠã¯å€æããã¬ãå¯èœæ§ãããã§ããããèªåãå©çšããç¯å²ã«ã€ããŠã¯æ£çŽãã£ãŠç Žå£çæäœèªäœãããããªãã®ã§åé¡ã¯ãªãã®ã§ãããå®å šã«ãšãŒãžã§ã³ããšããŠéçšããéã«ã¯ãã®ãã©ã°ã€ã³ã®å©çšæç¡ã«ãšããããé©åã«ã¬ãŒãã¬ãŒã«ãèšèšããŠãã ããã(ãããããã¯ãããã®ãã©ã°ã€ã³äºã ã®ã¹ã³ãŒãã§ã¯ãªãã¯ã)
äžæ¹ã§ãããã€ãæ¬å®¶ã«ã¯ãã£ãŠãã¡ãã«ãªããã®ã¯ããã®ã§ãå®å šæ§ã«ã€ããŠã¯æ¹åãéããäºå®ã§ãã