만든 도구공개

기능

채팅창 하나로 무엇까지 시킬 수 있나. 그리고 그중 둘이 체감을 바꿨습니다.

11종

채팅창 하나로 어디까지 시킬 수 있나. 기능이 11가지인데, 그중 둘이 실제 체감을 바꿨습니다.

할 수 있는 일들

무엇 하는 일
대화 그냥 말 걸면 답함
긴 작업 몇 시간짜리 작업을 걸어 두고 진행 상황이 대화에 흘러옴
예약 매일·매주·한 번. 컴퓨터를 껐다 켜도 안 잊어버림
목표 챙김 묵은 목표를 먼저 찔러 줌
AI 교체 어떤 AI를 쓸지 바꿈
체크리스트 누가 체크하면 모두에게 보임
조직 설정 누가 무엇까지 쓸 수 있는지
자동 듣기 정해진 곳에서는 이름 안 불러도 답함
기능 추가 파일 하나 = 명령 하나
자기 감시 죽으면 5분 안에 스스로 되살아남
사용량 90일치 통계

체감을 바꾼 것 하나 — 「어제 하던 얘기를 오늘 이어서」

처음에 이상한 점이 있었습니다. 답글로 이어가는 대화는 잘 이어지는데, 1:1 대화는 매번 처음부터 시작됐습니다.

원인을 찾아보니, 대화를 구분하는 열쇠를 «메시지 한 통의 고유번호»로 잡고 있었습니다.

답글은 원래 글의 번호를 공유하니까 이어집니다. 그런데 1:1 대화의 새 메시지는 매번 새 번호입니다. 그래서 매번 새 대화가 됐습니다.

「어제 하던 얘기를 오늘 이어서 못 한다」는 건 생각보다 큰 불편입니다. 매번 배경 설명을 다시 해야 하니까요.

열쇠를 바꿔서 1:1 대화는 계속 이어지게 했습니다.

체감을 바꾼 것 둘 — 「체크리스트를 왜 직접 만들었나」

슬랙에 체크박스 기능이 이미 있습니다. 그런데 따로 만들었습니다.

이유가 하나입니다.

슬랙 기본 체크박스는 «각자 자기 것»이라, 내가 체크한 걸 남이 못 봅니다.

혼자 쓸 거면 상관없는데, 여럿이 같은 목록을 보며 일할 때는 이게 치명적입니다. 누가 어디까지 했는지 모르니 목록의 의미가 없습니다.

그래서 누가 체크하면 보는 사람 전원에게 반영되는 것으로 직접 만들었습니다.

→ 기본 기능이 있다고 다 쓸 수 있는 게 아닙니다. 「있나」가 아니라 「내 상황에서 성립하나」를 봐야 합니다.

「찔러 주는 기능」은 한 단어를 두 방향으로 씁니다

목표를 챙겨 주는 기능이 있는데, 같은 이름으로 두 가지 다른 동작을 합니다.

방향 무엇 부작용
당김 제가 물어보면 추천을 만들어 줌 없음
밀기 먼저 1:1로 찔러 줌 있음 — 그래서 쉬는 시간을 둠

밀기 쪽에는 쉬는 시간을 뒀습니다. 이유는 하나입니다. 먼저 말을 거는 기능은 조금만 잘못 만들어도 잔소리가 되고, 잔소리가 되는 순간 사람은 그 기능을 꺼 버립니다.

그래서 한 번 찌르면, 한동안 조용합니다.

그리고 무엇을 안 남기는가

사용 기록이 90일치 남는데, 대화 내용은 안 적습니다.

남는 것: 언제, 누가, 얼마나 걸렸는지.

이게 중요한 이유는 — 기록은 나중에 지우기 어렵다는 것입니다. 「일단 다 남기고 나중에 정리하자」는 대개 정리가 안 됩니다. 처음부터 안 남기는 게 유일하게 확실한 방법입니다.

여기부터는 자세한 기록입니다

무엇 명령 하는 일
대화 — DM은 이어지고, 스레드는 스레드끼리 따로. 채널 최상위는 세션을 안 만든다
긴 작업 !jobs !cancel !stop 동시 2개, 같은 스레드는 순서대로. 몇 시간짜리 파이프라인의 진행이 스레드에 흐른다
예약 !schedule 매일·매주·1회. 재부팅하면 반복은 다음 차례로 밀고 1회짜리는 즉시
목표·넛지 !goal !nudge 묵은 목표(72시간), 같은 이유 3연속 실패, 고른 두뇌 응답 불가 — 셋을 감시해 DM으로 찌른다
두뇌 교체 !provider 이 PC에 이미 로그인된 CLI를 스폰한다
체크리스트 !check 눌러서 체크하면 보는 사람 전원에게 동기화된다
조직 !org 파일 한 장 = 조직 하나. 멤버·채널·읽을 폴더·쓸 명령·시간당 상한
자동 청취 !listen !exit 정한 구역 안에선 멘션 없이 답한다
플러그인 — plugins/ 에 파일 하나 = 명령 하나
감시 doctor 죽으면 5분 안에 되살린다. 심장박동이 멎은 것도 죽음으로 친다
사용량 !usage 90일치. 메타데이터만 남기고 대화 본문은 안 적는다

세션을 어디에 묶느냐

처음엔 세션 키가 메시지 자기 식별자였다. 그래서 스레드는 멀쩡한데 DM 최상위가 매번 새 대화로 시작했다. 어제 하던 얘기를 오늘 이어서 못 한다는 뜻이다.

지금은 셋으로 갈렸다.

  • DM — 이어진다. 유휴 시간이 지나면 만료된다
  • 스레드 — 스레드마다 따로. 다른 스레드와 안 섞인다
  • 채널 최상위 — 세션 없음

마지막 하나는 기능이 아니라 방어다. 채널에서는 여러 사람이 쓰는데, 거기에 세션을 붙이면 다른 사람의 대화가 내 맥락에 섞인다. 편의를 하나 포기하고 그 경로를 아예 막았다.

여기에 딸린 함정도 있었다. 잡 큐의 직렬화 키를 세션 키로 바꾸지 않으면, 연속으로 온 DM 두 건이 같은 세션을 동시에 재개한다. 세션을 이어 붙이는 순간 큐도 같이 손봐야 한다.

체크리스트를 왜 직접 만들었나

슬랙에 체크박스가 기본으로 있는데도 따로 만들었다. 이유가 하나다 — 네이티브 체크박스는 사용자별 입력이라 동기화가 안 된다. 내가 체크한 걸 다른 사람이 볼 수 없다.

그래서 버튼 라벨을 통째로 다시 그리는 방식으로 만들었다. 누가 누르면 메시지 자체가 갱신돼서 보고 있는 전원에게 같은 상태가 보인다.

말로도 토글된다. 버튼을 못 누르는 상황이 있어서다.

목표를 감시하는 것과 알리는 것

넛지는 한 명사를 두 방향으로 쓴다. 당김은 부작용 없이 추천 프롬프트를 만들고, 밀기는 쿨다운을 두고 DM으로 찌른다.

감시 대상 셋을 고를 때 기준이 있었다 — 아무것도 이해할 필요가 없을 것.

  • 목표가 72시간째 안 움직였다
  • 같은 이유로 3연속 실패했다
  • 고른 두뇌가 응답을 못 한다

셋 다 세는 것으로 판정된다. 대화 내용을 읽고 “이거 헛돌고 있는데?“를 판단하는 방식은 기각했다.

사용량은 메타데이터만 남긴다

90일치 기록이 남는데 대화 본문은 안 적는다. 언제, 누가, 얼마나 걸렸는지만.

프라이버시에는 유리하고 감사에는 불리하다. “그때 무슨 지시를 내렸냐”에 답할 수 없다. 이건 트레이드오프고, 개인 도구라 앞쪽을 골랐다. 팀에 배포한다면 뒤집어야 할 결정이다.