You don't need an extra cache level for that. If what you want is to accumulate "adds" one at a time into the cache to create one combined commit, you could just accumulate small commits until you had what you wanted, then merge the commits into one combined commit before pushing to the server.
This approach doesn't allow you to easily revert parts of your last change-set. Actually you can't even distinguish in the diff your last changes form all the other accumulated changes once the recent change-set was commited.
I don't follow. You could totally implement a staging area workflow by making a commit with the message "Staging Area", repeatedly amending it, and then finally giving it a real message when you're ready to commit "for real". The main thing you lose that way is the ability to push safely.