Okay so it turns out there were a couple of issues:
I wasn't monitoring stderr for errors from clangd -- it was closing immediately because my command line arguments were invalid. (As it turns out, "bar" is not a valid command line argument.)
Something was messed up with my visual studio workspace -- I was making changes to the extension, but it was launching some old version so my changes weren't actually being seen. I tried resetting the experimental instance of visual studio, but that just caused it to fail builds, saying it couldn't find the extension. I tried bumping the version number, but that didn't make a difference. Ultimately, the only thing that "fixed" it was to completely delete and re-create the VSIX project from scratch, only copying over a few of my cs files.