mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-17 04:15:21 +00:00
Improve README
This commit is contained in:
1 parent
d1aeda8fa3
commit
8a935b7fa1
1 file changed
+23
-7
@@ -13,12 +13,18 @@ A: Yes, you can!
|
|||||||
By integrating Serena with your favourite (even free) LLM and thereby enabling it
|
By integrating Serena with your favourite (even free) LLM and thereby enabling it
|
||||||
to perform coding tasks directly on your codebase.
|
to perform coding tasks directly on your codebase.
|
||||||
|
|
||||||
|
### Demonstration
|
||||||
|
|
||||||
Here you see Serena implementing a small feature for itself (a better log GUI) with Claude Desktop.
|
Here is a demonstration of Serena implementing a small feature for itself (a better log GUI) with Claude Desktop.
|
||||||
Note the smart usage in finding and editing the right symbols.
|
Note how Serena's tools enable Claude to find and edit the right symbols.
|
||||||
|
|
||||||
https://github.com/user-attachments/assets/6eaa9aa1-610d-4723-a2d6-bf1e487ba753
|
https://github.com/user-attachments/assets/6eaa9aa1-610d-4723-a2d6-bf1e487ba753
|
||||||
|
|
||||||
|
### LLM Integration
|
||||||
|
|
||||||
|
Serena provides the necessary [tools](#full-list-of-tools) for coding workflows, but an LLM is required to do the actual work,
|
||||||
|
orchestrating tool use.
|
||||||
|
|
||||||
Serena can be integrated with an LLM in several ways:
|
Serena can be integrated with an LLM in several ways:
|
||||||
* by using the **model context protocol (MCP)**.
|
* by using the **model context protocol (MCP)**.
|
||||||
Serena provides an MCP server which integrates with Claude (and [soon also ChatGPT](https://x.com/OpenAIDevs/status/1904957755829481737)).
|
Serena provides an MCP server which integrates with Claude (and [soon also ChatGPT](https://x.com/OpenAIDevs/status/1904957755829481737)).
|
||||||
@@ -28,6 +34,8 @@ Serena can be integrated with an LLM in several ways:
|
|||||||
* by incorporating Serena's tools into an agent framework of your choice.
|
* by incorporating Serena's tools into an agent framework of your choice.
|
||||||
Serena's tool implementation is decoupled from the framework-specific code and can thus easily be adapted to any agent framework.
|
Serena's tool implementation is decoupled from the framework-specific code and can thus easily be adapted to any agent framework.
|
||||||
|
|
||||||
|
### Programming Language Support & Semantic Analysis
|
||||||
|
|
||||||
Serena's semantic code analysis capabilities build on **language servers** using the widely implemented
|
Serena's semantic code analysis capabilities build on **language servers** using the widely implemented
|
||||||
language server protocol (LSP). The LSP provides a set of versatile code querying
|
language server protocol (LSP). The LSP provides a set of versatile code querying
|
||||||
and editing functionalities based on symbolic understanding of the code.
|
and editing functionalities based on symbolic understanding of the code.
|
||||||
@@ -47,8 +55,10 @@ With Serena, we provide
|
|||||||
* Ruby (untested)
|
* Ruby (untested)
|
||||||
* Go (untested)
|
* Go (untested)
|
||||||
* C# (untested)
|
* C# (untested)
|
||||||
|
These languages are supported by the language server library [multilspy](https://github.com/microsoft/multilspy), which Serena uses under the hood.
|
||||||
|
But we did not explicitly test whether the support for these languages actually works.
|
||||||
|
|
||||||
Further languages can easily be supported by providing a shallow adapter for a new language server
|
Further languages can, in principle, easily be supported by providing a shallow adapter for a new language server
|
||||||
implementation.
|
implementation.
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
@@ -116,8 +126,8 @@ Serena can read, write and execute code, read logs and the terminal output.
|
|||||||
2. Clone the repository to `/path/to/serena`.
|
2. Clone the repository to `/path/to/serena`.
|
||||||
3. Create a configuration file for your project, say `myproject.yml` based on the template in [myproject.demo.yml](myproject.demo.yml).
|
3. Create a configuration file for your project, say `myproject.yml` based on the template in [myproject.demo.yml](myproject.demo.yml).
|
||||||
4. Configure the MCP server in your client.
|
4. Configure the MCP server in your client.
|
||||||
For Claude Desktop, go to File / Settings / Developer / MCP Servers / Edit Config,
|
For [Claude Desktop](https://claude.ai/download) (available for Windows and macOS), go to File / Settings / Developer / MCP Servers / Edit Config,
|
||||||
which will let you open the json file `claude_desktop_config.json`. Add the following (with adjusted paths) to enable Serena:
|
which will let you open the JSON file `claude_desktop_config.json`. Add the following (with adjusted paths) to enable Serena:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -133,11 +143,17 @@ Serena can read, write and execute code, read logs and the terminal output.
|
|||||||
When using paths containing backslashes on Windows, be sure to escape them correctly (`\\`).
|
When using paths containing backslashes on Windows, be sure to escape them correctly (`\\`).
|
||||||
|
|
||||||
That's it! Save the config and then restart Claude Desktop.
|
That's it! Save the config and then restart Claude Desktop.
|
||||||
⚠️ Be sure to fully quit the application, as closing Claude will just minimize it to the system tray – at least on Windows.
|
|
||||||
|
⚠️ Be sure to fully quit the Claude Desktop application, as closing Claude will just minimize it to the system tray – at least on Windows.
|
||||||
|
|
||||||
After restarting, you should Serena's tools in your chat interface (notice the small hammer icon).
|
After restarting, you should Serena's tools in your chat interface (notice the small hammer icon).
|
||||||
|
|
||||||
Note that Serena is always configured *for a single project*. To use it for another, you will have to
|
ℹ️ Note that MCP servers which use stdio as a protocol are somewhat unusual as far as client/server architectures go, as the server
|
||||||
|
necessarily has to be started by the client in order for communication to take place via the server's standard input/output stream.
|
||||||
|
In other words, you do not need to start the server yourself. The client application (e.g. Claude Desktop) takes care of this and
|
||||||
|
therefore needs to be configured with a launch command.
|
||||||
|
|
||||||
|
ℹ️ Furthermore note that Serena is always configured *for a single project*. To use it for another, you will have to
|
||||||
write a new configuration file, adjust the configuration to point to it and then restart the client.
|
write a new configuration file, adjust the configuration to point to it and then restart the client.
|
||||||
|
|
||||||
For more information on MCP servers with Claude Desktop, see [the official quick start guide](https://modelcontextprotocol.io/quickstart/user).
|
For more information on MCP servers with Claude Desktop, see [the official quick start guide](https://modelcontextprotocol.io/quickstart/user).
|
||||||
|
|||||||
Reference in new issue
Block a user