Community생산성 & 협업github.com

bwjoke/proactive-chat

Hermes 및 OpenClaw를 위한 관점 우선의 선제적 대화 스킬입니다.

proactive-chat란 무엇인가요?

이 스킬은 사용자가 에이전트가 수동적으로 프롬프트를 기다리는 대신 의도적으로 대화를 시작하도록 할 때 사용됩니다. 스킬 수준의 구현이며, Hermes의 cronjob, memory, session_search와 OpenClaw의 heartbeat/cron/자율 루프와 같은 기본 요소에 의존합니다. 핵심 목표는 푸시 알림이나 미니 기사를 보내는 것이 아니라 답장률, 메모리 축적 속도, 사용자 모델 개선, 주제-관점 반복 품질을 최대화하는 것입니다. '관점이 주제보다 중요하다'는 원칙에 따라, 사용자에게 가장 공감되고 답장을 유도할 수 있는 각도를 찾아 메시지를 생성하며, 고속 테스트 모드와 다양한 설정 명령어를 통해 사용자가 세부 동작을 제어할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add bwjoke/proactive-chat

Installed? Explore more 생산성 & 협업 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

선제적 채팅(Proactive Chat)

사용자가 에이전트가 수동적으로 프롬프트를 기다리는 대신 의도적으로 대화를 시작하도록 하려면 이 스킬을 사용하세요.

이 스킬이란?

이는 스킬 수준의 구현이며, 네이티브 제품 지원이 아닙니다.

즉, 다음과 같습니다:

  • 이미 유용한 능동적 학습 루프를 만들 수 있습니다.
  • 하지만 여전히 호스트 에이전트가 다음을 갖추어야 합니다:
    • 지속적인 메모리
    • 세션 간 회상
    • 스케줄러 / 크론 / 하트비트 프리미티브
    • 사용자에게 메시지 전달
  • Hermes에서는 cronjob + memory + session_search를 사용하세요.
  • OpenClaw에서는 가장 가까운 등가물(하트비트 / 크론 / 예약 작업 / 자율 루프)을 사용하세요.

런타임 도우미

이 스킬에는 도우미 스크립트가 함께 제공됩니다:

  • scripts/proactive_runtime.py

매번 JSON을 수동으로 재발명하는 대신 스케줄링 흐름을 결정적으로 만들기 위해 사용하세요.

권장되는 Hermes 흐름:

  1. proactive_runtime.py로 상태 파일을 초기화하거나 업데이트합니다.
  2. 상태 파일에서 크론 프롬프트를 렌더링합니다.
  3. Hermes cronjob을 생성/업데이트/일시 중지/실행합니다.
  4. 반환된 job_id를 상태 파일에 다시 저장합니다.

유용한 하위 명령어:

  • init-state
  • show-state
  • enable-high-speed-test-mode
  • disable-high-speed-test-mode
  • render-cron-prompt
  • render-job-config

핵심 목표

목표는 미니 기사를 푸시하는 것이 아닙니다. 목표는 다음을 최대화하는 것입니다:

  1. 답장률
  2. 메모리 축적 속도
  3. 사용자 모델 개선
  4. 시간에 따른 주제-관점 반복 품질

선순환 고리는 다음과 같습니다:

시작 → 반응 관찰 → 어떤 각도가 효과적인지 학습 → 간결한 교훈 저장 → 다음에 더 나은 시작

관점 우선

관점이 주제보다 더 중요합니다.

관련성 있는 주제도 각도가 평범하면 실패할 수 있습니다. 강력한 각도는 평범한 주제를 갑자기 답장할 가치가 있는 것으로 만들 수 있습니다.

따라서 다음 오프너를 선택할 때 다음 순서로 최적화하세요:

  1. 올바른 관점
  2. 올바른 사용자 앵커
  3. 올바른 주제

좋은 선제적 채팅은 다음과 같이 느껴집니다:

  • 사용자가 이미 관심 있는 것에 대한 새로운 렌즈
  • 사용자가 해결하고 싶어하는 긴장감
  • 대답하기는 쉽지만 무시하기는 어려운 질문

나쁜 선제적 채팅은 다음과 같이 느껴집니다:

  • 일반적인 안부 확인
  • 광범위하고 따뜻한 충전재
  • 기사 모드
  • 개인적인 연결 고리가 없는 트렌드 추종

영어 명령어

사용자가 모드를 명시적으로 제어할 수 있도록 영어 명령어 구문을 사용하세요.

기본 명령어:

  • enable proactive chat
  • disable proactive chat
  • proactive chat status
  • show proactive chat settings
  • set proactive chat interval to every 4 hours
  • set proactive chat max length to 80 characters
  • focus proactive chat more on me
  • make proactive chat use more fresh web context
  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode
  • trigger proactive chat now

자연어 변형도 허용되지만, 표시되는 명령어 어휘는 영어로 유지하세요.

기본 설정

사용자가 달리 말하지 않는 한 다음을 사용하세요:

  • 유휴 발신 간격: 2시간마다
  • 중국어 메시지 제한: 중국어 100자
  • 영어 메시지 제한: 200자
  • 자기 관련 주제 가중치: 0.7
  • 외부 세계 주제 가중치: 0.3
  • 링크 예산: 선제적 메시지당 최대 1개 링크
  • 최근 답장 쿨다운: 사용자가 지난 2시간 이내에 답장한 경우 새로운 선제적 오프너를 보내지 마십시오.
  • 주제 반복 쿨다운: 명확히 무시된 각도를 너무 빨리 반복하지 마십시오.
  • 돌연변이 편향: 호기심을 증가시키되 무작위적이지 않을 때 교차 도메인 조합을 허용합니다.

고속 테스트 모드

빠른 검증을 위해서만 이 모드를 사용하세요.

명령어:

  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode

활성화 시 동작:

  • 스케줄: 1분마다
  • 지속 시간 제한: 총 10분
  • 실행 제한: 사용자가 답장하지 않으면 총 10회의 선제적 전송
  • 테스트 버스트 후, 모드가 비활성화되거나 일반 모드에서 작업이 재생성되면 일반 간격으로 되돌아갑니다.

이 모드는 종단 간 선제적 루프가 실제로 실행되는지 테스트하기 위해 존재하며, 일반적인 사용을 위한 것이 아닙니다.

범위 규칙

1:1 컨텍스트 선호

이 모드는 다음에서 가장 잘 작동합니다:

  • DM
  • 비공개 채팅
  • 사용자별 스레드

다음에서는 주의하세요:

  • 공유 채널
  • 그룹 채팅
  • 공개 방

현재 방이 명백히 공유된 방이라면, 활성화하기 전에 간략히 경고하세요. 기본적으로 사용자가 해당 방 사용을 명시적으로 요청하지 않는 한 공유 공간에 스팸을 보내지 마십시오.

메시지 디자인 원칙

1) 박수를 위한 것이 아니라 답장을 위해 최적화하세요

훌륭한 선제적 메시지는 대답하기 쉽고 무시하기 어렵습니다.

2) 세계보다 사용자를 선호하세요

두 가지 주제 버킷이 있습니다:

  • A. 사용자 자신
  • B. 외부 세계

A 쪽으로 크게 치우치세요. B를 사용할 때도 가능할 때마다 A 쪽으로 다시 연결하세요:

  • 사용자의 취향
  • 사용자의 판단
  • 사용자의 현재 목표
  • 사용자의 사각지대
  • 사용자의 정체성 / 자기 모델 / 선호도

3) 압축이 완전성보다 낫습니다

에세이를 쏟아내지 마세요. 기본 형식:

  • 1가지 관찰
  • 1가지 긴장감 / 각도
  • 1가지 질문

4) 한 화면이 최대

사용자가 한 번에 대답할 수 있을 만큼 짧게 유지하세요.

5) 열린 루프가 매끄러운 결론보다 낫습니다

주제를 너무 깔끔하게 닫지 마세요. 사용자가 반응할 여지를 남겨두세요.

6) 관점이 일반적인 따뜻함보다 낫습니다

나쁨:

  • “어떻게 지내?”
  • “오늘 무슨 생각 하고 있어?”

더 나음:

  • 사용자의 실제 관심사, 역사, 스타일 또는 현재 긴장감과 연결된 정밀한 각도

좋은 원자재로 간주되는 것

다음 입력을 적극적으로 사용하세요:

  • 현재 세션 컨텍스트
  • 지속적인 메모리 / 사용자 프로필
  • 세션 간 회상
  • 이전에 성공하거나 실패한 선제적 주제
  • 사용자가 제공한 소셜 계정
  • 아카이브 내보내기
  • 개인 링크 / 웹사이트 / 약력
  • 취향, 정체성 또는 마찰점을 드러낸 과거 답장
  • 훅 품질을 실질적으로 향상시킬 때만 사용하는 새로운 외부 신호

사용자가 다음 중 하나라도 제공한 적이 있다면:

  • X/Twitter 핸들
  • 아카이브
  • 블로그
  • 웹사이트
  • GitHub
  • 기타 공개 코퍼스

이는 어떤 각도가 효과적일지 학습하기 위한 고가치 소스입니다.

상태 모델

가능한 경우 사용자/출처별 로컬 JSON 상태를 유지하세요.

다음과 같은 경로를 선호하세요:

  • $HERMES_HOME/proactive-chat/<플랫폼>-<채팅-또는-스레드>-<사용자>.json
  • 또는 가장 가까운 호스트별 등가물

최소 필드:

{
  "enabled": true,
  "job_id": "...",
  "deliver_target": "origin",
  "platform_context": "discord thread ...",
  "user_label": "Paul",
  "interval": "every 2h",
  "normal_interval": "every 2h",
  "max_chars_zh": 100,
  "max_chars_en": 200,
  "last_agent_outreach_at": "",
  "last_agent_topic": "",
  "last_user_reply_at": "",
  "current_active_cluster": "",
  "successful_angles": [],
  "weak_angles": [],
  "learned_preferences": [],
  "profile_gaps": [],
  "test_mode_enabled": false,
  "test_mode_interval": "every 1m",
  "test_mode_repeat": 10,
  "test_mode_duration_minutes": 10
}

이것을 거대한 로그 파일로 만들지 마세요. 간결하고 의사 결정에 유용하게 유지하세요.

활성화 워크플로우

사용자가 enable proactive chat이라고 말하면:

  1. 범위를 확인합니다.
    • 기본적으로 현재 DM, 스레드 또는 출처로 설정합니다.
    • Hermes에서는 사용자가 다른 대상을 요청하지 않는 한 deliver=origin을 선호합니다.
  2. 다음에서 빠른 사용자 모델을 구축합니다:
    • 현재 세션 컨텍스트
    • 지속적인 메모리 / 사용자 프로필
    • session_search
    • 알려진 아카이브 / 공개 링크
    • 답장률을 개선할 가능성이 있는 경우에만 새로운 검색/뉴스/소셜 컨텍스트
  3. 주제 사전 확률을 식별합니다.
    • 자기 발견
    • 정체성 / 취향 / 매력 / 혐오
    • 목표 / 병목 현상
    • 이전 대화에서 완료되지 않은 스레드
    • 사각지대 / 트레이드오프 / 결정 휴리스틱
    • 사용자의 렌즈에 다시 매핑된 세계 주제
    • 여러 도메인을 혼합한 하이브리드 돌연변이 각도
  4. 상태 파일을 생성하거나 업데이트합니다.
    • Hermes에서는 JSON을 수동 편집하는 대신 런타임 도우미 스크립트를 선호합니다.
    • 권장 경로 모양: $HERMES_HOME/proactive-chat/<플랫폼>-<채팅>-<스레드>-<사용자>.json
    • 파일이 없으면 scripts/proactive_runtime.py init-state를 사용하세요.
  5. 예약된 작업을 생성하거나 업데이트합니다.
    • Hermes에서는 실제 cronjob(action='create' | 'update', ...) 호출을 의미합니다.
    • 일반 모드 스케줄은 상태의 interval을 사용해야 합니다.
    • 고속 테스트 모드가 활성화된 경우 스케줄은 every 1m이어야 하며 repeat=10이어야 전체 버스트가 10분 동안만 지속됩니다.
    • scripts/proactive_runtime.py render-cron-prompt를 사용하여 자체 포함된 스케줄러 프롬프트를 생성하세요.
    • scripts/proactive_runtime.py render-job-config를 사용하여 상태에 포함된 스케줄/반복 설정을 읽어오세요.
  6. 반환된 job_id를 상태 파일에 다시 저장합니다.
  7. 간격, 길이 제한, 대상 및 테스트 모드 활성화 여부를 간략히 확인합니다.

비활성화 워크플로우

사용자가 disable proactive chat이라고 말하면:

  • 일치하는 선제적 채팅 작업을 찾습니다.
  • 삭제하는 대신 기본적으로 일시 중지합니다.
  • 상태 파일을 enabled=false로 업데이트합니다.
  • 일치하는 작업이 없으면 이미 꺼져 있다고 말합니다.
  • 사용자가 명시적으로 삭제/재설정을 요청하면 작업을 제거하고 선택적으로 상태 파일을 지웁니다.

고속 테스트 모드 워크플로우

사용자가 enable proactive chat high-speed test mode라고 말하면:

  • 현재 상태 파일을 로드합니다.
  • test_mode_enabled=true로 설정합니다.
  • 간격을 every 1m으로 설정합니다.
  • 스케줄러 반복 제한을 10으로 설정합니다.
  • Hermes 크론 작업을 업데이트하여 총 10분 동안만 실행되도록 합니다.
  • 테스트 모드가 일시적이며 사용자가 답장하지 않으면 최대 10회의 선제적 전송으로 제한된다고 확인합니다.

사용자가 disable proactive chat high-speed test mode라고 말하면:

  • test_mode_enabled=false로 설정합니다.
  • normal_interval에서 일반 간격을 복원합니다.
  • Hermes 크론 작업을 일반 모드로 다시 업데이트합니다.
  • 복원된 간격을 확인합니다.

상태 및 설정 워크플로우

사용자가 상태를 묻거나 설정을 변경하면:

  • 현재 해결된 설정을 간략히 표시합니다.
  • 상태 파일을 업데이트합니다.
  • 필요한 경우 예약된 작업을 업데이트합니다.
  • 기존 작업을 업데이트하거나 재개할 수 있는 경우 중복 작업을 생성하지 마십시오.

자연어 변경 사항을 직접 해석합니다. 예:

  • set proactive chat interval to every 4 hours
  • set proactive chat max length to 80 characters
  • focus proactive chat more on me
  • make proactive chat use more fresh web context
  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode

수동 트리거 워크플로우

사용자가 trigger proactive chat now라고 말하면:

  • 유휴 타이머를 기다리지 마십시오.
  • 예약된 Hermes 작업이 이미 존재하는 경우, cronjob(action='run', job_id=...)을 선호하여 동일한 자율 경로를 즉시 트리거합니다.
  • 그렇지 않으면 동일한 관점 우선 규칙을 사용하여 즉시 하나의 선제적 오프너를 생성합니다.
  • 여전히 길이 제한과 최근 컨텍스트를 존중합니다.
  • 활성 스레드가 계속할 가치가 명백하지 않은 한 새로운 각도를 선호합니다.
  • 예약된 시스템이 자연스럽게 트리거된 것처럼 상태 파일을 업데이트합니다.

이 명령은 다음 선제적 메시지를 수동으로 당겨오기 위한 것입니다. "마치 내가 이미 간격 동안 침묵했다고 가정하고 — 이제 오프너를 보내라"처럼 느껴져야 합니다.

모드가 활성화된 동안: 실시간 답장 동작

사용자가 선제적 채팅이 활성화된 세션에서 답장하면:

1) 즉시 상태 업데이트

적어도 다음을 기록하세요:

  • last_user_reply_at
  • 활성 주제 클러스터
  • 이것이 강한 신호, 약한 신호 또는 모호한 신호처럼 보이는지 여부

2) 관심 강도 추론

대략적인 휴리스틱을 사용하세요. 예:

  • 빠른 답장 = 더 강한 관심 신호
  • 긴 답장 = 더 강한 관심 신호
  • 더 많은 구체성 = 더 강한 관심 신호
  • 더 많은 후속 질문 = 더 강한 관심 신호

하지만 단일 메시지에 과적합하지 마십시오.

3) 주제 이동 전에 현재 주제를 계속하세요

사용자가 답장했다면, 이는 더 깊이 들어갈 수 있는 허가입니다. 너무 일찍 관련 없는 새로운 각도로 뛰어들지 마십시오.

4) 내구성 있는 학습 저장

장기 메모리는 안정적인 패턴에만 사용하세요. 예:

  • 자기 모델 질문에 잘 반응함
  • AI x 암호화폐 x 제품에 대한 메커니즘 수준의 접근 방식을 좋아함
  • 일반적인 동기 부여 잡담을 싫어함
  • 세계 사건이 정체성, 인센티브 또는 취향에 다시 매핑될 때 더 많이 참여함

원시 채팅 로그나 일시적인 관찰을 장기 메모리로 저장하지 마십시오.

자율 러너 모드

이 섹션은 예약/하트비트/크론 실행에 적용됩니다.

각 실행 시:

  1. 상태를 로드합니다.
    • 모드가 비활성화되면 아무것도 하지 마십시오.
    • test_mode_enabled=true이면 고속 제한을 존중하십시오: 1분마다, 총 10분, 사용자가 답장하지 않으면 최대 10회 전송.
  2. 최근 답장 쿨다운을 존중합니다.
    • 새로운 오프너가 스팸처럼 느껴지면 침묵을 유지하십시오.
    • Hermes 크론 실행에서는 전달이 억제되도록 [SILENT]로 시작하는 응답을 반환하십시오.
  3. 주제 후보 풀을 재구축합니다.
    • 사용자 자기 주제 우선
    • 사용자에게 다시 매핑된 세계 주제 두 번째
    • 하이브리드/돌연변이 각도 세 번째
  4. 후보를 점수화합니다. 다음 조건을 가진 후보를 선호하십시오:
    • 알려진 관심사와의 높은 관련성
    • 실제 호기심 격차
    • 최근 발신과의 참신함
    • 낮은 답장 마찰
    • 높은 사용자 학습 가치
    • 강력한 관점 적합성
  5. 도움이 될 때 새로움을 사용합니다.
    • 검색/뉴스/소셜 컨텍스트는 훅을 개선할 수 있습니다.
    • 하지만 새로움은 승수일 뿐 핵심이 아닙니다.
  6. 정확히 하나의 짧은 메시지를 작성합니다.
    • 문자 제한을 엄격히 준수하십시오.
    • 기본값은 하나의 짧은 단락입니다.
    • 최대 하나의 링크
    • 형식이 비정상적으로 강력하지 않은 한 목록 형식은 사용하지 마십시오.
    • 일반적인 안부 확인은 사용하지 마십시오.
    • 관찰 + 각도 + 질문을 선호하십시오.
  7. 전송 후 상태를 업데이트합니다.
  8. 품질이 충분하지 않으면 침묵을 유지하십시오.

주제 전략

우선 순위

  1. 사용자 자신
  2. 사용자를 통해 본 세계
  3. 순수 외부 세계 토론

좋은 자기 관련 각도 유형

  • 정체성 구축
  • 선호도 발견
  • 해결되지 않은 내부 모순
  • 관계 취향 / 혐오 / 매력
  • 현재 프로젝트 병목 현상
  • 결정 휴리스틱
  • 다시 방문할 가치가 있는 과거 진술
  • 에이전트가 여전히 배워야 하는 숨겨진 프로필 격차

좋은 세계 관련 각도 유형

개인화할 수 있는 경우에만 많이 사용하세요. 예:

  • "이 트렌드는 당신의 취향/판단에 대해 뭔가 말해줍니다..."
  • "당신이 전에 언급한 것과 같은 원칙이 여기에 적용됩니다..."
  • "이 뉴스는 당신의 현재 목표와 관련이 있습니다..."
  • "당신의 사각지대일 수도 있지만..."

체크리스트: 품질 게이트

메시지를 보내기 전에 다음 질문에 '예'라고 답할 수 있는지 확인하세요:

  1. 이 메시지는 특정 사용자와 구체적으로 관련이 있습니까, 아니면 누구에게나 보낼 수 있는 것입니까?
  2. 답장하는 것이 농담보다 더 자연스럽습니까?
  3. 사용자가 이미 이것에 대해 생각하고 있을 가능성이 있습니까 (아직 말하지 않았더라도)?
  4. 이 각도는 사용자가 스스로에게 하지 않았을 질문을 제기합니까?
  5. 이것이 전형적인 '안부 확인'으로 변질될 위험이 있습니까?

5번 질문에 '예'라고 답하면 다시 작성하거나 건너뛰십시오.

참고 사항

  • 이 스킬은 사용자로부터 미리 동의를 받은 경우에만 활성화하십시오.
  • 공유 채널/그룹에 기본적으로 활성화하지 마십시오.
  • 활성화 시 작업이 이미 존재하는지 항상 확인하여 중복 cronjob을 방지하십시오.
  • 상태 파일을 JSON으로 수동 편집하는 대신 scripts/proactive_runtime.py 스크립트를 사용하십시오.
  • 생성된 메시지에 대해 사용자 정의 시스템 프롬프트가 항상 존중되도록 하십시오.

면책 조항

이 스킬은 능동적 상호 작용을 가능하게 하지만 플랫폼 제한 사항이 적용됩니다. 기본 에이전트 플랫폼(Hermes, OpenClaw 등)이 지속적인 메모리, 세션 간 회상, 예약된 작업 실행 및 사용자에게 메시지 전달을 지원하는지 확인하십시오. 이 구현은 스킬 수준의 참조 역할을 하며 모든 에이전트/플랫폼에서 올바르게 작동하려면 추가 구성이 필요할 수 있습니다.

관련 스킬