I think that making them invincible would be asymptotic in an unhelpful way. Making them tougher could be good, though.
My off-the-cuff suggestion to head-off a grindy feeling is to have different varieties of Eyes:
1) The one we've got now ("Sentinel").
2) An invincible/dies-with-station one ("Observer").
3) One that only maintains a 3:1 ratio but roams from AI planet to AI planet, so you could potentially have more than one eye on a planet ("Patroller").
4) One with a turbo-fire railgun-like ion cannon that only fires when the ratio is worse than 2:1 ("Cyclops").
5) One that's cloaked ("ManBehindTheCurtain").
6) One that, if the ratio is worse than 3:1, either acts like a planetary cloaker or automatically spawns one ("Hider").
6) One that spawns counter-attack-waves (or just normal eye-spawns from other places, so they go after the player elsewhere) ("Retaliator").
7) One that's mobile (but can't traverse wormholes) with a bunch of health and some module slots for heavy guns that are auto-built based on how bad the ratio is, so coming in with 10:1 is going to get something golem-esque in your face or something like that ("Enforcer").
8 ) One that doesn't spawn ships but if the ratio is past 2:1 provides a proportional munitions boost (and/or armor boost and/or speed boost) to all AI ships on the planet ("Equalizer").
These could have varying frequency, perhaps even based on the AI Type, AI Difficulty, etc.
It would also be good if the ratio was computed in a way that recognizes the difference between, say, a Zenith Starship and a Laser Gatling MkI. And, for that matter, the difference between an Artillery Guardian MkIV and an (AI) Fighter MkI. Not that it has to be completely linear or very accurate, but some kind of difference would be good. My suggestion would be to have a new int field on UnitType that would be initialized in the ctor to some value based on EffectiveShipCap, IsStarship, stuff like that (it'd be zero for non-combatants, presumably). Then, when adding/removing a ship to/from a rollup, add/subtract its value from a new int on that rollup for enemy/allied. And the eyes could then refer to those rollup ints to compute the ratio. And then you could have another eye type called "Indiscriminate" (or "Equal Opportunity"
) that just checks the counts like it does now
Anyway, there's no need to do _all_ of that, but it seemed worth mentioning