内容
<div align="center">
<img src="docs/assets/erga-logo.svg" width="720" alt="Erga" />
<p>
<a href="https://github.com/Adr1an04/erga-mcp/actions/workflows/ci.yml"><img src="https://github.com/Adr1an04/erga-mcp/actions/workflows/ci.yml/badge.svg" alt="持续集成" /></a>
<a href="https://www.python.org/"><img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&logoColor=white" alt="Python 3.11+" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-C8792A.svg" alt="MIT 许可证" /></a>
<img src="https://img.shields.io/badge/状态-预--Alpha-F2A93B.svg" alt="预 Alpha" />
</p>
<p>
<a href="#快速开始">快速开始</a> ·
<a href="#Erga 工作原理">工作原理</a> ·
<a href="docs/getting-started.md">文档</a> ·
<a href="CONTRIBUTING.md">贡献</a>
</p>
</div>
---
招聘对学生和全职工程师来说很困难。申请堆积如山,职位描述会消失,招聘人员的更新消息会被埋在你的收件箱里,每个职位要求一份略有不同的简历。
Erga 帮助你保持这一切有序。它跟踪你的申请,保存重要的职位信息和招聘人员更新,并为每个职位准备一份量身定制的简历。它围绕 LaTeX 简历工作流程构建,并设计为与 [Jake's Resume](https://www.overleaf.com/latex/templates/jakes-resume/syzfjbzwjncs) 等模板无缝协作。你的原始简历保持不变;Erga 创建一个单独的 `.tex` 文件,一个可读的差异和一个 PDF,供你审阅。
你可以直接从命令行使用 Erga,也可以将其连接到像 Hermes 这样的 MCP 客户端。其申请记录和生成的文件保留在你的计算机上。
> [!IMPORTANT]
> Erga 组织流程,但不提交申请、不发送消息、不编造简历声明、不修改你的收件箱或覆盖你的原始简历。
## Erga 功能
- 在一个本地数据库中保留你的申请和状态历史。
- 保存职位发布信息,以免它们消失。
- 为每个职位创建单独的文件夹和量身定制的简历。
- 重新排序现有的简历要点、项目和技能,以更好地匹配职位描述。
- 编译结果为 PDF,并准确显示更改内容。
- 读取有限的 Gmail 或 Zoho 元数据,以识别面试、评估、录用通知和拒绝通知。
- 从命令行或 MCP 客户端使用相同的工具。
Erga 不会填写表格或提交申请。简历定制仅使用您模板中已有的内容或您自己添加的事实。
## 快速开始
### 要求
- Python 3.11 或更高版本
- [`uv`](https://docs.astral.sh/uv/)
- Git
可选工作流程使用 `latexmk`、现有的 LaTeX 简历、支持的操作系统凭证存储或经过身份验证的 [`gws`](https://github.com/googleworkspace/cli) 命令。
### 安装
```bash
git clone https://github.com/Adr1an04/erga-mcp.git
cd erga-mcp
uv sync --extra mcp
```
初始化私有本地工作区并验证安装:
```bash
uv run erga init
uv run erga doctor
```
默认情况下,Erga 会创建:
```text
~/.config/erga-mcp/
├── config.toml
└── state/
└── erga.sqlite3
```
配置文件包含路径和功能设置,但不包含凭证。使用 `--config /absolute/path/to/config.toml` 选择其他位置。
### 添加证据和草稿申请
```bash
uv run erga evidence add \
--source-ref 'Career.md#Pipeline project' \
--text '构建了一个 Python 管道,减少了 30% 的每周人工审核。' \
--approved
```
使用返回的证据 ID 创建本地草稿:
```bash
uv run erga applications add \
--company '示例公司' \
--role '软件工程师' \
--source-url 'https://jobs.example.com/123' \
--evidence-id 'ev_a1b2...'
```
不会将任何信息发送给雇主。通过以下方式检查本地状态:
```bash
uv run erga status
uv run erga applications list
```
有关简历设置、邮件连接器、职位链接路由和计划的私人提醒,请继续阅读 [完整的快速入门指南](docs/getting-started.md)。
## MCP 和 Hermes
安装可选的 MCP 依赖项,然后注册本地_stdio 服务器:
```bash
uv sync --extra mcp
hermes mcp add erga-mcp \
--command uv \
--connect-timeout 30 \
--env ERGA_MCP_CONFIG=/absolute/path/to/config.toml \
--args --directory /absolute/path/to/erga-mcp run erga-mcp
```
`--args` 必须位于最后。如果网关通过命名的 Hermes 配置文件路由聊天,请在 MCP 和插件命令中添加相同的配置文件标志(例如,`hermes --profile coder mcp add ...`)。请参阅 [`integrations/hermes/mcp.example.yaml`](integrations/hermes/mcp.example.yaml) 以获取等效的配置文件。
核心 MCP 工具包括:
| 工具 | 行为 |
| --- | --- |
| `pipeline_status` | 读取本地记录计数 |
| `list_applications` | 读取本地申请记录 |
| `list_evidence` | 读取本地证据记录 |
| `list_mail_events` | 读取规范的本地邮件事件 |
| `intake_job_url` | 研究一个职位并从头到尾构建本地审查工件 |
| `prepare_job_workspace` | 从提供的 URL 创建一个有界限的本地工作包 |
| `create_tailored_resume` | 创建提案、差异和证据报告 |
| `validate_tailored_resume` | 运行配置的本地 LaTeX 编译器 |
| `install_mail_monitor_scripts` | 准备确定性的 Hermes 通知运行器 |
| `export_data` | 构建本地记录和生成包的私有 ZIP |
完整的权限和安全限制列表在 [`docs/security.md`](docs/security.md) 中。
## 仓库地图
```text
src/erga_mcp/ 确定性领域层、CLI 和 MCP 服务器
integrations/hermes/ 可选的 Hermes 配置和路由器插件
skills/productivity/ 可选的工作流技能
cron/ 私有通知运行器文档
docs/ 架构、安全、设置和项目方向
tests/ 合成单元和 MCP 集成测试
```
## 文档
- [`docs/getting-started.md`](docs/getting-started.md) — 完整的设置。
- [`docs/security.md`](docs/security.md) — 权限和安全详细信息。
- [`docs/FUTURE.md`](docs/FUTURE.md) — 后续的想法。
- [`CONTRIBUTING.md`](CONTRIBUTING.md) — 如何运行检查和贡献。
## 项目状态
Erga MCP 处于 **预 Alpha** 状态。证据账本、本地申请商店、确定性邮件分类、职位工作区创建、LaTeX 提案工件、只读邮件连接器和 MCP 接口已实现并测试。 在 1.0 之前,预计会有破坏性更改。
当前限制:
- 没有图形界面;
- 没有邮件事件和申请记录之间的自动匹配;
- 导入的 Obsidian 候选人无法通过 CLI 批准;
- 相关性排名是词法排名而不是语义排名;
- 简历工作流程目前针对 LaTeX;以及
- 由于设计原因,没有远程简历同步或自动职位提交。
## 开发
```bash
uv sync --extra mcp --extra dev
uv run ruff format --check .
uv run ruff check .
uv run mypy src
uv run python -m unittest discover -s tests -v
uv build
git diff --check
```
测试和示例使用合成数据。永远不要提交真正的简历、申请、电子邮件内容、凭证、联系信息、导出或保险库内容。
## 贡献
问题和拉取请求欢迎。阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md),遵循 [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md),并使用 [`SECURITY.md`](SECURITY.md) 中描述的私有漏洞报告。
## 许可证
Erga MCP 在 [MIT 许可证](LICENSE) 下可用。