핵심 요약
- 에이전트가 생성한 일정: 에이전트는 대화에서 알림과 반복 작업을 설정할 수 있습니다.
- 실행별 설정: 하나의 배포가 각 실행마다 자체 모델, 스킬, 도구를 선택할 수 있습니다.
- Slack 반응: 에이전트는 답장하기 전에 메시지를 확인(acknowledge)합니다.
오늘 우리는 Managed Deep Agents v0.9를 출시합니다. 이번 버전에는 에이전트가 자체 후속 작업을 예약하고, 매 실행마다 스스로를 재구성하며, Slack 메시지에 반응할 수 있는 새로운 기능이 포함되어 있습니다.
이번 업데이트를 통해 Slack이나 자체 채널에서 활동하며 팀원처럼 작동하는 내부 에이전트를 더 쉽게 구축할 수 있습니다.
에이전트가 자신의 작업을 직접 예약하도록 허용하기
그 새로운 Schedules SDK 대화 중에 에이전트가 미리 알림, 후속 조치, 반복 작업을 만들 수 있게 해주어 "이것에 대해 내일 알려 줘" 같은 요청을 처리할 수 있습니다.
에이전트가 대화 중에 일정을 직접 생성하고, 일정은 요청한 사람의 권한과 연동 목록을 사용해 그 사람 자격으로 실행되며, 결과는 동일한 채널로 돌아옵니다.
런 내부에서 스케줄을 생성합니다:
await schedules.create(owner={"type": "user"}, cron="0 9 * * 1-5", timezone="America/Los_Angeles", prompt="Write the daily digest.")도구 뒤에 배치할 때 가장 유용하므로, 에이전트의 사용자가 대화만으로 일정을 생성, 조회, 업데이트, 삭제할 수 있습니다. 다음은 리마인더 도구입니다:
from langchain.tools import tool
from managed_deepagents import schedules
@tool
async def remind_me(prompt: str, cron: str, timezone: str = "UTC") -> str:
"""Run a prompt for the current user on a cron schedule."""
item = await schedules.create(
owner={"type": "user"},
cron=cron,
timezone=timezone,
prompt=prompt,
)
return f"Created schedule {item['id']}."에이전트는 프롬프트와 cron 표현식을 전달하며, cron이 실행될 때마다 LangSmith는 해당 프롬프트로 새로운 run을 시작합니다. 스케줄은 생성된 채널을 상속하므로 결과가 요청이 온 곳으로 다시 게시됩니다. 예를 들어 Slack에서 요청한 평일 알림은 실행될 때마다 해당 대화에 새 메시지를 게시합니다. 일회성 스케줄(at 대신에 cron") 답글을 원래 스레드에 남기는 방식인데, 이는 "1시간 후에 이 배포를 확인해 줘" 같은 후속 요청에 적합합니다.
실행별 에이전트 구성
이제 에이전트를 동적으로 구성할 수 있습니다 실행당. 에이전트를 호출 가능한 함수로 설정합니다. 이 함수는 다음을 입력으로 받습니다: 런타임 각 실행 시작 시 실행되며 다음을 반환합니다 define_deep_agent 정의, 모델 선택, 지침, 스킬, MCP 서버, 그리고 해당 실행을 위한 샌드박스입니다.
팀이나 저장소마다 거의 동일한 에이전트 사본을 유지하는 대신, 하나의 배포를 운영하게 됩니다. 이를 통해 배포가 더 유연하게 작동할 수 있으며, 단일 에이전트 배포가 요청이 발생한 채널이나 사용자와 같은 컨텍스트를 기반으로 서로 다른 팀이나 사용 사례에 맞게 사용자 지정될 수 있습니다.

여러 팀이 하나의 사내 Slack 에이전트를 함께 사용한다고 해보겠습니다. 에이전트 함수는 실행이 어느 채널에서 시작되었는지 확인하고, 재무 팀에는 청구(billing) 스킬을, 플랫폼 팀에는 인시던트 대응 MCP 서버를 로드할 수 있습니다. 이는 모델에게 언제 스킬을 사용할지 알려주는 지시문과는 다릅니다. 구성은 모델이 실행되기 전에 설정되므로, 에이전트는 자신의 구성 밖에 있는 스킬이나 MCP 도구를 전혀 볼 수 없습니다. 이를 통해 컨텍스트를 작게 유지할 수 있고, 접근 제어의 역할도 겸하며, 모델 자체(모델이 스스로 할 수 없는 일)를 직접 선택할 수도 있습니다.
일반적으로 에이전트가 사용할 수 있는 도구 집합을 우리가 정확히 알고 있는 경우에 모델이 툴킷을 선택하도록 하는 비결정론적 출력을 방지합니다.
동일한 아이디어는 각 저장소마다 서로 다른 스킬과 더 저렴하거나 더 강력한 모델을 로드하는 코딩 에이전트에도 적용됩니다:
# agent.py: one coding agent, configured per repo at the start of each run
from dataclasses import dataclass
from managed_deepagents import ManagedServerRuntime, define_deep_agent
REPOS = {
"payments-service": {
"model": "openai:gpt-5",
"instructions": "Python service. Run pytest before opening a PR.",
"skills": ["./skills/python-service"],
},
"storefront": {
"model": "openai:gpt-5-mini",
"instructions": "Next.js app. Run web tests and an a11y check before opening a PR.",
"skills": ["./skills/typescript-web"],
},
}
@dataclass
class AppContext:
repository: str = ""
def agent(runtime: ManagedServerRuntime[AppContext]):
execution = runtime.execution_runtime
context = execution.context if execution is not None else None
repo = context.repository if context is not None else None
config = REPOS.get(repo, REPOS["storefront"])
return define_deep_agent(name="open-swe", context_schema=AppContext, **config)
이 함수는 읽습니다 runtime.execution_runtime.context 그리고 채널 실행 시나 Agent Server가 스키마를 읽기 위해 에이전트를 로드할 때처럼 설정이 없는 경우 기본값으로 폴백합니다. 호출자는 실행의 context:
# Same deployment, different repo: just change the run context
await client.runs.create(
thread_id,
"open-swe",
input={"messages": [{"role": "user", "content": "Fix the flaky refund test."}]},
context={"repository": "payments-service"},
)Slack 메시지에 반응하기
Slack 리액션 에이전트가 답장하기 전에 한동안 추론하고 도구를 호출하는 동안에도 보낸 사람에게 메시지를 받았음을 즉시 보여줄 수 있습니다. 리액션은 기본적으로 활성화되어 있으며(👀), Slack 채널의 새로운 reactions 옵션을 사용하면 이를 끄거나, 다른 이모지를 선택하거나, 메시지별로 선택할 수 있습니다. 다음 예시는 메시지에서 무언가 고장난 것이 언급되면 🐛을, 그렇지 않으면 👀을 사용합니다:
from managed_deepagents import channels
async def choose_emoji(context: dict) -> str:
return "bug" if "broken" in context["text"].lower() else "eyes"
channel = channels.slack(name="Support Bot", reactions=choose_emoji)리액션은 간단할 수 있습니다. 하지만 모델을 호출하여 더 정확한 이모지를 고르는 함수로 리액션 응답을 구성하는 것도 가능합니다. Jev 같은 결정 모델을 사용하면 빠르고 저렴하게 유지할 수 있으며, Slack 채널 문서 에서 전체 예시를 안내합니다.
시작하기
Managed Deep Agents v0.9가 오늘 Public Beta로 출시되었습니다. 자세한 내용은 Managed Deep Agents 문서에서 확인하거나 다음으로 시작할 수 있습니다:
uvx --from managed-deepagents mda init my-agent
cd my-agent
uv run mda deploy참고로, v0.8에서는 사용자별 메모리, 모든 서비스에서 실행을 트리거할 수 있는 사용자 정의 HTTP 채널, Parallel 기반 내장 웹 검색 등이 추가되었습니다. v0.8 포스트 읽기.
