Skip to main content
Glama
README.md
# AutoDev MCP (Dual-Track Testing)

AutoDev MCP is a TypeScript MCP server that keeps your **original CLI testing** and adds an **extra Chrome Dev (browser) testing track** with persistent logs.

## What it does

- Keeps original test flow via CLI (`run_tests`) - **not replaced**
- Adds browser test flow (`browser_*` tools) via Playwright + CDP events
- Persists everything to SQLite:
  - sessions
  - logs (cli/browser/console/error/network/assertion)
  - screenshots
- Supports combined execution via `run_pipeline`
- After pipeline completion, automatically provides **10 requirement/optimization directions (中文输出)**

## Install

```bash
npm install
npm run build
```

## Run MCP server (stdio)

```bash
npm run start
```

For local development:

```bash
npm run dev
```

## Optional config: `autodev.config.json`

```json
{
  "projectRoot": ".",
  "storage": {
    "databasePath": ".autodev/logs/autodev.db",
    "screenshotsDir": ".autodev/logs/screenshots"
  },
  "commands": {
    "test": "npm test"
  },
  "browser": {
    "headless": true,
    "timeoutMs": 15000
  },
  "pipeline": {
    "maxIterations": 3
  },
  "compact": {
    "enabled": true,
    "warningThreshold": 0.8,
    "compactThreshold": 1.0,
    "estimatedMaxChars": 120000
  },
  "git": {
    "enabled": true,
    "autoCommitOnFeatureComplete": true,
    "defaultCommitPrefix": "feat",
    "protectSensitiveFiles": true,
    "sensitiveFilePatterns": [
      "(^|/)\\.env(\\..*)?$",
      "(^|/)credentials\\.json$",
      "(^|/)secret(s)?(\\.|$)",
      "(^|/).+\\.pem$",
      "(^|/).+\\.key$"
    ]
  }
}
```

## Tool overview

### CLI track (original)

- `run_tests`
- `generate_tests` (stub)
- `fix_failures` (stub)

### Browser track (new, additional)

- `browser_open`
- `browser_navigate`
- `browser_interact`
- `browser_assert`
- `browser_screenshot`
- `browser_get_console`
- `browser_get_errors`
- `browser_get_network`
- `browser_close`

### Orchestration/query

- `run_pipeline` (CLI first, browser optional)
- `propose_requirements` (always outputs 10 directions)
- `check_compact` (检查上下文占用并给出 none/warn/compact 建议)
- `git_commit_feature`(小功能完成后按策略提交 git)
- `git_status_summary`(查看当前仓库改动状态)
- `test_get_session_logs`
- `test_compare_sessions`

## Example workflow

1. Run original tests:
   - call `run_tests`
2. Start browser session:
   - call `browser_open` with URL
3. Interact and assert:
   - `browser_interact`
   - `browser_assert`
4. Capture screenshot if needed:
   - `browser_screenshot`
5. Close and finalize summary:
   - `browser_close`
6. Query persisted logs:
   - `test_get_session_logs`
7. Generate next-cycle demand directions:
   - `propose_requirements`

`run_pipeline` also includes `suggestedRequirements` in the final output so you can directly pick your next approved requirement.

`run_pipeline` now also returns `compactSuggestion`:

- `none`: 上下文充足,继续执行
- `warn`: 上下文超过预警阈值(默认 80%),建议当前小任务结束后 compact
- `compact`: 上下文达到 compact 阈值(默认 100%),建议立即 compact

`run_pipeline` 现在也会在测试通过后尝试执行 `gitCommit`:

- 若目录是 git 仓库且存在可提交改动,会自动提交
- 若不是 git 仓库,自动跳过并给出原因
- 默认会拦截疑似敏感文件(如 `.env`、`*.pem`、`*.key`)

## 测试日志与截图位置

- SQLite 数据库:`.autodev/logs/autodev.db`
- 截图目录:`.autodev/logs/screenshots`

你可以通过 MCP 工具查看:

- `test_get_session_logs`:按 sessionId 拉取日志、摘要、截图路径
- `test_compare_sessions`:对比两次测试结果

## 评分标准(需求方向)

每条方向的评分由以下字段组成:

- `impact`:影响面(1-10)
- `confidence`:把握度(1-10)
- `effort`:工作量映射分值(S=2, M=5, L=8)

公式:

`priorityScore = (impact × confidence) / effort`

分数越高,优先级越高。

## Notes

- Browser track is explicitly additive and independent from original CLI tests.
- `generate_tests` and `fix_failures` are stubs in this version and intentionally logged for future extension.
- Requirement generation is evidence-based (sessions/logs/assertions/errors) and returns exactly 10 scored directions each cycle (中文输出).