README.ko.md

September 15, 2026 ยท View on GitHub

โš ๏ธ This is an auto-generated translation. For the latest version, see the English README. Community corrections welcome!

๐Ÿ‡บ๐Ÿ‡ธ English | ๐Ÿ‡จ๐Ÿ‡ณ ็ฎ€ไฝ“ไธญๆ–‡ | ๐Ÿ‡ฏ๐Ÿ‡ต ๆ—ฅๆœฌ่ชž | ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด | ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol | ๐Ÿ‡ง๐Ÿ‡ท Portuguรชs | ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch | ๐Ÿ‡ซ๐Ÿ‡ท Franรงais | ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน | ๐Ÿ‡ฎ๐Ÿ‡ณ เคนเคฟเคจเฅเคฆเฅ€ | ๐Ÿ‡น๐Ÿ‡ท Tรผrkรงe | ๐Ÿ‡ป๐Ÿ‡ณ Tiแบฟng Viแป‡t | ๐Ÿ‡ฎ๐Ÿ‡น Italiano | ๐Ÿ‡ธ๐Ÿ‡ฆ ุงู„ุนุฑุจูŠุฉ | ๐Ÿ‡ฎ๐Ÿ‡ฑ ืขื‘ืจื™ืช


failproof ai

FailproofAI%2Ffailproofai | Trendshift

npm CI Supply Chain Discord Reddit Docs License

๋ฒˆ์—ญ: ็ฎ€ไฝ“ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด ยท Espaรฑol ยท Portuguรชs ยท Deutsch ยท Franรงais ยท ะ ัƒััะบะธะน ยท เคนเคฟเคจเฅเคฆเฅ€ ยท Tรผrkรงe ยท Tiแบฟng Viแป‡t ยท Italiano ยท ุงู„ุนุฑุจูŠุฉ ยท ืขื‘ืจื™ืช

์—์ด์ „ํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ํ•˜๋„ค์Šค๋ฅผ ์œ„ํ•œ ๊ด€์ธก์„ฑ๊ณผ ์ •์ฑ… ์ง‘ํ–‰. ์—์ด์ „ํŠธ๊ฐ€ ์–ด๋””์„œ ์‹คํ–‰๋˜๋“  ์šฐ๋ฆฌ๋Š” ํ™•์ธํ•˜๊ณ  โ€” ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Failproof๋Š” 12๊ฐœ์˜ ์—์ด์ „ํŠธ ํ•˜๋„ค์Šค๋ฅผ ํ›„ํ‚นํ•ฉ๋‹ˆ๋‹ค โ€” Claude Code, Codex ๊ฐ™์€ ์ฝ”๋”ฉ CLI, Hermes ๊ฐ™์€ ์ฑ„ํŒ… ๊ฒŒ์ดํŠธ์›จ์ด, OpenClaw ๊ฐ™์€ ์ž์ฒด ํ˜ธ์ŠคํŒ… ์–ด์‹œ์Šคํ„ดํŠธ โ€” ๋ชจ๋“  ์‹คํ–‰์„ ์บก์ฒ˜ํ•˜๊ณ  ์œ„ํ—˜ํ•œ ํˆด ํ˜ธ์ถœ์„ ์‹คํ–‰ ์ „์— ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ œ๊ณต ์ •์ฑ… 39๊ฐœ. ๋ ˆ์ดํ„ด์‹œ ์—†์Œ. ๋กœ์ปฌ์—์„œ ์‹คํ–‰.

Failproof AI in action


์ง€์› ํ•˜๋„ค์Šค

๋‘ ๊ฐ€์ง€ ํด๋ž˜์Šค๋กœ ๋‚˜๋‰œ 12๊ฐœ์˜ ํ•˜๋„ค์Šค โ€” ์ฝ”๋”ฉ CLI 10๊ฐœ, ์ฑ„ํŒ… ๋ฐ ์–ด์‹œ์Šคํ„ดํŠธ ๊ฒŒ์ดํŠธ์›จ์ด 2๊ฐœ(Hermes, OpenClaw). ๋ชจ๋“  ํ•˜๋„ค์Šค์— ๊ฑธ์ณ ํ•˜๋‚˜์˜ ์ •์ฑ… API์™€ ํ•˜๋‚˜์˜ ์„ธ์…˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์ด ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋Š” ํ•˜๋„ค์Šค๋งˆ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํˆด ํ˜ธ์ถœ์„ ์‹คํ–‰ ์ „์— ๋ฉˆ์ถ”๋Š” ๊ธฐ๋Šฅ์€ 12๊ฐœ ๋ชจ๋‘์—์„œ ๊ฒ€์ฆ๋˜์—ˆ์œผ๋ฉฐ, ํ„ด ์ข…๋ฃŒ ๊ฒŒ์ดํŠธ๋Š” 8๊ฐœ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋„ค์Šค๋ณ„ ๋งคํŠธ๋ฆญ์Šค์—์„œ ๊ฐ ํ•˜๋„ค์Šค๊ฐ€ ์ง€์›ํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

12๊ฐœ ํ•˜๋„ค์Šค ์ค‘ ์–ด๋””์—๋„ ์†ํ•˜์ง€ ์•Š๋Š” ์—์ด์ „ํŠธ๋Š” Python SDK๋ฅผ ํ†ตํ•ด ๋ณด๊ณ ํ•˜๋ฉฐ, ํŠธ๋ ˆ์ด์‹ฑ, ์„ธ์…˜, ๊ฐ์‚ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํ™˜๊ฒฝ์—์„œ์˜ ์ •์ฑ… ์ง‘ํ–‰์€ ์ž์ฒด ๋Ÿฐํƒ€์ž„์— ํ›…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค โ€” ๋ฌธ์˜ํ•˜์‹œ๋ฉด ๋งคํ•‘์„ ๋„์™€๋“œ๋ฆฝ๋‹ˆ๋‹ค.

{/* A 6-column table instead of inline runs: table columns never re-wrap, so the grid stays 2ร—6 at any window width (scrolling on very narrow screens instead of collapsing into ragged orphan rows). */}

Claude Code OpenAI Codex GitHub Copilot Cursor Agent OpenCode Pi
Hermes OpenClaw Factory Droid Devin CLI Antigravity CLI Goose

์„ค์น˜

npm install -g failproofai
failproofai config                             # ์—์ด์ „ํŠธ์™€ ๋ฐ๋ชฌ ์—ฐ๊ฒฐ ์„ค์ •
failproofai policies add FailproofAI/policies  # ์ ์šฉํ•  ์ •์ฑ… ์„ ํƒ
failproofai                                    # localhost:8020์—์„œ ๋Œ€์‹œ๋ณด๋“œ ์‹คํ–‰

์„ค์ •์€ ํ›…์„ ์—ฐ๊ฒฐํ•˜๋˜ ์ •์ฑ…์„ ์•„๋ฌด๊ฒƒ๋„ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์ด ๋จธ์‹ ์— ๊ฐ€๋“œ๋ ˆ์ผ์„ ์„ค์น˜ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋ชจ๋“  ํŒฉ์€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค (failproofai policies add <owner>/<repo>; policies show <owner>/<repo>๋กœ ๋จผ์ € ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ํ„ฐ๋ฏธ๋„ ์—†์ด failproofai config๋ฅผ ์‹คํ–‰ํ•˜๋ฉด โ€” CI, ์ปจํ…Œ์ด๋„ˆ, ์—์ด์ „ํŠธ๊ฐ€ ์ง์ ‘ ๊ตฌ๋™ํ•˜๋Š” ๊ฒฝ์šฐ โ€” ๋ฌป์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ๋„ ์„ค์ •๋˜์ง€ ์•Š์€ ๋จธ์‹ ์—์„œ๋Š” ๋‹ค๋ฅธ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด๋„ ๋™์ผํ•œ ์„ค์ • ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. FAILPROOFAI_NO_FIRST_RUN=1๋กœ ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒฉ์ด ์ถ”๊ฐ€๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” block-failproofai-commands๋งŒ ์ •์ฑ…์„ ์ง‘ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •์ฑ…์€ ํ•ญ์ƒ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ๋„๊ฑฐ๋‚˜ ์ผ์‹œ ์ค‘์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง‘ํ–‰์„ ์ผ์‹œ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์—์ด์ „ํŠธ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ฑ…๋„ ๋Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


์ฐจ๋‹จ ๋Œ€์ƒ

์ •์ฑ…์ฐจ๋‹จ ๋‚ด์šฉ
block-env-files.env ๋ฐ ๊ธฐํƒ€ ์‹œํฌ๋ฆฟ ํŒŒ์ผ ์ฝ๊ธฐ
warn-repeated-tool-calls๋™์ผํ•œ ํˆด ํ˜ธ์ถœ์„ ๋ฐ˜๋ณตํ•˜๋Š” ์—์ด์ „ํŠธ ๋ฃจํ”„
block-sudo๊ถŒํ•œ ์ƒ์Šน
warn-destructive-sqlDROP, TRUNCATE, ์กฐ๊ฑด ์—†๋Š” DELETE
block-terraform / block-kubectl๊ฒ€ํ† ๋˜์ง€ ์•Š์€ ๋ผ์ด๋ธŒ ์ธํ”„๋ผ ๋ณ€๊ฒฝ
block-rm-rf์žฌ๊ท€์  ํŒŒ์ผ ์‚ญ์ œ
block-force-push / block-push-mastergit push --force, main ๋ธŒ๋žœ์น˜๋กœ์˜ ์ง์ ‘ ํ‘ธ์‹œ

์ด ๋ชจ๋“  ์ •์ฑ…์€ ํˆด ํ˜ธ์ถœ์„ ์‹คํ–‰ ์ „์— ์ฐจ๋‹จํ•˜๋ฏ€๋กœ 12๊ฐœ ํ•˜๋„ค์Šค ๋ชจ๋‘์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋„ค ๊ฐ€์ง€๋Š” ํˆด์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์—์ด์ „ํŠธ์— ์ ์šฉ๋˜๊ณ , ๋‚˜๋จธ์ง€ ์„ธ ๊ฐ€์ง€๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ€์žฅ ์„ ํ˜ธํ•˜๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค โ€” ์ฝ”๋”ฉ CLI๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊นŠ์ด ์ง€์›ํ•˜๋Š” ํ•˜๋„ค์Šค ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. sanitize-* ๊ณ„์—ด์€ ๋ณ„๋„๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํˆด์ด ๋ฐ˜ํ™˜๋œ ํ›„ ์‹คํ–‰๋˜๋ฏ€๋กœ, ์‹œํฌ๋ฆฟ์ด ์ปจํ…์ŠคํŠธ์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ๋ง‰๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํˆด ์ถœ๋ ฅ์—์„œ ์‹œํฌ๋ฆฟ์„ ๊ฐ์ง€ํ•ด ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

โ†’ 39๊ฐœ์˜ ๊ธฐ๋ณธ ์ œ๊ณต ์ •์ฑ… ์ „์ฒด ๋ณด๊ธฐ


์ปค์Šคํ…€ ์ •์ฑ…

.failproofai/policies/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค โ€” ๋ณ„๋„์˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹ํ•˜๋ฉด ํŒ€ ์ „์ฒด๊ฐ€ ๋‹ค์Œ ํ’€ ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

import { customPolicies, deny, allow } from "failproofai";

customPolicies.add({
  name: "no-production-writes",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    if (ctx.toolInput?.file_path?.includes("production"))
      return deny("Writes to production paths are blocked.");
    return allow();
  },
});

๋ชจ๋“  ์ •์ฑ…์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ ๊ฐ€์ง€ ๊ฒฐ์ •:

๊ฒฐ์ •ํšจ๊ณผ
allow()์ž‘์—… ํ—ˆ์šฉ
deny(message)์ฐจ๋‹จ โ€” ๋ฉ”์‹œ์ง€๊ฐ€ ์—์ด์ „ํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜๋จ
instruct(message)ํ†ต๊ณผ์‹œํ‚ค๋˜, ์—์ด์ „ํŠธ์˜ ๋‹ค์Œ ํ”„๋กฌํ”„ํŠธ์— ์ปจํ…์ŠคํŠธ ์ถ”๊ฐ€

โ†’ ์ •์ฑ… ์ž‘์„ฑํ•˜๊ธฐ


๊ด€์ธก์„ฑ

์ •์ฑ… ์ง‘ํ–‰์€ ์ ˆ๋ฐ˜์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ์ ˆ๋ฐ˜์€ ์—์ด์ „ํŠธ๊ฐ€ ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ธ์ˆ˜ ์—†์ด failproofai๋ฅผ ์‹คํ–‰ํ•˜๋ฉด localhost:8020์—์„œ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ์‹œ์ž‘๋˜๋ฉฐ, ์ด๋ฏธ ๋จธ์‹ ์— ์ €์žฅ๋œ ์‹คํ–‰ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค โ€” ๊ณ„์ •๋„, ํšŒ์›๊ฐ€์ž…๋„, ์™ธ๋ถ€ ์ „์†ก๋„ ์—†์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ๋ชฉ๋ก, ๊ฐ ์‹คํ–‰ ๋‚ด์˜ ๋ชจ๋ธ ํ˜ธ์ถœ ์ˆœ์„œ, ํˆด ํ˜ธ์ถœ, ํ›… ๊ฒฐ์ •, ์ฐจ๋‹จ๋œ ๋‚ด์šฉ๊ณผ ์ •์ฑ…์ด ์—์ด์ „ํŠธ์— ์ „๋‹ฌํ•œ ๋‚ด์šฉ, ๊ทธ๋ฆฌ๊ณ  ํžˆ์Šคํ† ๋ฆฌ์—์„œ ์œ„ํ—˜ ํŒจํ„ด์„ ์Šค์บ”ํ•˜๊ณ  ์ฐจ๋‹จํ•  ์ •์ฑ…์„ ์ œ์•ˆํ•˜๋Š” ์˜คํ”„๋ผ์ธ ๊ฐ์‚ฌ(failproofai audit)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โ†’ ๋กœ์ปฌ ๋Œ€์‹œ๋ณด๋“œ ยท ํŠธ๋ ˆ์ด์Šค ์ฝ๊ธฐ ยท ๋กœ์ปฌ ๊ฐ์‚ฌ

Failproof AI Observability๋Š” ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ํ˜ธ์ŠคํŒ… ๋ฒ„์ „์œผ๋กœ, ํ”Œ๋ฆฟ ์ „์ฒด์—์„œ ์—์ด์ „ํŠธ๋ฅผ ์šด์˜ํ•˜๋Š” ํŒ€์„ ์œ„ํ•œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ•˜๋„ค์Šค์˜ ๋ชจ๋“  ์‹คํ–‰์„ ํ•œ ๊ณณ์—์„œ ํ™•์ธํ•˜๊ณ , ๋ณ‘๋ ฌ ์„œ๋ธŒ์—์ด์ „ํŠธ๋ฅผ ๋ณ„๋„ ๋ ˆ์ธ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ์‹คํ–‰ ๊ทธ๋ž˜ํ”„, ๋ชจ๋ธยทํˆดยทํ›…์˜ p50/p95/p99 ๋ ˆ์ดํ„ด์‹œ, ๋ชจ๋ธ๋ณ„ ๋น„์šฉ ๋ฐ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ ์ถ”์ , ์˜ค๋ฅ˜ ์ถ”์ , ๊ณต์œ  ๊ฐ€๋Šฅํ•œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ฐ–์ถ˜ ์ž์ฒด ํŠธ๋ ˆ์ด์Šค SQL ์ฟผ๋ฆฌ, ์ž์ฒด ์„œ๋น„์Šค๋กœ ์ ์ˆ˜๋ฅผ ๋งค๊ธฐ๋Š” ํ‰๊ฐ€, ๋ฐ˜๋ณต์ ์ธ ์‹คํŒจ๋ฅผ ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ ๊ฒฐ๊ณผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜ˆ์•ฝ ๊ฐ์‚ฌ, Slackยท์ด๋ฉ”์ผยท์„œ๋ช…๋œ ์›นํ›…์œผ๋กœ์˜ ์•Œ๋ฆผ ๋ผ์šฐํŒ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Enterprise ํ”Œ๋žœ์—์„œ๋Š” ์ž์ฒด ํด๋Ÿฌ์Šคํ„ฐ ์…€ํ”„ ํ˜ธ์ŠคํŒ…๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

โ†’ ์„ธ์…˜ ยท ๊ฐ์‚ฌ ยท ๋ฐ๋ชจ ์˜ˆ์•ฝ


๋ฌธ์„œ

์‹œ์ž‘ํ•˜๊ธฐ
๋น ๋ฅธ ์‹œ์ž‘์„ค์น˜, ํ•˜๋„ค์Šค ์—ฐ๊ฒฐ, ์ฒซ ๋ฒˆ์งธ ์‹คํ–‰ ํ™•์ธ
๊ฐœ๋…ํ›… ์‹œ์Šคํ…œ ์ž‘๋™ ๋ฐฉ์‹
์ง€์› ํ•˜๋„ค์Šค12๊ฐœ ์ „์ฒด ๋ฐ ๊ฐ ํ•˜๋„ค์Šค์˜ ์ง‘ํ–‰ ๋ฒ”์œ„
๊ด€์ธก
์„ธ์…˜์‹คํ–‰ ์ถ”์ : ๋ชจ๋ธ, ํˆด, ์˜ค๋ฅ˜, ๋ ˆ์ดํ„ด์‹œ
ํŠธ๋ ˆ์ด์Šค ์ฝ๊ธฐ์‹คํ–‰ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋งํ•ด์ฃผ๋Š” ๊ฒƒ
๊ฐ์‚ฌ์—ฌ๋Ÿฌ ์„ธ์…˜์— ๊ฑธ์นœ ์‹คํŒจ ํŒจํ„ด ํƒ์ง€
๋กœ์ปฌ ๋Œ€์‹œ๋ณด๋“œlocalhost:8020, ๊ณ„์ • ๋ถˆํ•„์š”
์ง‘ํ–‰
์ •์ฑ… ํŒฉFailproof AI ์ •์ฑ… ๋ฐ ์ •์ฑ… ํ—ˆ๋ธŒ์˜ ํŒฉ
์ •์ฑ… ์ž‘์„ฑํ•˜๊ธฐ๊ฐ์‚ฌ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ˜ ๋˜๋Š” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์ž‘์„ฑ
์„ค์ •์„ค์ • ์Šค์ฝ”ํ”„, ๋ณ‘ํ•ฉ ๊ทœ์น™ ๋ฐ ์ •์ฑ… ํŒŒ๋ผ๋ฏธํ„ฐ
์ปค์Šคํ…€ ์—์ด์ „ํŠธ ์—ฐ๋™
Python SDKํ•˜๋„ค์Šค ์—†์ด ์—์ด์ „ํŠธ ์‹คํ–‰์„ ๋ณด๊ณ 
Policy SDKallow / deny / instruct ๋ ˆํผ๋Ÿฐ์Šค

๋ผ์ด์„ ์Šค

Commons Clause๊ฐ€ ํฌํ•จ๋œ MIT ๋ผ์ด์„ ์Šค โ€” ๋‚ด๋ถ€ ๋ฐ ๊ฐœ์ธ ์‚ฌ์šฉ์€ ๋ฌด๋ฃŒ์ด๋ฉฐ, failproofai ์ž์ฒด์˜ ์ƒ์—…์  ์žฌํŒ๋งค๋Š” ๋ณ„๋„ ๊ณ„์•ฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ „๋ฌธ์€ LICENSE๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


๊ธฐ์—ฌํ•˜๊ธฐ

CONTRIBUTING.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ์ •์ฑ…, ์—ฃ์ง€ ์ผ€์ด์Šค, ๋ฒˆ์—ญ ๋ชจ๋‘ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ ์ „์— ๋นŒ๋“œํ•˜์„ธ์š”. ๋จผ์ € bun install && bun run build๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”. ์ด ์ €์žฅ์†Œ๋Š” failproofai ์ž์ฒด ํ›…์„ ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ์ ์šฉํ•˜๋ฉฐ, ํ›…์€ ์ปดํŒŒ์ผ๋œ dist/ ๋ฒˆ๋“ค์—์„œ failproofai ์ž„ํฌํŠธ๋ฅผ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค โ€” ๋นŒ๋“œ ์—†์ด๋Š” Cannot find package 'failproofai' ํ›… ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. src/ ๋ณ€๊ฒฝ ํ›„์—๋Š” ๋‹ค์‹œ ๋นŒ๋“œํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Build before the in-repo dev hooks will work๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


SF์™€ ๋ฒต๊ฐˆ๋ฃจ๋ฃจ์—์„œ โค๏ธ๋ฅผ ๋‹ด์•„ befailproof.ai๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.