setFrameAutosaveName:

なんかThousandを作ってると、Interface BuilderでNSWindowのframeAutosaveNameを指定してやっても全然自動保存しないんで困ってたんですが、ググってようやく知りましたよ。
藤棚工房別棟 -徒然-のキャッシュから引用。

Interface Builderでは,任意のウインドウに対してautosave名 (ウインドウの位置やサイズをUser Defaultsに記録する際の名前) を指定することができます。コマンドでは,これはNSWindowクラスの - (void)setFrameAutosaveName:(NSString *)nameメソッドに対応しています。
一方,NSWindowControllerには,関連づけられたウインドウのautosaveを設定する- (void)setWindowFrameAutosaveName:(NSString *)nameメソッドがあります。そして,NSWindowControllerをFile's Ownerとするnibファイルで,ウインドウがNSWindowControllerに関連づけられている場合,このウインドウに対してInterface Builderのautosaveを設定しても無視されてしまうようです。おそらく,NSWindowControllerがNSWindowの設定を上書きしてしまうのでしょう。そこで,NSWindowControllerに関連づけられたウインドウのautosave名を指定してウインドウのサイズや位置を記憶させたい場合,Interface Builderを使ったり,NSWindowのsetFrameAutosaveName:を使うのではなく,NSWindowControllerのsetFrameAutosaveName:メソッドを使いましょう。

IBのバカ!いやNSWindowControllerのバカ?ていうか知らなかった私がバカですね。
まあいいや、とにかく専従のWindowControllerの初期化あたりで[self setWindowFrameAutosaveName:@"autosaveName"]すればいいわけですね。