Skip to content

feat(slack): 응답 밀도를 전송 전에 제어한다#35

Merged
lbox-limit merged 1 commit into
mainfrom
agent/slack-response-density-guard
Jul 15, 2026
Merged

feat(slack): 응답 밀도를 전송 전에 제어한다#35
lbox-limit merged 1 commit into
mainfrom
agent/slack-response-density-guard

Conversation

@lbox-limit

Copy link
Copy Markdown
Collaborator

변경 내용

  • 최신 사용자 요청을 기준으로 Slack 응답 모드를 brief 또는 deep으로 선택합니다.
  • 최종 메시지를 전송하기 전에 가시 글자 수, 목록 항목, 섹션, 표 행을 코드로 검증합니다.
  • 예산을 넘은 답변은 전송하지 않고, 사실과 결론을 보존하는 압축을 한 번만 재요청합니다.
  • Markdown과 emoji 표현은 유지하면서 장황한 Slack 포맷팅 프롬프트를 정보 선택 원칙과 대표 예시 중심으로 축소했습니다.

배경

프롬프트 예시와 제약을 계속 추가하는 방식은 예시 형태에 과적합되고, 실제 길이 제한을 안정적으로 보장하지 못했습니다. 앱 수준의 응답 모드와 deterministic validator를 도입해 소프트 지시와 하드 검증의 책임을 분리했습니다.

사용자·개발자 영향

  • 기본 Slack 답변은 짧게 유지되고, 사용자가 조사·비교·분석·상세 설명을 명시할 때만 상세 모드가 선택됩니다.
  • 과밀한 첫 답변은 Slack에 게시되지 않아 압축 전후 메시지가 중복되지 않습니다.
  • 두 번째 생성도 예산을 넘으면 무한 재시도하거나 문장을 임의 절단하지 않고 그대로 전달합니다.
  • 순수 밀도 정책 구현은 리팩터링으로 158줄에서 90줄, 테스트는 95줄에서 79줄로 줄였고 export는 10개에서 4개로 축소했습니다.

검증

  • bun test src/response-density.test.ts src/poll-loop.test.ts — 49 tests passed
  • bun run typecheck — passed
  • pnpm exec vitest run setup/provider-contract.test.ts — 22 tests passed
  • pnpm run build — passed
  • pnpm run lint — 기존 src/의 unrelated 오류 13건으로 실패했습니다. 이번 변경 파일은 root lint 대상이 아니며 새 lint 오류는 확인되지 않았습니다.

@lbox-limit
lbox-limit marked this pull request as ready for review July 15, 2026 02:03
@lbox-limit
lbox-limit merged commit 1a19a16 into main Jul 15, 2026
2 checks passed
@lbox-limit
lbox-limit deleted the agent/slack-response-density-guard branch July 15, 2026 02:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants