## 소개
Obsidian을 “daily-first” 방식으로 운영하기 위한 개인 작업 시스템을 세팅했다.
목표는 단순했다. 매일 아침과 저녁에 너무 많은 입력을 요구하지 않으면서도, 하루 동안 실제로 무엇을 했는지 자동으로 정리되게 만드는 것.
기존에는 daily note, task, pomodoro, review가 조금씩 따로 놀 수 있었다. 그래서 이번 세팅의 핵심은 다음 세 가지였다.
- daily note를 하루의 중심 화면으로 유지하기
- TaskNotes는 task의 원장으로 남기기
- rule-based 자동화와 agent-based 리뷰를 분리해서 보기
즉, 사람이 해야 할 일은 “오늘 무엇에 집 중할지, 마지막으로 어떻게 느꼈는지” 정도로 줄이고, 나머지 집계와 점검은 자동화하도록 만들었다. 자동화에서 모든 과제를 agent에게 맞기지 않고 가능한 rule based 안에서 수행 가능한 부분을 남기고자했다.
---
## 진행 방법
사용한 도구는 Obsidian, TaskNotes, Templater, QuickAdd, Meta Bind, Windows Task Scheduler, 그리고 Codex였다.
Obsidian 안에서는 daily note template을 정리했고, TaskNotes는 task와 time entry를 관리하는 중심으로 두었다. Templater와 JavaScript 스크립트는 daily note의 자동 섹션을 갱신하는 데 사용했다. Windows Task Scheduler는 Obsidian이 밤 11시 30분에 닫혀 있어도 daily close review가 실행되도록 설정했다.
처음 사용한 프롬프트는 다음과 같았다.
```text
Read 99_rules/codex-handoff-2026-06-09.md first, then inspect the daily-first Obsidian setup in this vault.
Priorities:
1. verify the nightly close-review flow in live Obsidian behavior,
2. check whether the current daily note template and TaskNotes integration are consistent,
3. propose and, if safe, implement the next minimal step toward reliable nightly automation, especially if Obsidian is closed at 23:30.
Keep the daily-first philosophy: minimize human input burden, preserve TaskNotes as task ledger, and use AI for review/cleanup rather than making the system harder to maintain.
```
이후 작업하면서 구조를 다음처럼 나눴다.
```text
[YOU] 사람이 직접 쓰는 영역
[RULE] 규칙 기반 자동화가 채우는 영역
[AGENT] AI agent가 해석과 제안을 쓰는 영역
```
현재 daily note의 핵심 구조는 이런 식이다.
```markdown
## [YOU] Daily Check
### [YOU] Today Focus
### [YOU] Work Start Note
## Today Board
## [YOU] Work Journal
## [RULE] Focus Log
## Evening Review
### [RULE] Time Use Summary
### [RULE] Task Ledger Check
### [RULE] Deterministic Review
### [AGENT] Review Draft
### [YOU] One-line Review
```
Rule-based 자동화가 하는 일은 명확하게 제한했다.
- Pomodoro 기록을 시간순으로 정리
- focus work, break, interrupted work 집계
- task별 작업 시간 요약
- 열린 타이머 감지
- overdue task 감지
- unscheduled task 감지
- missing property 감지
- focus score 계산
- tomorrow candidate 제안
예를 들어 Task Ledger Check는 다음처럼 나온다.
```markdown
### [RULE] Task Ledger Check
- Open timers: [[TaskNotes/Tasks/graphDXA 사용방향 확정]] (1)
- [[TaskNotes/Tasks/graphDXA 사용방향 확정]] missing: projects, timeEstimate
- [[TaskNotes/Tasks/task 작업플로우 확정]] missing: projects, timeEstimate
- One-line review suggestion: task 작업플로우 확정 advanced with 7 focus sessions.
```
중요한 점은 rule-based 자동화가 task를 마음대로 완료 처리하거나 due date를 바꾸지 않게 했다는 것이다. 그런 판단은 사람의 영역으로 남겨두었다.
Windows Task Scheduler도 설정했다. Obsidian이 열려 있으면 Obsidian 내부 스케줄러가 동작하고, Obsidian이 닫혀 있어도 PowerShell runner가 daily note 파일을 직접 갱신하도록 했다.
---
## 결과와 배운 점
가장 크게 배운 점은 “자동화는 많을수록 좋은 것이 아니라, 역할이 분명할수록 좋다”는 점이었다.
처음에는 AI Draft와 Agent Inbox 처럼 이름이 섞여 있었는데, 실제로 써보니 rule-based 결과와 agent-based 해석이 분리되어야 했다. 숫자 집계, 누락 감지, 열린 타이머 확인은 rule이 잘한다. 반면 하루의 의미를 요약하거나, 내일 무엇을 줄일지 제안하는 일은 agent가 더 잘한다.
그래서 최종적으로는 이렇게 역할을 나눴다.
- Human: 의도, 맥락, 최종 판단
- Plugin + Rule: 측정, 집계, 누락 감지, 반복 가능한 정리
- Agent: 해석, 요약, 제안, cleanup draft
시행착오도 있었다.
첫 번째는 Obsidian이 켜진 상태에서 이전 자동화 handler가 메모리에 남아, 새 구조로 바꿨는데도 [AUTO] 섹션이 다시 생기는 문제였다. 이 문제는 startup script를 버전업하고, 기존 handler를 무력화하는 방식으로 해결했다.
두 번째는 Task attention 알림이었다. 알림은 뜨는데 attention.base를 열면 아무것도 안 보이는 문제가 있었다. 원인은 알림 스크립트와 base view의 조건이 서로 달랐기 때문이었다. 이후 Open Timers view를 따로 만들고, 알림에는 실제 task 이름이 나오도록 바꿨다.
세 번째는 missing property가 너무 많은 줄을 차지하는 문제였다. 처음에는 projects, timeEstimate가 각각 별도 줄로 표시되었는데, 지금은 task별로 한 줄에 묶어서 표시되게 바꿨다.
나만의 팁은 이것이다.
- AI에게 모든 것을 맡기지 말고, deterministic하게 가능한 것은 rule로 빼기
- daily note 안에서 사람이 쓸 영역과 자동화 영역을 이름으로 명확히 나누기
- TaskNotes는 task ledger로 유지하고, daily note는 하루의 dashboard로 쓰기
- 자동화가 task status나 due date를 바꾸게 하지 않기
- Obsidian이 닫혀 있을 상황까지 고려하면 OS-level scheduler가 필요함
앞으로의 계획은 2주 정도 이 practice vault에서 안정성을 확인한 뒤, 메인 vault로 옮기는 것이다. 그다음에는 weekly review 자동화를 추가하고 싶다. 특히 project별 시간, 반복적으로 밀리는 task, 자주 생기는 attention pattern을 주간 단위로 보고 싶다.