Creating a Self-Evolving AI Agent with OpenClaw - AlphaHunter Development Story
An experience building a system where the OpenClaw AI agent develops ideas on its own, tracks tasks with TODO.md, and receives user approval via Discord emojis. A new development pattern for collaborating with AI.
This post was machine-translated from Korean by AI. Some expressions may differ from the original.
Read the original (Korean)Introduction
A project that started with the thought "AI will do everything for me" has transformed into an experience of real collaboration with AI.
While creating the "AlphaHunter" bot, which automatically collects and tweets crypto market conditions, I discovered three patterns:
- Self-Evolving Ideas - AI proposes improvements on its own
- Task State Management - Tracking progress with TODO.md
- Emoji Approval Workflow - User decision-making via Discord
In this post, I'll share how I implemented each of these.
Background: AlphaHunter Project
Goal
A bot that collects crypto market information and automatically posts insightful tweets.
Features
- π± Real-time collection from 70+ Telegram channels
- π° Collection of news/indicators/announcements (CoinDesk, Kimchi Premium, Fear & Greed)
- π§ AI Analysis (Sentiment, Trends)
- π Automatic chart generation
- π¦ Automatic Twitter posting (after approval)
Pattern 1: Self-Evolving Ideas
Problem
Initially, when I simply instructed it to "Collect from Telegram and tweet," the AI created only the basic features and stopped.
Solution
Made the AI think of development ideas on its own:
## λ°μ μμ΄λμ΄ (ROADMAP.md)
1. κ°μ± λΆμ: μμ§λ μ 보μ κΈ/λΆμ κ°μ± λΆμ
2. νΈλ λ κ°μ§: κ°μκΈ° μΈκΈλ μ¦κ°νλ ν ν½ κ°μ§
3. μλ μ°¨νΈ μμ±: μν© νΈμμ μ°¨νΈ μ΄λ―Έμ§ 첨λΆ
4. μ€λ λ μμ±: 볡μ‘ν λΆμμ μ€λ λλ‘ μμ±
5. μμ½ ν¬μ€ν
: μ΅μ μ μκ°λμ μμ½ κ²μ
6. μ±κ³Ό νΈλνΉ: νΈμλ³ μ‘°νμ/μ’μμ κΈ°λ‘
7. A/B ν
μ€νΈ: νΈμ μ€νμΌλ³ λ°μ λΉκ΅
8. νλ‘μ λΆμ: νλ‘μ μ¦κ° μΆμ΄ λͺ¨λν°λ§Result
The AI suggested 8 development ideas and implemented all of them before the session ended:
| Feature | File | Size |
|---|---|---|
| Sentiment Analysis | advanced_analysis.py |
17KB |
| Trend Detection | advanced_analysis.py |
(Included) |
| Chart Generation | chart_generator.py |
14KB |
| Scheduled Posting | scheduler.py |
17KB |
| Performance Tracking | performance_tracker.py |
21KB |
| Follower Analytics | follower_analytics.py |
15KB |
Lesson
If you ask AI, "Isn't there a better way?" there really is.
Pattern 2: Task State Management with TODO.md
Problem
The AI wrote down a bunch of ideas... but stopped implementing them halfway through.
λ°μ μμ΄λμ΄:
- κ°μ± λΆμ β
- νΈλ λ κ°μ§ β
- μλ μ°¨νΈ μμ± (미ꡬν) β μ¬κΈ°μ λ©μΆ€
- μμ½ ν¬μ€ν
(미ꡬν)
...Solution
Track task status with a TODO.md file:
# TODO.md - νμ€ν¬ μΆμ
## μν λ²λ‘
- β¬ μμ΄λμ΄ (λ―Έμμ)
- π μ§νμ€
- β
μλ£
- β μ·¨μ/보λ₯
## λΆμ κΈ°λ₯
| μν | κΈ°λ₯ | μ°μ μμ |
|------|------|----------|
| β
| κ°μ± λΆμ | P1 |
| β
| νΈλ λ κ°μ§ | P1 |
| β¬ | μλ μ°¨νΈ μμ± | P2 |
## λ€μ μμ
(μ°μ μμμ)
1. β¬ μλ μ°¨νΈ μμ±
2. β¬ μμ½ ν¬μ€ν
3. β¬ μ±κ³Ό νΈλνΉRecording Lessons in MEMORY.md
## β οΈ μ€μ κ΅ν
### νμ€ν¬/μμ΄λμ΄ μν κ΄λ¦¬ (2026-02-01)
**λ¬Έμ **: λ°μ μμ΄λμ΄λ₯Ό κΈ°λ‘ν΄λκ³ κ΅¬ννλ€ λ§μμ
**ν΄κ²°μ±
**:
- λͺ¨λ νλ‘μ νΈμ TODO.md μμ±
- μμ΄λμ΄ β κ³ν β μ§νμ€ β μλ£ μν κ΄λ¦¬
- μΈμ
μμ μ λ―Έμλ£ νμ€ν¬ νμΈ
- **μ λ μμ΄λμ΄λ§ μ°κ³ λ°©μΉνμ§ λ§ κ²**Result
After introducing TODO.md, the AI completed all remaining tasks.
Pattern 3: Discord Emoji Approval Workflow
Problem
The AI created tweet candidates... but posted them directly without my approval.
Solution
Implemented an approval system with Discord emojis:
1. AIκ° νΈμ ν보 3κ° μμ±
2. λμ€μ½λλ‘ μ μ‘
3. μ΄λͺ¨μ§ 5κ° λ¬κΈ° (1οΈβ£ 2οΈβ£ 3οΈβ£ π₯ β)
4. λ΄κ° μ΄λͺ¨μ§ ν΄λ¦
5. μ νν κ²λ§ ν¬μ€ν
Actual Example
## π¦
μννν° νΈμ ν보 (03:07 KST)
### 1οΈβ£ λ°μ΄λΈμ€ SAFU β BTC μ ν
> λ°μ΄λΈμ€, SAFU νλ $10μ΅μ 30μΌ λ΄ μ λ BTCλ‘ μ ν λ°ν.
> 리μ€ν¬ ν·μ§μΈκ°, νμ μΈκ°?
### 2οΈβ£ OKX μ°½μ
μ λ°μΈ
> "1/29 μλκΈ μ²μ°μΌ μμΈμ λ§€ν¬λ‘ 리μ€ν¬"
> κ·Όλ° κ²°κ΅ κ΅¬μ‘°μ λ¬Έμ μλκ°?
### 3οΈβ£ λ©ννλλ $137M BTC λ§€μ
> κΈ°κ΄λ€μ΄ 곡ν¬μ₯μμ λ§€μνλ 건 μ’μ μ§μ‘°?
**μλ μ΄λͺ¨μ§ μ€ νλ μ ν:**
1οΈβ£ 2οΈβ£ 3οΈβ£ π₯ βMulti-Selection & Queuing
If you press 1οΈβ£ + 2οΈβ£? β Queue and post sequentially
def process_reactions(reactions: list):
queue = []
for emoji in reactions:
if emoji == '1οΈβ£':
queue.append(candidates[0])
elif emoji == '2οΈβ£':
queue.append(candidates[1])
# ...
for tweet in queue:
post_tweet(tweet)
time.sleep(60) # rate limit λ°©μ§Overall Architecture
Conclusion
What I learned while working with AI agents:
1. You get better answers if you ask better questions
If you ask, "Isn't there a better way?" it really comes up with development ideas.
2. Memory should be in files
Don't trust the AI's memory. Write everything down in TODO.md, MEMORY.md, and ROADMAP.md.
3. Approval gates are essential
Humans must check irreversible actions. Emojis are the fastest way.
4. Self-evolution really works
If you tell the AI, "Do whatever you need to do to improve things," it really does it.
File Structure
The final AlphaHunter skill that was created:
skills/alphahunter/
βββ SKILL.md # μ€ν¬ λ¬Έμ
βββ ROADMAP.md # λ‘λλ§΅ & λ°μ μμ΄λμ΄
βββ TODO.md # νμ€ν¬ μΆμ
βββ config.json # μ€μ
βββ scripts/
β βββ telegram_daemon.py # ν
λ κ·Έλ¨ μμ μμ§
β βββ twitter_direct.py # νΈμν° μΈμ
API
β βββ news_collector.py # λ΄μ€/μ§ν/곡μ
β βββ chart_generator.py # μ°¨νΈ μμ±
β βββ advanced_analysis.py # κ°μ±/νΈλ λ λΆμ
β βββ approval_workflow.py # μΉμΈ μν¬νλ‘μ°
β βββ scheduler.py # μμ½ ν¬μ€ν
β βββ performance_tracker.py # μ±κ³Ό νΈλνΉ
β βββ follower_analytics.py # νλ‘μ λΆμ
βββ state/
βββ telegram_messages.json
βββ posted.json
βββ charts/If this post was helpful:
- π¦ @AlphaHunterKR Follow
- β OpenClaw GitHub Star
Related Posts:

Comments