内容
<!-- mcp-name: io.github.dcondrey/misterdev -->
<p align="center">
<img src="https://raw.githubusercontent.com/dcondrey/misterdev/main/assets/logo.gif" alt="misterdev" width="220">
</p>
<h1 align="center">misterdev</h1>
<p align="center">
<strong>一款自主的大型语言模型构建编排器,能够将目标分解为任务,以外科手术般的精度编辑代码,并在应用任何更改之前通过正确性检查门。</strong>
</p>
<p align="center">
<a href="https://pypi.org/project/misterdev/"><img src="https://img.shields.io/pypi/v/misterdev" alt="PyPI 版本"></a>
<a href="https://pypi.org/project/misterdev/"><img src="https://img.shields.io/pypi/pyversions/misterdev" alt="Python 版本"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue" alt="许可证:AGPL-3.0"></a>
<a href="https://github.com/dcondrey/misterdev/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/dcondrey/misterdev/ci.yml?branch=main" alt="CI"></a>
<a href="https://glama.ai/mcp/servers/dcondrey/misterdev"><img src="https://glama.ai/mcp/servers/dcondrey/misterdev/badges/score.svg" alt="misterdev MCP 服务器"></a>
</p>
<p align="center">
<a href="#安装">安装</a> ·
<a href="#功能">功能</a> ·
<a href="#命令行参考">命令行参考</a> ·
<a href="#扩展misterdev">扩展misterdev</a> ·
<a href="#配置">配置</a> ·
<a href="#开发">开发</a> ·
<a href="#许可证">许可证</a>
</p>
---
将misterdev指向一个仓库和一个目标。它读取代码库作为符号图,将目标分解为具体任务,并在尝试-编辑-验证循环中逐一完成:它发出锚定的SEARCH/REPLACE编辑,应用于磁盘上的文件,并通过一系列正确性检查门户运行更改 - 构建,测试,lint,类型检查以及您启用的任何可选门户。如果某个门户失败,RED阻止更改;如果某个门户没有要检查的内容,则SKIP从不阻止。当更改使测试套件回归时,misterdev通过git恢复它。除非它保持绿色,否则绝不合并。
```console
$ misterdev build . "添加速率限制到公共API"
计划 目标 → 3个任务 (模型:anthropic/claude-sonnet-4-6,预算 $100.00)
任务 1/3 中间件:token-bucket限制器 api/limiter.py
编辑 1个hunk应用 · 语法正常
门户 构建 GREEN · 测试 GREEN (142通过) · lint GREEN · 类型检查 GREEN
任务 2/3 将限制器连接到请求管道 api/app.py
编辑 2个hunks应用
门户 构建 GREEN · 测试 RED (1失败) → 回滚,重新生成
编辑 2个hunks应用(尝试2)
门户 构建 GREEN · 测试 GREEN (145通过) · lint GREEN · 类型检查 GREEN
任务 3/3 文档 + 配置表面 README.md,config.py
门户 全部 GREEN
完成 3/3任务 · 145个测试绿色 · $0.38超出11次调用
```
因为misterdev只信任其门户,所以循环是诚实的:“模型说它完成了”永远不是终点线 - 构建,测试和差异才是。
## 安装
```bash
pip install misterdev
# 或
uv pip install misterdev
```
Python 3.10 – 3.13。可选的额外功能在不膨胀核心安装的情况下添加功能:
```bash
pip install 'misterdev[local-embeddings]' # 离线语义上下文排名(fastembed,无API密钥)
pip install 'misterdev[lsp]' # LSP语义诊断门户
pip install 'misterdev[web]' # 无头浏览器网页验证门户(+playwright安装chromium)
pip install 'misterdev[mcp]' # 模型上下文协议工具主机基质
```
额外功能都是可选的,并且有超时限制。当额外功能的运行时依赖项不存在时,它支持的门户将跳过而不是失败。
## 功能
### 自主构建循环
给misterdev一个目标,它会驱动整个循环:分析项目,计划任务,编辑和验证 - 重复直到目标实现或预算耗尽。编辑是**锚定SEARCH/REPLACE**块:模型仅发出更改区域,这些区域应用于磁盘上的文件,因此一个5,000行的模块在不重新打印的情况下被编辑,并且不会击中输出令牌上限。匹配尝试精确匹配,首先容忍空格和缩进偏移,始终需要一个唯一的锚点,以便永远不会写入部分文件。
### 多语言符号图上下文
树形符号图为misterdev提供了**Python,Rust,TypeScript / JavaScript,Go,Java,C / C ++,C#,Swift和Kotlin**的结构理解。每个文件的轮廓加上整个项目的结构图提供规划和编辑,并将大文件作为符号轮廓发送,加上任务相关符号的字面窗口 - 因此上下文和成本随编辑而缩放,而不是随文件大小缩放。
### 正确性门户
每个更改都通过有序的门户序列运行:**构建→lint→测试→类型检查**,并在顶部有可选的门户 - **对抗性批评者**(独立的第二个模型,在应用任何差异之前审查每个差异),**目标检查**,**声明验证器**,**突变**评分,**运行时烟雾**,**网页**和**视觉**验证。如果门户失败,**红色**阻止更改;如果门户没有要检查的内容,**跳过**从不阻止。回归通过git恢复,因此工作树仅向前移动。
### 动态模型选择
misterdev保留每个模型的**性能账本**,并将其与**成本感知选择器**配对,后者根据**整个OpenRouter的范围**选择每美元的质量 - 将每个任务路由到**能力阶梯**(免费/廉价收获→强力中档→前沿阶梯),并且**在更便宜的模型无法通过门户时升级到更强的模型**。最强的层级保留用于最后一次尝试,因此前沿支出是罕见的安全网,而不是默认设置;一个艰难的任务在中档模型停滞时由前沿模型完成,而简单的任务则在免费/廉价模型上解决。质量永远不会下降,因为编写不良代码的弱模型会失败,门户会升级。
### 并行工作树
不相交的任务并行运行,每个任务都在自己的**隔离git工作树**中进行,因此独立的工作不会相互竞争。一个**集成门户**重新检查每个波浪的完整套件,并恢复任何使之退化的任务 - 并行性而无交叉污染。
### 自我改进
misterdev保留其自身实际失败的持久性指纹流,并在其源代码上运行**类似AlphaEvolve的keep-if-better循环**:它归因于故障,分类*为什么*(利用神器与观察差距与能力),提出有针对性的结构性自我编辑,并在它击败冠军的**保留任务集**时推广它 - 并且零回归。奖励黑客防护栏将测试和基准测试与之隔离。结果是一个循环,随着时间的推移,它会消除整个故障类别**,而不会过度拟合**任何一个基准测试。参见[docs/path-to-100.md](docs/path-to-100.md)。
在正确性方面,misterdev采用**先复制**的方式:对于问题驱动的任务,它从验收标准中合成一个失败的测试,**验证该测试实际上在干净的树上失败**(一个测试如果无法复制任何内容,则被丢弃而不是被信任),然后驱动修复以使其变为绿色 - 因此模型编辑朝着具体,验证的目标而不是描述。
**双时间尺度演化**(内置;通过`orchestrator.runtime_tooling`启用;参见[docs/two-timescale-evolution.md](docs/two-timescale-evolution.md))将自我改进提升到超出无记忆运行时代理的水平。在**运行时**,模型可能会编写一个小的特定于任务的帮助工具,该工具在**沙箱**(一个加固的无网络容器 - 未受信任的代码从不触摸主机或存储库,并且如果没有容器引擎,则功能会降低)中运行;其输出提供编辑。每个发明的工具都与任务的结果一起被捕获到**工具语料库** - 普通运行的免费副产品,并且有意的推广过程允许成功率**泛化**的工具在保留任务分割线(基线从复制语料库中绘制)上进入**持久的按能力最佳工具库**,未来运行从此处开始。快速循环发明;慢循环保留仅获胜者;相同的保留门户守护立足点自我编辑,确保库的泛化而不是基准测试过度拟合。能力**在运行中累积**而不是每次任务都被重新发明。运行推广过程使用`python -m misterdev.core.evolution.tool_promotion <project>`。
### 可扩展性
工具,门户和目标**通过Python入口点**自我注册。`pip install misterdev-plugin-x`添加一个功能,而无需对核心进行任何编辑 - misterdev在运行时发现入口点并将其连接起来。一个工作示例位于[`examples/misterdev-plugin-hello`](examples/misterdev-plugin-hello)。参见[扩展misterdev](#扩展misterdev)。
### 代理MCP
misterdev可以连接到**模型上下文协议**服务器,并让模型在构建过程中调用其发现的工具 - 有界限,可选,并受工具允许列表的约束。传输包括stdio和**远程流式http与身份验证**,因此您可以将misterdev指向托管的MCP网关,例如**Glama**,并为构建提供整个工具目录,而无需在本地运行任何工具。
## 基准测试
在[Aider的多语言基准测试](https://github.com/Aider-AI/polyglot-benchmark)(Exercism练习,具有隐藏的测试套件)上,`anthropic/claude-sonnet-4-6`的门户验证通过率:
| 语言 | 解决 | 速率 |
| --- | --- | --- |
| JavaScript | 9 / 10 | **90%** |
| Python | 8 / 10 | **80%** |
| Rust | 7 / 10 | **70%** |
连续压力测试已解决**20/20**,涵盖三种语言,零失败 - 包括通常被引为困难的练习(保龄球,第四,任意精度十进制)。每个解决方案都由练习的隐藏测试判断,而不是模型的说法。完整数字,方法和重现方法:**[docs/benchmark-results.md](docs/benchmark-results.md)**。测试套件:**1,941通过** - **[docs/TESTING.md](docs/TESTING.md)**。
## 命令行参考
**不想记住标志?** 如果第一个参数不是子命令,misterdev将整个行视为普通英语,将其映射到具有其自己的模型的动作,向您显示预览,并在进行任何更改之前询问:
```console
$ misterdev "修复失败的测试,但保持廉价,并并行运行"
→ 我将运行:misterdev build . 修复失败的测试 --budget 5 --parallel
继续? [Y/n]
```
下面基于标志的命令仍然有效,适用于脚本和高级用户。`misterdev`命令驱动一切:
| 命令 | 功能 |
| --- | --- |
| `misterdev scan <dir>` | 发现目录下的项目并注册它们。 |
| `misterdev list` | 列出所有已注册的项目。 |
| `misterdev status [path]` | 显示项目的任务及其状态。 |
| `misterdev report [path]` | 总结最新的构建的成本/令牌,每个模型的账本性能和审计轨迹。只读 - 不会重新运行任何内容。 |
| `misterdev run [path]` | 为项目运行待处理(或特定的`--task`)任务。 `--dry-run`, `--force`, `--status`。 |
| `misterdev plan [path]` | 分析项目,建议工作并交互式地组成计划。 `--budget`, `--no-rollback`。 |
| `misterdev build [path] [prompt]` | 自动构建/调试/完成工作流程。参见下面的标志。 |
纯`misterdev`不带子命令启动交互式规划。
<details>
<summary><strong><code>misterdev build</code> 标志</strong></summary>
| 标志 | 效果 |
| --- | --- |
| `--budget <float>` | 运行的最大美元预算(默认为100)。 |
| `--commit` | 每个完成的任务后提交。 |
| `--parallel` | 在隔离的工作树中并发执行独立任务。 |
| `--dry-run` | 仅规划;显示任务而不执行。 |
| `--interactive`,`-i` | 每个任务之间等待确认。 |
| `--no-verify` | 跳过最终验证阶段。 |
| `--no-suggest` | 跳过建议扫描。 |
| `--no-rollback` | 禁用自动二分查找/回滚回归任务。 |
| `--focus <area>` | 限制工作到特定区域。 |
| `--allow-dirty` | 允许在未提交的更改上构建。 |
| `--max-tasks <n>` | 此运行将计划/执行的任务上限(绑定成本)。 |
`prompt`是自由文本或模式词 - `debug`,`complete`,`review`或`new <description>`。
</details>
## 从AI客户端(MCP服务器)驱动它
misterdev还**作为MCP服务器**(`misterdev-mcp`)提供,因此您可以从Claude Desktop,Claude Code,Cursor或任何MCP客户端用纯英语驱动它 - 无需记住标志。客户端只需调用一个工具(`build`,`scan`,`status`,`list_projects`,`run`);**整个编排在misterdev自己的进程**中运行,使用自己的模型和上下文预算,并且只返回简短的摘要给客户端 - 您的代码库永远不会进入客户端的上下文窗口。
```jsonc
// Claude Desktop 配置(claude_desktop_config.json)
{
"mcpServers": {
"misterdev": {
"command": "misterdev-mcp",
"env": { "OPENROUTER_API_KEY": "sk-..." }
}
}
}
```
然后只需询问:*“让misterdev为API添加速率限制,保持在$5以下。”*
变异工具(`build`,`run`)拒绝脏工作树,并带有保守的默认预算。需要`mcp`额外功能:`pip install 'misterdev[mcp]'`。
## 扩展misterdev
插件是一个普通的Python包,声明了`misterdev.*`组的入口点。安装它,misterdev就会拾取它 - 无需对核心进行任何编辑。
**工具**是一个类;**门户**是一个返回`GateOutcome`的可调用函数:
```python
# misterdev_plugin_hello.py
from misterdev.core.execution.outcomes import GateOutcome, GREEN, RED
class HelloTool:
gather_safe = True # 选择加入代理收集循环
gather_description = "为名称返回友好的问候语。
def __init__(self, config: dict):
self.name = config.get("name", "hello")
def execute(self, project, name: str = "world", **_ignored):
return True, f"Hello, {name}!"
def no_shouting_gate(ctx) -> GateOutcome:
build = (ctx.commands or {}).get("build_command") or ""
if build and build.isupper():
return GateOutcome(RED, "build_command全部大写;请冷静一下")
return GateOutcome(GREEN)
```
```toml
# pyproject.toml - 入口点是整个合同
[project.entry-points."misterdev.tools"]
hello = "misterdev_plugin_hello:HelloTool"
[project.entry-points."misterdev.gates"]
no_shouting = "misterdev_plugin_hello:no_shouting_gate"
```
目标也通过`misterdev.targets`组注册。完整的示例 - 工具,门户,`pyproject.toml`和注释位于[`examples/misterdev-plugin-hello`](examples/misterdev-plugin-hello)。
## 配置
在存储库根目录下放置`project.yaml`。最小配置项指定语言和构建/测试/ lint命令;其他一切都有
name: "My App"
language: "python"
build_command: "python -m compileall -q ."
test_command: "pytest -q"
lint_command: "ruff check ."
llm:
provider: "openrouter" # openrouter | anthropic
model: "anthropic/claude-sonnet-4-6"
api_key_env_var: "OPENROUTER_API_KEY"
```
关键旋钮:
- **模型和预算** - `llm.model`,提供者/故障转移和运行的美元上限(也是`--budget`)。
- **门户** - 默认情况下禁用可选门户(对抗性批评者,突变,运行时烟雾,网页,视觉,目标检查)并在`orchestrator.*`键下启用。
- **MCP** - 在`mcp.servers`下声明服务器,并在`orchestrator.mcp_enabled`/`orchestrator.mcp_tool_use`下启用工具使用;将远程网关指向托管的工具目录。
- **目标** - `targets:`块为多语言monorepo提供每种语言的构建/测试/ lint,由任务路由。
**指南:** [入门](docs/getting-started.md) · [配置](docs/configuration.md) · [插件](docs/plugins.md) · [MCP](docs/mcp.md)。`project.yaml.example`文档介绍了每个配置键。
## 需求
- Python **3.10 – 3.13**
- **git**(分支任务,工作树和回滚都通过它运行)
- **OpenRouter**或**Anthropic**的API密钥
- 每个门户的可选工具链 - Playwright浏览器用于网页门户,语言服务器用于LSP门户,MCP SDK用于工具主机基质(所有这些都通过匹配的额外功能安装)
## 开发
```bash
git clone https://github.com/dcondrey/misterdev
cd misterdev
uv sync
uv run ruff check .
uv run pytest -q
```
欢迎贡献 - 参见 [CONTRIBUTING.md](CONTRIBUTING.md),并在 [GitHub](https://github.com/dcondrey/misterdev) 上打开问题或拉取请求。
## 许可证
misterdev **双许可**:
- **[AGPL-3.0-or-later](LICENSE)** - 免费用于开源项目,根据GNU Affero通用公共许可证条款。
- **[商业许可证](COMMERCIAL_LICENSE.md)** - 用于封闭源代码或专有产品,无需AGPL义务。
选择适合您项目的许可证。
---
<p align="center">
由 <strong>David Condrey</strong> 构建 ·
<a href="https://github.com/dcondrey/misterdev">github.com/dcondrey/misterdev</a><br>
<sub>静态标记位于<code>assets/logo.svg</code>。</sub>
</p>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器