AgentGuard에 관심을 가져주셔서 감사합니다. 이 문서는 기여를 위한 가이드라인과 지침을 제공합니다.
서로 존중해 주세요. 건설적인 태도를 취하세요. 좋은 의도를 가정하세요. 우리는 보안 인프라를 구축하고 있습니다 — 속도보다 정확성과 명확성이 더 중요합니다.
- Python 3.12+
- uv (Python 패키지 매니저)
- Node.js 20+ (콘솔 프론트엔드용)
- Docker & Docker Compose (통합 테스트용)
# 저장소 클론
git clone https://github.com/hidearmoon/agentguard.git
cd agentguard
# 종속성 시작
make dev
# 코어 엔진 종속성 설치
cd packages/core && uv sync --extra dev
# SDK 종속성 설치
cd packages/sdk-python && uv sync --extra dev
# 프론트엔드 종속성 설치
cd packages/console/frontend && npm install# 기본 테스트 스위트 실행 (단위 + 보안)
make test
# 개별 테스트 스위트 실행
make test-unit # 218개 단위 테스트
make test-security # 92개 보안 테스트
make test-integration # 통합 테스트 (Docker 서비스 필요)
make test-perf # 성능 벤치마크
# 커버리지와 함께 실행
make test-coverage- 보안 취약점: 보안 이슈는 비공개로 보고해 주세요. 공개 이슈를 열지 마세요. 유지 관리자에게 직접 이메일을 보내주세요.
- 버그: 최소한의 재현 케이스, Python 버전, 그리고
uv pip list의 출력을 포함하여 이슈를 열어주세요. - 기능 요청: 솔루션만 설명하지 말고 사용 사례(use case)를 설명하는 이슈를 열어주세요.
- 저장소를 포크(fork)하고
main에서 브랜치를 생성합니다. - 코드를 추가했다면 테스트도 추가하세요. 보안 관련 변경 사항은
packages/core/tests/security/에 보안 테스트가 필요합니다. - 모든 테스트가 통과하는지 확인합니다:
make test - 코드가 린팅을 통과하는지 확인합니다:
make lint - 단순한 **내용(what)**이 아니라 **이유(why)**를 설명하는 명확한 PR 설명을 작성하세요.
Conventional Commits 형식을 사용하세요:
feat(core): add time-based condition to rule DSL
fix(sdk-python): handle connection timeout in guard decorator
test(security): add encoding bypass test for base64 payloads
docs: update trust model documentation
| 패키지 | 설명 | 언어 |
|---|---|---|
packages/core |
보안 엔진 — 두뇌 역할 | Python (FastAPI) |
packages/proxy |
투명한 사이드카(sidecar) 프록시 | Python |
packages/console |
관리 UI | React (프론트엔드) + Python (백엔드) |
packages/sdk-python |
Python SDK | Python |
packages/sdk-typescript |
TypeScript SDK | TypeScript |
packages/sdk-go |
Go SDK | Go |
- Python: 엄격한 설정으로 Ruff에 의해 강제됩니다. 커밋하기 전에
make format을 실행하세요. - TypeScript: Prettier 및 TypeScript strict 모드에 의해 강제됩니다.
- Go: 표준
gofmt.
주요 규칙:
- 모든 공개 함수에 타입 어노테이션 작성 (Python)
- 설명 주석 없이
# type: ignore사용 금지 - 보안에 민감한 코드는 명시적인 테스트 커버리지를 가져야 함
- YAML DSL의 사용자 정의 규칙에는
reason필드가 포함되어야 함
보안 테스트는 packages/core/tests/security/에 있습니다. 새로운 탐지 규칙을 추가하거나 보안 파이프라인을 수정할 때는 해당하는 테스트를 반드시 추가해야 합니다.
테스트 카테고리:
test_attack_samples.py— 실제 공격 페이로드에 대한 테스트 (JSONL 형식)test_bypass_attempts.py— 알려진 우회 기법에 대한 테스트test_encoding_bypass.py— 유니코드, base64 및 기타 인코딩 공격test_header_forgery.py— 헤더를 통한 신뢰 수준 스푸핑test_trust_escalation.py— 권한 상승 시도test_combined_attacks.py— 다중 벡터 공격 체인test_fuzz.py— 무작위 입력을 사용한 퍼징
공격 샘플은 JSONL 파일로 tests/security/samples/에 저장됩니다. 각 줄의 구성:
{"input": "the attack payload", "expected": "BLOCK", "category": "direct_injection"}packages/core/src/agentguard_core/engine/intent/rule_engine.py에 규칙 로직 추가configs/builtin_rules.yaml에 등록packages/core/tests/unit/test_rule_engine.py에 단위 테스트 추가- 규칙이 잡아내야 하는 공격 샘플을 사용하여 보안 테스트 추가
- 해당하는 경우 문서의 규칙 개수 업데이트
packages/sdk-python/src/agentguard/integrations/your_framework.py생성packages/sdk-python/src/agentguard/integrations/__init__.py에서 내보내기(export)packages/sdk-python/tests/test_integrations.py에 테스트 추가examples/에 예제 추가- SDK README 업데이트
AgentGuard에 기여함으로써, 귀하의 기여가 Apache License 2.0에 따라 라이선스됨에 동의하는 것으로 간주됩니다.