선제적 채팅(Proactive Chat)
사용자가 에이전트가 수동적으로 프롬프트를 기다리는 대신 의도적으로 대화를 시작하도록 하려면 이 스킬을 사용하세요.
이 스킬이란?
이는 스킬 수준의 구현이며, 네이티브 제품 지원이 아닙니다.
즉, 다음과 같습니다:
- 이미 유용한 능동적 학습 루프를 만들 수 있습니다.
- 하지만 여전히 호스트 에이전트가 다음을 갖추어야 합니다:
- 지속적인 메모리
- 세션 간 회상
- 스케줄러 / 크론 / 하트비트 프리미티브
- 사용자에게 메시지 전달
- Hermes에서는
cronjob+memory+session_search를 사용하세요. - OpenClaw에서는 가장 가까운 등가물(하트비트 / 크론 / 예약 작업 / 자율 루프)을 사용하세요.
런타임 도우미
이 스킬에는 도우미 스크립트가 함께 제공됩니다:
scripts/proactive_runtime.py
매번 JSON을 수동으로 재발명하는 대신 스케줄링 흐름을 결정적으로 만들기 위해 사용하세요.
권장되는 Hermes 흐름:
proactive_runtime.py로 상태 파일을 초기화하거나 업데이트합니다.- 상태 파일에서 크론 프롬프트를 렌더링합니다.
- Hermes
cronjob을 생성/업데이트/일시 중지/실행합니다. - 반환된
job_id를 상태 파일에 다시 저장합니다.
유용한 하위 명령어:
init-stateshow-stateenable-high-speed-test-modedisable-high-speed-test-moderender-cron-promptrender-job-config
핵심 목표
목표는 미니 기사를 푸시하는 것이 아닙니다. 목표는 다음을 최대화하는 것입니다:
- 답장률
- 메모리 축적 속도
- 사용자 모델 개선
- 시간에 따른 주제-관점 반복 품질
선순환 고리는 다음과 같습니다:
시작 → 반응 관찰 → 어떤 각도가 효과적인지 학습 → 간결한 교훈 저장 → 다음에 더 나은 시작
관점 우선
관점이 주제보다 더 중요합니다.
관련성 있는 주제도 각도가 평범하면 실패할 수 있습니다. 강력한 각도는 평범한 주제를 갑자기 답장할 가치가 있는 것으로 만들 수 있습니다.
따라서 다음 오프너를 선택할 때 다음 순서로 최적화하세요:
- 올바른 관점
- 올바른 사용자 앵커
- 올바른 주제
좋은 선제적 채팅은 다음과 같이 느껴집니다:
- 사용자가 이미 관심 있는 것에 대한 새로운 렌즈
- 사용자가 해결하고 싶어하는 긴장감
- 대답하기는 쉽지만 무시하기는 어려운 질문
나쁜 선제적 채팅은 다음과 같이 느껴집니다:
- 일반적인 안부 확인
- 광범위하고 따뜻한 충전재
- 기사 모드
- 개인적인 연결 고리가 없는 트렌드 추종
영어 명령어
사용자가 모드를 명시적으로 제어할 수 있도록 영어 명령어 구문을 사용하세요.
기본 명령어:
enable proactive chatdisable proactive chatproactive chat statusshow proactive chat settingsset proactive chat interval to every 4 hoursset proactive chat max length to 80 charactersfocus proactive chat more on memake proactive chat use more fresh web contextenable proactive chat high-speed test modedisable proactive chat high-speed test modetrigger proactive chat now
자연어 변형도 허용되지만, 표시되는 명령어 어휘는 영어로 유지하세요.
기본 설정
사용자가 달리 말하지 않는 한 다음을 사용하세요:
- 유휴 발신 간격: 2시간마다
- 중국어 메시지 제한: 중국어 100자
- 영어 메시지 제한: 200자
- 자기 관련 주제 가중치: 0.7
- 외부 세계 주제 가중치: 0.3
- 링크 예산: 선제적 메시지당 최대 1개 링크
- 최근 답장 쿨다운: 사용자가 지난 2시간 이내에 답장한 경우 새로운 선제적 오프너를 보내지 마십시오.
- 주제 반복 쿨다운: 명확히 무시된 각도를 너무 빨리 반복하지 마십시오.
- 돌연변이 편향: 호기심을 증가시키되 무작위적이지 않을 때 교차 도메인 조합을 허용합니다.
고속 테스트 모드
빠른 검증을 위해서만 이 모드를 사용하세요.
명령어:
enable proactive chat high-speed test modedisable 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이라고 말하면:
- 범위를 확인합니다.
- 기본적으로 현재 DM, 스레드 또는 출처로 설정합니다.
- Hermes에서는 사용자가 다른 대상을 요청하지 않는 한
deliver=origin을 선호합니다.
- 다음에서 빠른 사용자 모델을 구축합니다:
- 현재 세션 컨텍스트
- 지속적인 메모리 / 사용자 프로필
session_search- 알려진 아카이브 / 공개 링크
- 답장률을 개선할 가능성이 있는 경우에만 새로운 검색/뉴스/소셜 컨텍스트
- 주제 사전 확률을 식별합니다.
- 자기 발견
- 정체성 / 취향 / 매력 / 혐오
- 목표 / 병목 현상
- 이전 대화에서 완료되지 않은 스레드
- 사각지대 / 트레이드오프 / 결정 휴리스틱
- 사용자의 렌즈에 다시 매핑된 세계 주제
- 여러 도메인을 혼합한 하이브리드 돌연변이 각도
- 상태 파일을 생성하거나 업데이트합니다.
- Hermes에서는 JSON을 수동 편집하는 대신 런타임 도우미 스크립트를 선호합니다.
- 권장 경로 모양:
$HERMES_HOME/proactive-chat/<플랫폼>-<채팅>-<스레드>-<사용자>.json - 파일이 없으면
scripts/proactive_runtime.py init-state를 사용하세요.
- 예약된 작업을 생성하거나 업데이트합니다.
- 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를 사용하여 상태에 포함된 스케줄/반복 설정을 읽어오세요.
- Hermes에서는 실제
- 반환된
job_id를 상태 파일에 다시 저장합니다. - 간격, 길이 제한, 대상 및 테스트 모드 활성화 여부를 간략히 확인합니다.
비활성화 워크플로우
사용자가 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 hoursset proactive chat max length to 80 charactersfocus proactive chat more on memake proactive chat use more fresh web contextenable proactive chat high-speed test modedisable 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 제품에 대한 메커니즘 수준의 접근 방식을 좋아함
- 일반적인 동기 부여 잡담을 싫어함
- 세계 사건이 정체성, 인센티브 또는 취향에 다시 매핑될 때 더 많이 참여함
원시 채팅 로그나 일시적인 관찰을 장기 메모리로 저장하지 마십시오.
자율 러너 모드
이 섹션은 예약/하트비트/크론 실행에 적용됩니다.
각 실행 시:
- 상태를 로드합니다.
- 모드가 비활성화되면 아무것도 하지 마십시오.
test_mode_enabled=true이면 고속 제한을 존중하십시오: 1분마다, 총 10분, 사용자가 답장하지 않으면 최대 10회 전송.
- 최근 답장 쿨다운을 존중합니다.
- 새로운 오프너가 스팸처럼 느껴지면 침묵을 유지하십시오.
- Hermes 크론 실행에서는 전달이 억제되도록
[SILENT]로 시작하는 응답을 반환하십시오.
- 주제 후보 풀을 재구축합니다.
- 사용자 자기 주제 우선
- 사용자에게 다시 매핑된 세계 주제 두 번째
- 하이브리드/돌연변이 각도 세 번째
- 후보를 점수화합니다.
다음 조건을 가진 후보를 선호하십시오:
- 알려진 관심사와의 높은 관련성
- 실제 호기심 격차
- 최근 발신과의 참신함
- 낮은 답장 마찰
- 높은 사용자 학습 가치
- 강력한 관점 적합성
- 도움이 될 때 새로움을 사용합니다.
- 검색/뉴스/소셜 컨텍스트는 훅을 개선할 수 있습니다.
- 하지만 새로움은 승수일 뿐 핵심이 아닙니다.
- 정확히 하나의 짧은 메시지를 작성합니다.
- 문자 제한을 엄격히 준수하십시오.
- 기본값은 하나의 짧은 단락입니다.
- 최대 하나의 링크
- 형식이 비정상적으로 강력하지 않은 한 목록 형식은 사용하지 마십시오.
- 일반적인 안부 확인은 사용하지 마십시오.
- 관찰 + 각도 + 질문을 선호하십시오.
- 전송 후 상태를 업데이트합니다.
- 품질이 충분하지 않으면 침묵을 유지하십시오.
주제 전략
우선 순위
- 사용자 자신
- 사용자를 통해 본 세계
- 순수 외부 세계 토론
좋은 자기 관련 각도 유형
- 정체성 구축
- 선호도 발견
- 해결되지 않은 내부 모순
- 관계 취향 / 혐오 / 매력
- 현재 프로젝트 병목 현상
- 결정 휴리스틱
- 다시 방문할 가치가 있는 과거 진술
- 에이전트가 여전히 배워야 하는 숨겨진 프로필 격차
좋은 세계 관련 각도 유형
개인화할 수 있는 경우에만 많이 사용하세요. 예:
- "이 트렌드는 당신의 취향/판단에 대해 뭔가 말해줍니다..."
- "당신이 전에 언급한 것과 같은 원칙이 여기에 적용됩니다..."
- "이 뉴스는 당신의 현재 목표와 관련이 있습니다..."
- "당신의 사각지대일 수도 있지만..."
체크리스트: 품질 게이트
메시지를 보내기 전에 다음 질문에 '예'라고 답할 수 있는지 확인하세요:
- 이 메시지는 특정 사용자와 구체적으로 관련이 있습니까, 아니면 누구에게나 보낼 수 있는 것입니까?
- 답장하는 것이 농담보다 더 자연스럽습니까?
- 사용자가 이미 이것에 대해 생각하고 있을 가능성이 있습니까 (아직 말하지 않았더라도)?
- 이 각도는 사용자가 스스로에게 하지 않았을 질문을 제기합니까?
- 이것이 전형적인 '안부 확인'으로 변질될 위험이 있습니까?
5번 질문에 '예'라고 답하면 다시 작성하거나 건너뛰십시오.
참고 사항
- 이 스킬은 사용자로부터 미리 동의를 받은 경우에만 활성화하십시오.
- 공유 채널/그룹에 기본적으로 활성화하지 마십시오.
- 활성화 시 작업이 이미 존재하는지 항상 확인하여 중복 cronjob을 방지하십시오.
- 상태 파일을 JSON으로 수동 편집하는 대신
scripts/proactive_runtime.py스크립트를 사용하십시오. - 생성된 메시지에 대해 사용자 정의 시스템 프롬프트가 항상 존중되도록 하십시오.
면책 조항
이 스킬은 능동적 상호 작용을 가능하게 하지만 플랫폼 제한 사항이 적용됩니다. 기본 에이전트 플랫폼(Hermes, OpenClaw 등)이 지속적인 메모리, 세션 간 회상, 예약된 작업 실행 및 사용자에게 메시지 전달을 지원하는지 확인하십시오. 이 구현은 스킬 수준의 참조 역할을 하며 모든 에이전트/플랫폼에서 올바르게 작동하려면 추가 구성이 필요할 수 있습니다.