diff --git a/README b/README index f3d0adf7f2518b359338526e7d9ce0b8ce8f5d1f..7827f1a3a1d1a74708472c0b41eb6f25524b5985 100644 --- a/README +++ b/README @@ -5,3 +5,4 @@ Design goals: - Inspired by Crush, which treats LSP diagnostics as special and injects them deterministically. I.e., we don't have to rely on the model to be attentive to diagnostics on its own. They will get injected whether the model likes it or not. - The simplest solution would obviously be to just create some tools that allow the model to call out to the LSP. But I don't think that would work, because LSP is stateful. In particular, the LSP spec has a lot to say about document synchronization. To be spec-compliant, a client must alert the server when it has opened, closed, or edited a document. Otherwise, the server might report inaccurate diagnostics. Therefore, the agent's basic operations, like "view," "edit," and "grep," must be LSP-aware. - By re-implementing core tools like these in an MCP, we also solve the first problem, since we know that agents will reliably call tools like this. +- This is, in fact, the approach taken by Crush -- namely, making tool calls LSP aware. See [here](https://github.com/charmbracelet/crush/blob/f1122df71fab7d11f369a936ef636abd40a7dc48/internal/llm/tools/write.go#L196) for example.