智能租房助手 · 有坑必防
把「刷平台、记条件、算通勤、怕踩坑」这些事,交给手机里的 AI 助手和你一起完成。
RentSmart AI 是一款用 AI 重构租房决策流程的移动端工具——从信息采集、智能筛选到风险预警,帮租房者把精力留给真正值得关注的那几套房。
| 痛点 | 现状 |
|---|---|
| 信息过载 | 多平台来回切换,数百条房源靠手动翻页和记忆 |
| 决策成本高 | 价格、通勤、户型无法一次对齐,对比全靠脑记 |
| 踩坑风险 | 中介话术、合同陷阱、虚假房源,缺乏专业判断 |
| 工具割裂 | 看房、算通勤、查法律分散在不同 App |
一次搜索覆盖 贝壳、安居客、链家 三大平台,DeepSeek 自动评分与简评,不用一个个 App 去翻。
用自然语言描述需求,助手会 先确认理解是否一致,再检索匹配房源。采用 Function Calling Agent 架构,可自主调度查房源、算通勤、搜法律等工具。
对重点关注的房源生成深度报告。GLM-4V 多模态模型辅助看图分析,检测话术陷阱与虚假信息,还能自动生成砍价话术。
最多 5 套候选房横向 PK,集成 高德地图 实时通勤规划,价格与距离不再分开看。
内置租房法律语料,端侧向量检索做语义匹配,大模型基于检索结果生成回答——有据可依,而非空口编造。
所有数据存储在本机 AsyncStorage,无需注册账号,保护隐私,打开即用。
![]() 首页 |
![]() 找房 |
![]() 房源详情 |
![]() AI 助手 |
![]() 房源对比 |
![]() 设置 |
为什么让 AI 先"对齐"再找房? 用户描述需求时往往模糊,直接检索容易返回不匹配的结果。让助手先复述需求并请用户确认,减少一轮无效交互。
初筛 + 精筛的两层漏斗 免费的 DeepSeek 做批量评分(初筛),只有用户真正感兴趣的房源才调用多模态模型深度分析(精筛)。兼顾覆盖率和成本。
法律知识为什么用 RAG? 租房法律涉及《民法典》具体条款,大模型直接回答容易编造细节。RAG 路径先检索条文再生成回答,确保有据可依。
Agent 架构而非固定流程 采用 Function Calling Agent,助手可自主决定调用哪个工具,让对话体验更自然灵活,也更容易扩展新能力。
| 方向 | 技术 |
|---|---|
| 方向 | 技术 |
| :--- | :--- |
| 跨端应用 | React Native (Expo) for Web,路由 expo-router,仅输出移动端 H5 |
| 对话与工具调用 | DeepSeek Function Calling Agent |
| 深度视觉分析 | 智谱 GLM-4V 多模态模型 |
| 法律知识 | 关键词检索(H5 不加载端侧向量模型,避免 ~25MB WASM 下载) |
| 地图与通勤 | 高德地图 JS / REST API |
| 平台抓取 | WebView 降级为 iframe:同源 srcDoc(地图选点)可注入脚本;跨域页面仅展示 |
| 数据存储 | localStorage(Safari 隐私模式自动降级为内存) |
- 房源数据依赖对平台页面的扫描,受各平台展示规则影响
- AI 与地图功能需配置对应 API Key(应用内可配置)
- 所有内容仅供学习与决策参考,不构成法律意见
RentSmart AI 不隶属于安居客、贝壳找房或其他房产平台,为独立工具项目。请遵守各平台用户协议与当地法律法规。
Made with care · 一个产品经理的独立作品
本项目已适配为 纯移动端 H5:原生 App(iOS / Android)分支已移除,统一以浏览器运行, 核心 API(选图 / 定位 / 剪贴板 / 外链)改为浏览器原生能力实现,第三方接口经同源反代绕过跨域限制。
h5-server.mjs 本地服务:dev 反代 Expo Metro + /__cors 反代;serve 静态托管 dist/
scripts/patch-h5-html.mjs 构建后给 dist 内 HTML 注入移动端 viewport / 全局样式
app/lib/platform/ 平台能力统一层(H5 实现)
index.ts / impl.ts 选图·定位·剪贴板·外链
http.ts fetch 封装:跨域自动走 /__cors
kv.ts localStorage 封装(接口对齐 AsyncStorage)
h5-shell.ts 运行时注入视口/主题色/安全区样式
app/components/WebViewCompat.tsx iframe 版 WebView
scraper/server.py 房源抓取后端(Python,需独立启动)
# 1. 安装依赖
npm install
# 2. 配置环境变量(复制 .env.example 按需修改)
# EXPO_PUBLIC_DEEPSEEK_API_KEY / EXPO_PUBLIC_API_KEY_ZHIPU 等
# EXPO_PUBLIC_SCRAPER_URL 指向抓取后端,默认 http://127.0.0.1:8765
# 3. 启动 H5(开发模式:自动拉起 Expo Metro Web,并反代到 8080)
npm run h5
# 浏览器打开 http://localhost:8080
# 手机同局域网访问:http://<你电脑的局域网IP>:8080 (需 https 才能用定位)
# 4. 构建静态产物并托管
npm run h5:build # expo export --platform web + 注入移动端 meta
npm run h5:serve # 用 h5-server.mjs 托管 dist/ 于 8080浏览器同源策略会拦截高德 / DeepSeek / 智谱等第三方接口。app/lib/platform/http.ts 会把绝对跨域
请求改写成同源的 /__cors?u=<原始URL>,由 h5-server.mjs 转发。白名单见 h5-server.mjs 的
ALLOWED_HOSTS(可用环境变量 H5_ALLOW_HOSTS 追加)。
// 业务代码统一使用 httpFetch,跨域会被自动代理
import { httpFetch } from '@/lib/platform/http';
const res = await httpFetch('https://restapi.amap.com/v3/...');房源抓取依赖独立的 Python 服务 scraper/server.py(Flask)。H5 通过 EXPO_PUBLIC_SCRAPER_URL
访问它:
- 本机调试:
http://127.0.0.1:8765(已在白名单,反代放行) - 手机访问:需把该变量设为电脑局域网 IP,例如
http://192.168.1.10:8765
启动后端:
cd scraper && python server.py| 能力 | 原生实现(已移除) | H5 实现 |
|---|---|---|
| 选图 | expo-image-picker | <input type="file"> + FileReader(base64) |
| 定位 | expo-location | navigator.geolocation(需 HTTPS) |
| 剪贴板 | Clipboard | navigator.clipboard / execCommand |
| 打开外链 | Linking | window.open |
| 房源页抓取 | react-native-webview 注入 | iframe 同源 srcDoc 可注入;跨域仅展示 |
- 定位需要 HTTPS:
navigator.geolocation在非安全上下文被禁用,内网/局域网手机调试需配 HTTPS 反代。 - iframe 跨域注入限制:房源站点的跨域页面无法注入脚本读取 DOM,
WebViewCompat会给出降级提示, 深度抓取依赖后端scraper/server.py完成。 - RAG 关键词检索:H5 不加载
@xenova/transformers向量模型,法律知识库走关键词匹配,语义精度低于端侧向量检索。 - 移动端 H5 体积:首屏 JS 约 2–3MB(gzip 后约 800KB 量级),字体/图标按需加载。
EXPO_PUBLIC_DEEPSEEK_API_KEY=sk-xxx
EXPO_PUBLIC_API_KEY_ZHIPU=xxx
EXPO_PUBLIC_AMAP_WEB_KEY=xxx # 高德 JS API key(地图选点)
EXPO_PUBLIC_AMAP_REST_KEY=xxx # 高德 REST key
EXPO_PUBLIC_SCRAPER_URL=http://127.0.0.1:8765
H5_ALLOW_HOSTS= # 额外放行的反代域名,逗号分隔
PORT=8080 # h5-server 对外端口
EXPO_PORT=8081 # Expo Metro Web 端口
原 RentSmart 是一个独立的 Vue H5(专注「退押金纠纷」全流程),其框架无关的纯逻辑引擎已整合进本项目,
作为本应用的第 7 项核心能力(租房法律维权的落地工具)。Vue 专属的 store / router / view 未迁移(技术栈不兼容,不可直接复用)。
我的设置 → 维权工具 → 退押金纠纷助手(路由 /deposit-dispute)。
- 押金结算引擎:应退金额 = 押金 − 扣款合计 + 补偿合计;扣款项须填依据并关联证据,否则提示不合规。
- 违约金合理性校验:依《民法典》第五百八十五条,超过月租 30% 或金额过大时提示可调减。
- 诉讼时效计算:依《民法典》第一百八十八条(普通时效 3 年),临期/届满强提醒。
- 家电折旧 / 自然磨损抗辩:直线法折旧,给出赔付上限与「推定自然老化」结论。
- 风险规则引擎:覆盖《退押金纠纷场景清单》P0 场景(现金无收据、定金/押金混淆、二房东跑路、扣款无证据、先交钥匙后退押金等)。
- 维权文书生成:退押金催告函(中断时效)、12345/消协/住建/小额诉讼投诉起诉文本。
- 证据包导出:结算单 HTML(可另存为 PDF)+ 证据清单 CSV + 文书 + 原始数据 + 验真清单,打包为 ZIP。
- 全部数据仅存本机 localStorage,不上传服务器。
app/lib/refund-dispute/
index.ts 统一导出
types.ts 领域模型(MoveOutCase 等)
settlement.ts 押金结算引擎
penalty.ts 违约金 / 诉讼时效
depreciation.ts 折旧折算
riskRules.ts 风险规则引擎
legalTemplates.ts 维权文书模板
exportPack.ts 证据包导出(HTML/CSV/JSON/ZIP)
format.ts 金额 / 中文大写 / 日期
hash.ts 证据摘要(SHA-256,降级 FNV-1a)
watermark.ts 图片水印与验真
__tests__/ 引擎单测(vitest,纯逻辑:depreciation/settlement/riskRules/penalty/templates/exportPack)
app/deposit-dispute.tsx H5 页面(复用上述引擎)
docs/refund-dispute/需求文档.mddocs/refund-dispute/退押金纠纷场景清单.mddocs/refund-dispute/测试用例集.mddocs/refund-dispute/测试报告.md
npm i -D vitest jsdom
npx vitest run app/lib/refund-dispute/__tests__(测试覆盖折旧、结算、风险规则、违约金、文书模板、证据包等纯逻辑;Dexie/pinia 专属测试未迁移。)





