Skip to content

Overview

ddd-agent는 LangGraph와 LangChain 위에 도메인 중심 agent application을 올리기 위한 Python 템플릿입니다.

이 저장소의 핵심은 "LangGraph를 쓰는 샘플"이 아니라, 다음을 분리해서 유지하는 데 있습니다.

  • 도메인 규칙
  • workflow orchestration
  • human interaction
  • execution adapter
  • example application

현재 코어 패키지는 domain_agent 아래에 있고, 예제는 외부 demo app으로 examples/ 아래에 분리되어 있습니다.

현재 예제는 두 가지 모드를 함께 보여줍니다.

  • autonomous execution: examples/autonomous_digest
  • human-reviewed execution: examples/operational_change, examples/mock_api
  • real HTTP API-backed review: examples/github_repo_review

Domain First

이 템플릿을 이해할 때 가장 먼저 봐야 하는 것은 workflow가 아니라 domain입니다.

핵심 질문:

  • 어떤 상태가 유효한가?
  • 언제 review가 필요한가?
  • 어떤 action이 실제로 실행 가능한가?

이 질문에 대한 답은 모두 src/domain_agent/domain/models.py에 있습니다.

요약:

  • Request가 aggregate root
  • Proposal은 review용 summary
  • AgentPlan은 execution plan
  • PlanReviewResult는 overall decision과 action-level decision을 함께 표현

상세 설명: - Domain Model

What The Package Owns

이 템플릿이 직접 소유하는 것은 "도메인 중심 agent application의 의미"입니다.

  • Request lifecycle
  • AgentPlanPlannedAction
  • ReviewPacket
  • PlanReviewResult
  • optional human review semantics
  • 사람이 검토한 action만 실행하는 규칙

즉, 이 프로젝트는 프레임워크를 다시 만드는 것이 아니라, LangGraph/LangChain 위에 올릴 DDD-friendly agent template을 제공합니다. review는 현재 포함된 human-in-the-loop capability 중 하나입니다.

What LangGraph Owns

현재 구조에서는 human-in-the-loop orchestration을 LangGraph에 적극 위임합니다.

  • workflow node execution
  • state hand-off
  • interrupt / resume
  • checkpoint-aware continuation

이 덕분에 코어가 직접 관리해야 하는 abstraction 수가 줄었습니다.

Reading Order

이 저장소를 처음 읽을 때는 아래 순서를 권장합니다.

  1. src/domain_agent/domain/models.py
  2. src/domain_agent/application/dto.py
  3. src/domain_agent/application/ports.py
  4. src/domain_agent/orchestration/langgraph/graph.py
  5. src/domain_agent/orchestration/langgraph/nodes/deterministic.py
  6. src/domain_agent/application/use_cases.py
  7. src/domain_agent/adapters/inbound/cli_demo.py

Quick Start

uv sync
uv run domain-agent-demo

workflow graph를 보려면:

uv run domain-agent-graph --format mermaid

Streamlit GUI로 보려면:

cd examples/streamlit_review_demo
uv sync
uv run streamlit run streamlit_review_demo/app.py

문서 사이트를 로컬에서 띄우려면:

uv sync --group docs
uv run mkdocs serve

새 agent를 직접 만들어보려면:

Code References

  • src/domain_agent/domain/models.py
  • src/domain_agent/application/dto.py
  • src/domain_agent/application/ports.py
  • src/domain_agent/application/use_cases.py
  • src/domain_agent/orchestration/langgraph/graph.py
  • src/domain_agent/orchestration/langgraph/nodes/deterministic.py
  • src/domain_agent/adapters/inbound/cli_demo.py