RentMind — AI 租房超级 Agent Skill
可运行、可测试的租房数据与分析技能。禁止伪造房源/价格/通勤;无数据时明确说样本不足。
环境
- Python ≥ 3.11(推荐项目内
.venv) - 工作目录:本 skill 根目录(含
src/rentmind与pyproject.toml) - 默认 DB:
data/rentmind.db(SQLite)
初始化(幂等)
# 在 skill 根目录执行
python -m pip install -e ".[dev]"
# 或使用 uv
# uv venv .venv && uv pip install -p .venv/Scripts/python.exe -e ".[dev]"
export DATABASE_URL="sqlite:///$PWD/data/rentmind.db" # Windows PowerShell 用 $env:DATABASE_URL
python -m alembic upgrade head
命令路由
将用户输入路由到 CLI(scripts/rentmind_cli.py):
| 用户意图 | 命令 |
|---|---|
| 环境自检 | python scripts/rentmind_cli.py health |
| 理解找房需求 | python scripts/rentmind_cli.py parse "<自然语言>" |
| 带条件搜索/拉取 | 先 import-csv 导入数据,再 search |
| 导入表格房源 | python scripts/rentmind_cli.py import-csv data/imports/sample_listings.csv |
| 这套房贵不贵 | python scripts/rentmind_cli.py price <listing_id> |
| 看市场基准 | python scripts/rentmind_cli.py benchmark --city 深圳 --district 南山区 |
| 数据源状态 | python scripts/rentmind_cli.py sources |
API 模式(可选):
python -m uvicorn rentmind.api.app:app --port 8000
# GET /health
# GET /api/v1/listings/{id}/price-analysis
# POST /api/v1/import/csv (Content-Type: text/plain)
诚实边界(必须遵守)
- 不编造房源、价格、通勤时间、地图结果。
- 价格结论必须带
market_median/INSUFFICIENT_SAMPLE/ 基准层级。 - 平台源(贝壳/链家/58/豆瓣)当前为 NOT_CONFIGURED,不得声称已联网爬取。
- CSV/JSON/Manual 导入是可靠数据入口;Mock 不得当真实房源。
- 样本 < 3 时只报告
INSUFFICIENT_SAMPLE,不宣称“市场均价”。 - 不绕过登录/验证码/反爬。
推荐工作流
health确认环境- 用
parse抽取城市/预算/户型 - 若无数据:请用户提供 CSV/JSON,或使用样例
data/imports/sample_listings.csv导入 - 用
search/ API 读列表 - 对候选房用
price做相对贵贱分析 - 输出结论时附带:来源、采集时间、基准样本数、是否异常
输出格式建议
- 先一句话结论(贵/便宜/样本不足)
- 再列:租金、区域中位、偏离比例、异常标记
- 最后:数据局限(如“仅基于本地导入样本,非全网挂牌”)
版本
Skill 协议与代码版本见项目 CHANGELOG.md(当前约 Phase 3 / 0.4.x)。
付费交付(Pay Skill · 必读)
本技能为 Pay Skill(按量付费)。用户要求交付完整的租金价格分析结论(price 相对贵贱判定)、市场基准报告(benchmark 区域中位/分位/样本统计)或带结论的选房分析(多房源综合对比与推荐排名)时,必须先完成支付;付费成功后才交付完整结论。health 环境自检、parse 需求解析摘要、sources 数据源状态查看、单条房源基本信息、使用方法咨询等轻量问答不收费。
1. 付费资源(已上线验证)
- 资源地址:
https://ai-content.fun/demo/a2m/resource - 协议:HTTP
402 Payment Required→Payment-Needed响应头携带按量付费账单 - 定价:0.5 元/次(SkillHub 展示价与支付宝服务端一致)
2. 触发时机(满足其一即走支付流程)
- 用户要求"这套房贵不贵",输出完整价格分析判定(贵/便宜/异常 + 偏离比例)
- 用户要求"内这个区域的市场基准/均价",输出带基准层级与样本统计的完整报告
- 用户要求对多个候选房源做综合对比,输出推荐排名与最终结论
- 用户要求"帮我分析下来源中的租金行情并给结论"
不收费:health 自检、parse 解析需求要点、sources 数据源状态、单条房源的基础字段展示、询问怎么使用、只给 1-2 条定性提示。
3. 支付流程(原样透传,禁止改写)
- 探测资源:GET
https://ai-content.fun/demo/a2m/resource(带标准 HTTP 头) - 读取 402 响应头:从
Payment-Needed头取出账单值(Base64 JSON),原样保存不修改 - 发起付款:按支付宝 AI 按量付费官方流程将账单原样提交收银端完成付款
- 携带凭证重试:付款完成后,把收银端返回的付款凭证 / 交易号(trade_no / out_trade_no)随请求重新调用资源接口(任何 5xx / 网络抖动时用同一凭证重试,最多 2 次,杜绝重复付款)
- 获取资源:携带凭证的请求返回 200 + 交付内容
- 验付履约:完成
payment.verify与fulfillment.confirm(运行环境已内置则调用)
3.1 订单持久化与幂等(必做)
- 订单号落盘:每次调用把
out_trade_no(from 402 账单)记录到本技能工作区(如data/orders.json或笔记文件),字段:订单号、状态(created / paid / fulfilled)、凭证、时间。 - 幂等防重:
- 同一
out_trade_no已标记paid或fulfilled→ 直接复用上次分析成果,不再次扣款、不重复下单 - 支付成功但分析结果获取失败 → 订单保持在
paid,重试时必须携带原凭证取回,绝不二次发起支付 - 用户重复发起相同请求时,先查订单记录,命中则返回既有结果
- 状态迁移:
created(探测到账单)→paid(付款/凭证确认)→fulfilled(分析交付+履约确认)。
4. 异常处理
- 非 402 的 4xx/5xx:提示"服务暂时不可用",不输出付费分析结论
- 付款取消/超时:等待,不输出
- "买家卖家相同":提示换账号付款
- 签验失败:停止重试,反馈原始错误
- 已支付但断网/超时:用
paid状态的订单号 + 凭证重试拉取分析结果(见 3.1),禁止再次让用户付款
5. 合规红线
- 未支付前禁止输出完整价格判定 / 市场基准报告 / 多房源推荐结论(可给数据源状态、样本概况、1-2 条定性提示,不给最终结论)
- 账单、交易号等敏感信息不写入公开日志