这个仓库现在包含两部分内容:
- 一套从
LLM -> Agent -> MCP -> Runtime -> Evaluation -> Production展开的长文型 notebook - 一套最小但真实可运行的本地实现,用来证明这不是只有文稿,没有系统
01-12_*.ipynb- 解释整套系统的原理、结构、案例和工程化路径
server/- 一个最小本地 MCP 风格 server
- 通过 stdio 提供
tools / resources / prompts
runtime/- 本地
Ollama调用层 - MCP client
- 最小 agent runtime
- 本地
examples/- JD 样例
- 候选人资料样例
demo/run_demo.py- 端到端 demo 脚本
server/mcp_server.py 和 server/capabilities.py 现在已经真实暴露了三类能力:
toolsextract_key_requirementsscore_candidate_fitsummarize_section
resourcesproject://prd/mainproject://case/jd_sampleproject://case/candidate_profile
promptsmap_candidate_to_jdanalyze_project_brief
它不是完整 MCP SDK 实现,但已经保留了最关键的边界:
- 能力发现
- resource 读取
- prompt 获取
- tool 调用
runtime/agent_runtime.py 现在已经实现了一个最小闭环:
- 读取 JD resource
- 读取 candidate resource
- 调用要求抽取工具
- 调用匹配评分工具
- 生成最终结构化结果
如果本地 Ollama 可用,模型会参与:
- 下一步动作规划
- 最终结果综合
如果本地模型不可用或输出结构损坏,runtime 会走 fallback 路径,确保:
- resource 链路能验证
- tool 链路能验证
- 状态推进能验证
runtime/ollama_client.py 通过 HTTP 调用本地 Ollama。
默认模型名写的是:
gpt-oss:120b
如果你本地模型名不同,需要自己改 demo/run_demo.py 或 runtime/ollama_client.py 里的默认值。
你本地需要有:
- 已启动的
Ollama - 可用模型,例如
gpt-oss:120b
python -B demo/run_demo.py这个脚本会做的事情不是单纯调一次模型,而是:
- 拉起本地
server/mcp_server.py - Runtime 通过 stdio 连接这个 server
- 读取样例 resource
- 调用本地 tool
- 让模型参与规划和最终综合
- 输出 trace 和最终结果
这套实现现在的定位是:
- 它已经不是纯文稿
- 但它也还不是完整生产级 MCP 系统
更准确地说,它是一个“最小真实闭环”:
- 有真实 server
- 有真实 runtime
- 有真实 resource / tool / prompt
- 有真实 demo
但还没有做重的部分,例如:
- 完整 MCP SDK 接入
- 更复杂的多任务状态治理
- 更严格的权限控制
- 完整测试体系
- 更成熟的错误恢复和评估框架实现
这个仓库想证明的不是“会不会调用 API”,而是:
- 理解大模型为什么会表现出任务性
- 理解 Agent 不等于聊天机器人
- 理解 MCP 不是工具清单,而是能力层
- 知道 runtime 才是系统中枢
- 能把这些理解真正落成一个最小可运行原型
如果后面继续扩,这个仓库最自然的方向是:
- 把当前最小 MCP 风格 server 换成正式 MCP SDK 实现
- 增加更多资源���工具和 prompt
- 把 demo 提升成更完整的案例与评估链
- 补测试、trace 和版本治理