I wonder if the simple solution is to just have a cron script modify postgresql.conf and pg_ctl reload. That seems very flexible, or have two postgresql.conf files and move them into place via cron.
I'd still prefer to vacuum on demand actually. Rather than hope that autovacuum hit all the nastiest tables, I'd like to be able to record the fact that tables (x,y,z) were vacuumed and how long it took. I want the logic autovacuum uses to determine if a table needs vacuuming, but I'd rather do the actual vacuuming myself.
I'd also like to use some of this information to issue reindex and cluster commands only when they're needed. In fact, on days when I cluster, there's no need whatsoever to also vacuum those tables. This is something that autovacuum won't do at all.
If the best I got was access to the same information autovacuum uses to make its decisions, I'd be pretty happy.
-Glen