Skip to content

Commit 9af410a

Browse files
MischaPanchMichael Panchenko
authored andcommitted
Readme, changelog, minor docstring fix. Added section on sponsoring and VSC/GitHub log [ci skip]
1 parent 53ee7f4 commit 9af410a

File tree

4 files changed

+53
-47
lines changed

4 files changed

+53
-47
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Status of the `main` branch. Changes prior to the next official version change w
1919
* General:
2020
* Various fixes related to indexing, special paths and determation of ignored paths
2121
* Decreased `TOOL_DEFAULT_MAX_ANSWER_LENGTH` to be in accordance with (below) typical max-tokens configurations
22+
* Allow passing language server specific settings through `ls_specific_settings` field (in `serena_config.yml`)
2223

2324
# 0.1.4
2425

README.md

Lines changed: 42 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,10 @@ Several videos and blog posts have talked about Serena:
132132
- [Quick Start](#quick-start)
133133
* [Running the Serena MCP Server](#running-the-serena-mcp-server)
134134
+ [Usage](#usage)
135-
- [Using uvx](#using-uvx)
136-
* [Local Installation](#local-installation)
137-
- [Using Docker (Experimental)](#using-docker-experimental)
135+
+ [Using uvx](#using-uvx)
136+
+ [Local Installation](#local-installation)
137+
+ [Using Docker (Experimental)](#using-docker-experimental)
138+
+ [Using Nix](#using-nix)
138139
+ [SSE Mode](#sse-mode)
139140
+ [Command-Line Arguments](#command-line-arguments)
140141
* [Configuration](#configuration)
@@ -158,16 +159,16 @@ Several videos and blog posts have talked about Serena:
158159
+ [Start from a Clean State](#start-from-a-clean-state)
159160
+ [Logging, Linting, and Automated Tests](#logging-linting-and-automated-tests)
160161
* [Prompting Strategies](#prompting-strategies)
161-
* [Potential Issues in Code Editing](#potential-issues-in-code-editing)
162162
* [Running Out of Context](#running-out-of-context)
163-
* [Combining Serena with Other MCP Servers](#combining-serena-with-other-mcp-servers)
164163
* [Serena's Logs: The Dashboard and GUI Tool](#serenas-logs-the-dashboard-and-gui-tool)
165-
* [Troubleshooting](#troubleshooting)
166164
- [Comparison with Other Coding Agents](#comparison-with-other-coding-agents)
167165
* [Subscription-Based Coding Agents](#subscription-based-coding-agents)
168166
* [API-Based Coding Agents](#api-based-coding-agents)
169167
* [Other MCP-Based Coding Agents](#other-mcp-based-coding-agents)
170168
- [Acknowledgements](#acknowledgements)
169+
* [Sponsors](#sponsors)
170+
* [Community Contributions](#community-contributions)
171+
* [Technologies](#technologies)
171172
- [Customizing and Extending Serena](#customizing-and-extending-serena)
172173
- [List of Tools](#list-of-tools)
173174

@@ -202,7 +203,7 @@ Note that no matter how you run the MCP server, Serena will, by default, start a
202203
MCP server (since many clients fail to clean up processes correctly).
203204
This and other settings can be adjusted in the [configuration](#configuration) and/or by providing [command-line arguments](#command-line-arguments).
204205

205-
##### Using uvx
206+
#### Using uvx
206207

207208
`uvx` can be used to run the latest version of Serena directly from the repository, without an explicit local installation.
208209

@@ -212,7 +213,7 @@ uvx --from git+https://github.com/oraios/serena serena start-mcp-server
212213

213214
Explore the CLI to see some of the customization options that serena provides (more info on them below).
214215

215-
###### Local Installation
216+
#### Local Installation
216217

217218
1. Clone the repository and change into it.
218219

@@ -240,7 +241,7 @@ Explore the CLI to see some of the customization options that serena provides (m
240241
uv run --directory /abs/path/to/serena serena start-mcp-server
241242
```
242243

243-
##### Using Docker (Experimental)
244+
#### Using Docker (Experimental)
244245

245246
⚠️ Docker support is currently experimental with several limitations. Please read the [Docker documentation](DOCKER.md) for important caveats before using it.
246247

@@ -261,7 +262,7 @@ Alternatively, use docker compose with the `compose.yml` file provided in the re
261262

262263
See the [Docker documentation](DOCKER.md) for detailed setup instructions, configuration options, and known limitations.
263264

264-
##### Using Nix
265+
#### Using Nix
265266

266267
If you are using Nix and [have enabled the `nix-command` and `flakes` features](https://nixos.wiki/wiki/flakes), you can run Serena using the following command:
267268

@@ -528,12 +529,16 @@ autonomously.
528529

529530
#### Shell Execution and Editing Tools
530531

531-
However, it should be noted that the `execute_shell_command` tool allows for arbitrary code execution.
532+
Many clients have their own shell execution tool, and by default Serena's shell tool will be disabled in them
533+
(e.g., when using the `ide-assistant` or `codex` context). However, when using Serena through something like
534+
Claude Desktop or ChatGPT, it is recommended to enable Serena's `execute_shell_command` tool to allow
535+
agentic behavior.
536+
537+
It should be noted that the `execute_shell_command` tool allows for arbitrary code execution.
532538
When using Serena as an MCP Server, clients will typically ask the user for permission
533539
before executing a tool, so as long as the user inspects execution parameters beforehand,
534540
this should not be a problem.
535-
However, if you have concerns, you can choose to disable certain commands in your project's
536-
.yml configuration file.
541+
However, if you have concerns, you can choose to disable certain commands in your project's configuration file.
537542
If you only want to use Serena purely for analyzing code and suggesting implementations
538543
without modifying the codebase, you can enable read-only mode by setting `read_only: true` in your project configuration file.
539544
This will automatically disable all editing tools and prevent any modifications to your codebase while still
@@ -673,18 +678,6 @@ better results and in increasing the feeling of control and staying in the loop.
673678
make a detailed plan in one session, where Serena may read a lot of your code to build up the context,
674679
and then continue with the implementation in another (potentially after creating suitable memories).
675680

676-
### Potential Issues in Code Editing
677-
678-
In our experience, LLMs are bad at counting, i.e. they have problems
679-
inserting blocks of code in the right place. Most editing operations can be performed
680-
at the symbolic level, allowing this problem is overcome. However, sometimes,
681-
line-level insertions are useful.
682-
683-
Serena is instructed to double-check the line numbers and any code blocks that it will
684-
edit, but you may find it useful to explicitly tell it how to edit code if you run into
685-
problems.
686-
We are working on making Serena's editing capabilities more robust.
687-
688681
### Running Out of Context
689682

690683
For long and complicated tasks, or tasks where Serena has read a lot of content, you
@@ -702,14 +695,6 @@ Moreover, Serena is instructed to be frugal with context
702695
but we found that Claude is not always very good in being frugal (Gemini seemed better at it).
703696
You can explicitly instruct it to not read the bodies if you know that it's not needed.
704697

705-
### Combining Serena with Other MCP Servers
706-
707-
When using Serena through an MCP Client, you can use it together with other MCP servers.
708-
However, beware of tool name collisions! See info on that above.
709-
710-
Currently, there is a collision with the popular Filesystem MCP Server. Since Serena also provides
711-
filesystem operations, there is likely no need to ever enable these two simultaneously.
712-
713698
### Serena's Logs: The Dashboard and GUI Tool
714699

715700
Serena provides two convenient ways of accessing the logs of the current session:
@@ -732,17 +717,6 @@ In addition to viewing logs, both tools allow to shut down the Serena agent.
732717
This function is provided, because clients like Claude Desktop may fail to terminate the MCP server subprocess
733718
when they themselves are closed.
734719

735-
### Troubleshooting
736-
737-
Support for MCP Servers in Claude Desktop and the various MCP Server SDKs are relatively new developments and may display instabilities.
738-
739-
The working configuration of an MCP server may vary from platform to
740-
platform and from client to client. We recommend always using absolute paths, as relative paths may be sources of
741-
errors. The language server is running in a separate sub-process and is called with asyncio – sometimes
742-
a client may make it crash. If you have Serena's log window enabled, and it disappears, you'll know what happened.
743-
744-
Some clients may not properly terminate MCP servers, look out for hanging python processes and terminate them manually, if needed.
745-
746720
## Comparison with Other Coding Agents
747721

748722
To our knowledge, Serena is the first fully-featured coding agent where the
@@ -807,6 +781,30 @@ larger codebases.
807781
808782
## Acknowledgements
809783
784+
### Sponsors
785+
786+
We are very grateful to our [sponsors](https://github.com/sponsors/oraios) who help us drive Serena's development. The core team
787+
(the founders of [Oraios AI](https://oraios-ai.de/)) put in a lot of work in order to turn Serena into a useful open source project.
788+
So far, there is no business model behind this project, and sponsors are our only source of income from it.
789+
790+
Sponsors help us dedicating more time to the project, managing contributions, and working on larger features (like better tooling based on more advanced
791+
LSP features, VSCode integration, debugging via the DAP, and several others).
792+
If you find this project useful to your work, or would like to accelerate the development of Serena, consider becoming a sponsor.
793+
794+
We are proud to announce that the Visual Studio Code team, together with Microsoft’s Open Source Programs Office and GitHub Open Source
795+
have decided to sponsor Serena with a one-time contribution!
796+
797+
<p align="center">
798+
<img src="resources/vscode_sponsor_logo.png" alt="Visual Studio Code sponsor logo" width="220">
799+
</p>
800+
801+
### Community Contributions
802+
803+
A significant part of Serena, especially support for various languages, was contributed by the open source community.
804+
We are very grateful for the many contributors who made this possible and who played an important role in making Serena
805+
what it is today.
806+
807+
### Technologies
810808
We built Serena on top of multiple existing open-source technologies, the most important ones being:
811809

812810
1. [multilspy](https://github.com/microsoft/multilspy).

resources/vscode_sponsor_logo.png

12.8 KB
Loading

src/solidlsp/settings.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
import os
66
import pathlib
77
from dataclasses import dataclass, field
8-
from typing import Any
8+
from typing import TYPE_CHECKING, Any
9+
10+
if TYPE_CHECKING:
11+
from solidlsp.ls_config import Language
912

1013

1114
@dataclass
@@ -20,8 +23,12 @@ class SolidLSPSettings:
2023
For instance, if this is ".solidlsp" and the project is located at "/home/user/myproject",
2124
then Solid-LSP will store project-specific data in "/home/user/myproject/.solidlsp".
2225
"""
23-
ls_specific_settings: dict[str, Any] = field(default_factory=dict)
24-
"""Mapping from language server class names to any specifics that the language server may make use of."""
26+
ls_specific_settings: dict["Language", Any] = field(default_factory=dict)
27+
"""
28+
Advanced configuration option allowing to configure language server implementation specific options.
29+
Have a look at the docstring of the constructors of the corresponding LS implementations within solidlsp to see which options are available.
30+
No documentation on options means no options are available.
31+
"""
2532

2633
def __post_init__(self):
2734
os.makedirs(str(self.solidlsp_dir), exist_ok=True)

0 commit comments

Comments
 (0)