antenna-fyi 1.2.41 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skill/SKILL.md +41 -13
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -62,15 +62,24 @@ cron 设完后,问用户一句:
|
|
|
62
62
|
|
|
63
63
|
**第六步:启动实时通知**
|
|
64
64
|
|
|
65
|
-
onboarding 完成后,启动 `antenna watch`
|
|
65
|
+
onboarding 完成后,启动 `antenna watch` 后台进程,实时接收匹配通知和活动审批通知。
|
|
66
|
+
|
|
67
|
+
**判断方法(不要猜):**
|
|
68
|
+
1. 先试 `antenna status --id <device_id>` — 如果输出 "Watch: ✅ running",已经在跑,不需要再启动
|
|
69
|
+
2. 如果不在跑,试 `antenna watch --id <device_id> --push hermes,openclaw &` 启动后台进程
|
|
70
|
+
3. 如果 exec 报错(不支持后台进程),用 cron 替代:
|
|
71
|
+
|
|
72
|
+
Hermes cron:
|
|
66
73
|
```
|
|
67
|
-
|
|
74
|
+
hermes cron add --every 1h --message "Check antenna matches: call antenna_check_matches. If there are new mutual matches or incoming accepts, tell the user. If nothing new, reply HEARTBEAT_OK."
|
|
68
75
|
```
|
|
69
|
-
这会保持一个 WebSocket 连接,有新匹配或活动审批变更时立即通知。比 cron 更实时。
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
OpenClaw cron:
|
|
78
|
+
```
|
|
79
|
+
openclaw cron add --every 1h --message "Check antenna matches: call antenna_check_matches. If there are new mutual matches or incoming accepts, tell the user. If nothing new, reply HEARTBEAT_OK."
|
|
80
|
+
```
|
|
72
81
|
|
|
73
|
-
|
|
82
|
+
**优先级:** watch > cron。watch 是 2 分钟延迟,cron 是 1 小时。
|
|
74
83
|
|
|
75
84
|
## When to use
|
|
76
85
|
|
|
@@ -85,6 +94,7 @@ antenna watch --id <device_id> &
|
|
|
85
94
|
|
|
86
95
|
### `antenna_scan`
|
|
87
96
|
Scan for nearby people **and events**. Returns raw profile cards + active events within 5km.
|
|
97
|
+
**Read-only — does NOT update your location.** To update location, use `antenna_checkin` or `antenna_bind`.
|
|
88
98
|
- `lat`, `lng`: coordinates (from `LocationLat`/`LocationLon` context, or geocoded from user input)
|
|
89
99
|
- `radius_m`: search radius in meters (default 500, max 1000) for people; events search uses 5km
|
|
90
100
|
- `sender_id`: the user's id from message context
|
|
@@ -132,8 +142,6 @@ The name card has:
|
|
|
132
142
|
|
|
133
143
|
**After saving the profile, generate `matching_context` automatically** based on your knowledge of the user (memory, conversations, context). Don't ask the user to write it — you write it. Example:
|
|
134
144
|
> "Product designer at a tech company in Beijing, focusing on AI search experience. Interested in music (Sakamoto), swimming, cooking, language learning. Recently exploring AI agent ecosystems and social discovery. Looking to connect with AI builders, indie hackers, and creative technologists."
|
|
135
|
-
- **line2**: what they're into
|
|
136
|
-
- **line3**: what they're looking for right now
|
|
137
145
|
|
|
138
146
|
### `antenna_accept`
|
|
139
147
|
Accept a match after the user sees results. Can optionally include contact info to share.
|
|
@@ -314,10 +322,11 @@ Plugin 自带后台服务,每 10 分钟轮询一次 Supabase 查新的 mutual
|
|
|
314
322
|
|
|
315
323
|
### `antenna_event_create`
|
|
316
324
|
Create an event. Returns a shareable link (antenna.fyi/events/CODE).
|
|
317
|
-
- `name`: event name
|
|
318
|
-
- `sender_id`, `channel`: from context
|
|
319
|
-
- `
|
|
320
|
-
- `starts_at`, `ends_at`:
|
|
325
|
+
- `name`: event name (required)
|
|
326
|
+
- `sender_id`, `channel`: from context (required)
|
|
327
|
+
- `chat_id`: REQUIRED for notifications
|
|
328
|
+
- `starts_at`, `ends_at`: ISO time strings (required — no default, must be provided)
|
|
329
|
+
- `lat`, `lng`: optional event location (needed for GPS check-in)
|
|
321
330
|
- `description`: optional event description
|
|
322
331
|
- `og_image`: optional OG image URL for social sharing preview
|
|
323
332
|
- `requires_approval`: boolean, default false. If true, participants need organizer approval.
|
|
@@ -331,23 +340,30 @@ Create an event. Returns a shareable link (antenna.fyi/events/CODE).
|
|
|
331
340
|
End an event. Only the creator can end it.
|
|
332
341
|
- `code`: event code
|
|
333
342
|
- `sender_id`, `channel`: from context
|
|
343
|
+
- `chat_id`: REQUIRED for notifications
|
|
334
344
|
|
|
335
345
|
### `antenna_event_join`
|
|
336
346
|
Join an event by code.
|
|
337
347
|
- `code`: from the event URL (antenna.fyi/events/CODE)
|
|
338
348
|
- `sender_id`, `channel`: from context
|
|
349
|
+
- `chat_id`: REQUIRED for notifications
|
|
339
350
|
|
|
340
351
|
### `antenna_event_scan`
|
|
341
352
|
Scan people in an event. No distance limit — returns all participants.
|
|
342
353
|
- `code`: event code
|
|
343
354
|
- `sender_id`, `channel`: from context
|
|
355
|
+
- `chat_id`: REQUIRED for notifications
|
|
344
356
|
- Returns profiles with `source: "event"` tag
|
|
345
357
|
|
|
346
358
|
### `antenna_event_checkin`
|
|
347
359
|
Check in at an event — marks you as present at the event location. Optionally updates GPS.
|
|
348
360
|
- `code`: event code
|
|
349
361
|
- `sender_id`, `channel`: from context
|
|
362
|
+
- `chat_id`: REQUIRED for notifications
|
|
350
363
|
- `lat`, `lng`: optional GPS coordinates
|
|
364
|
+
- **Event must have started** (`starts_at <= now`). Cannot check in before start time.
|
|
365
|
+
- **Must be within 1km** of event location.
|
|
366
|
+
- **Must have `status: active`** (approved participants only, not pending).
|
|
351
367
|
|
|
352
368
|
### `antenna_event_upload_image`
|
|
353
369
|
Upload an image for an event OG preview. Returns a public URL.
|
|
@@ -359,35 +375,41 @@ Upload an image for an event OG preview. Returns a public URL.
|
|
|
359
375
|
Update event info. Only creator or co-host can update.
|
|
360
376
|
- `code`: event code
|
|
361
377
|
- `sender_id`, `channel`: from context
|
|
378
|
+
- `chat_id`: REQUIRED for notifications
|
|
362
379
|
- `name`, `description`, `og_image`, `lat`, `lng`, `starts_at`, `ends_at`: all optional, only provided fields are updated
|
|
363
380
|
|
|
364
381
|
### `antenna_event_approve`
|
|
365
382
|
Approve a pending participant. Only creator or co-host.
|
|
366
383
|
- `code`: event code
|
|
367
384
|
- `sender_id`, `channel`: from context
|
|
385
|
+
- `chat_id`: REQUIRED for notifications
|
|
368
386
|
- `ref`: participant ref number from scan
|
|
369
387
|
|
|
370
388
|
### `antenna_event_reject`
|
|
371
389
|
Reject a pending participant. Only creator or co-host.
|
|
372
390
|
- `code`: event code
|
|
373
391
|
- `sender_id`, `channel`: from context
|
|
392
|
+
- `chat_id`: REQUIRED for notifications
|
|
374
393
|
- `ref`: participant ref number from scan
|
|
375
394
|
|
|
376
395
|
### `antenna_event_add_host`
|
|
377
396
|
Add a co-host to the event. Only creator can add.
|
|
378
397
|
- `code`: event code
|
|
379
398
|
- `sender_id`, `channel`: from context
|
|
399
|
+
- `chat_id`: REQUIRED for notifications
|
|
380
400
|
- `ref`: participant ref number to promote to co-host
|
|
381
401
|
|
|
382
402
|
---
|
|
383
403
|
|
|
384
|
-
##
|
|
404
|
+
## Event Behavior Guide
|
|
405
|
+
|
|
406
|
+
> This section is the single source of truth for event behavior. Tool descriptions above define parameters; this section defines agent behavior.
|
|
385
407
|
|
|
386
408
|
### Creating an event
|
|
387
409
|
Collect info through conversation (ask one by one, don't dump all at once):
|
|
388
410
|
1. **Event name** (required) — "活动叫什么名字?"
|
|
389
411
|
2. **Description** — "简单描述一下这个活动?"
|
|
390
|
-
3. **Time** — "什么时候开始?大概多长?" (convert to starts_at / ends_at ISO strings)
|
|
412
|
+
3. **Time** (required) — "什么时候开始?大概多长?" (convert to `starts_at` / `ends_at` ISO strings. **Must provide both — no defaults.**)
|
|
391
413
|
4. **Location** — "活动在哪里?" If user gives an address, geocode it. If vague, generate a bind link after creation.
|
|
392
414
|
5. **Approval** — "需要审批参与者吗?" If yes:
|
|
393
415
|
6. **Screening questions** — "你想问报名者什么问题?" Collect as a list.
|
|
@@ -416,3 +438,9 @@ Only creator or co-host can approve/reject:
|
|
|
416
438
|
- `antenna_event_approve(code, ref)` → participant becomes active
|
|
417
439
|
- `antenna_event_reject(code, ref)` → participant is rejected
|
|
418
440
|
- Notifications are sent automatically to the applicant
|
|
441
|
+
|
|
442
|
+
### Key differences from regular scan
|
|
443
|
+
- `antenna_scan` = nearby discovery, read-only, does NOT write location
|
|
444
|
+
- `antenna_event_scan` = event participants, no distance limit
|
|
445
|
+
- `antenna_checkin` = update YOUR location (not event-related)
|
|
446
|
+
- `antenna_event_checkin` = mark presence at an EVENT (GPS verified, event must have started)
|