简体中文 | English
DSH (DeepSeek Harness) 插件。在真实三维城市地图上点任意位置,立刻得到这个点的选址分析—— 把要求用大白话说给 DSH,它按同一套模型批量找位置、写进名单;看中哪个位置,再把那里在租的铺收进来;踩点后回填,右侧对话全程读得懂你选中的是哪个点。
- 点哪算哪 — 地图上任意位置毫秒级出分析:三个维度分、每项指标的百分位、风险提示、客群构成
- 按业态打分 — 开咖啡店和开药店,同一个点分数不一样:以本市同业态已开门店的位置分布为基线
- 说人话找位置 — 「地铁 200 米内、餐饮多、同类店别超过 3 家,找 10 个」,DSH 翻成查询跑同一份数据
- 两级清单:位置 → 铺源 — 先判断位置行不行,再看那里有什么铺可租。铺源收进来自动挂在最近的位置下,地图、列表、详情都用铺源自己的棕黄色,不和位置混淆
- 铺源图层 — 一键在地图上叠加在租铺源,标签就是租金(元/㎡/天);点开位置详情自动列出 400m 内的铺
- 候选清单 — 所有点位的每项指标并排,按分排序,点行在地图上定位
- 三维城市底图 — 真实路网、用地、建筑轮廓与高度,自绘 canvas,不用瓦片、不用 Key、离线可跑
- 踩点闭环 — 待看 → 看过 → 上会中 → 签约 / 否决,每一步在列表里一键推进;定案有记录、能撤回
- 换城市一条命令 —
fetch-city.mjs建好数据集,重启即可用,不改代码
需要 Node ≥ 20 和 DSH Desktop。
直接装(macOS,DSH 插件目录):
cd ~/Library/Application\ Support/dsh-desktop/harness/profiles/web
npm install "github:dataelement/dsh-site-selection"要改代码的话 clone 下来再 link 进去:
git clone https://github.com/dataelement/dsh-site-selection.git
cd dsh-site-selection
npm run check # 57 个测试
cd ~/Library/Application\ Support/dsh-desktop/harness/profiles/web
npm install "link:<刚才 clone 的绝对路径>"重启 DSH,侧边栏底部出现 ◎ 选址工作台。
打开工作台 → 项目下拉 → 选一个示例:
| 示例 | 场景 | 候选点位 |
|---|---|---|
| 主理人咖啡厅 · 静安 | 在上海静安—南京西路开第一家主理人咖啡厅 | 5 个,82 → 31 分 |
| 去茶山 · 北京朝阳 | 茶饮品牌进京,朝阳区先开 3 家 | 5 个,76 → 27 分 |
示例里的点位都是真实商业地址,由工作台自己的模型从城市数据里选出来、拉开分差;面积租金等只有谈了才知道的字段留空,不编。
然后在地图上随便点一个位置,或者直接跟右侧 DSH 说:
帮我找地铁 200 米以内、周边餐饮多、但同类茶饮店别超过 3 家的位置,找 10 个
它把要求翻成查询表达式,用工作台同一套模型和数据去查,念给你听,你认可后才写进名单;找到位置之后顺手把附近在租的铺也一起报给你。
看中某个位置,点开它,下面就列着 400m 内在租的铺,点「收进」即挂到这个位置下面。 踩完点说「A、C 我去看过了,pass」,它改状态、记原话,后续查询自动排除。
每个点位只有四步:待看 → 看过 → 上会中 → 已签约 / 已否决。新点位一进来就是待看,没有「初筛」这种没人操作的中间态。
- 在列表里推进 — 鼠标放到一行上,右侧浮出「看过了 / 上会 / 去定案」和退一步的「‹」,不用打开详情
- 一眼看出在哪一步 — 行上用彩色标签标出 看过 / 上会中 / 已签约 / 已否决,已否决连理由一起写在行里;筛选栏按 待看 / 看过 / 上会 / 定案 分开
- 去定案有引导 — 点「去定案」会展开右侧详情、滚到底部的定案区并高亮,签约或否决就在那两个按钮
- 定案有记录 — 已定案的点位,名字下方一条红 / 绿横幅写明结论、日期和理由;底部定案区是完整记录卡(时间、理由标签、说明);「记录」页里也有一笔
- 能反悔 — 记录卡下的「撤回定案,退回上会中」(或列表行上的「‹」)把点位退回去,定案记录随之清掉,活动记录里保留撤回这一笔
- 否决必须有理由 — 签约 / 否决只能走定案流程,直接改状态改不到已签约
详情面板底部的四个按钮把当前点位(坐标、面积租金、百分位、风险、踩点记录)连同你的要求一起填进右侧对话框,确认后回车即可:
| 按钮 | 用途 |
|---|---|
| 查商圈信息 | 让 DSH 查工作台看不到的公开信息:在建项目、地铁规划、大型客流源、地方性限制 |
| 生成材料 | 生成一页上会材料初稿,先在对话里给你看,确认后再落盘 |
| 带上这个点位发过去 | 带上点位上下文问任意问题 |
| 解析铺源(顶栏) | 把中介 / 房东发来的一段文字解析成结构化点位追加进名单 |
没选中点位也能发:会带上基线和整份名单,「找 10 个 80 分以上的位置」这种要求不需要先点谁。
基线随业态变。 项目设了业态(咖啡、茶饮、正餐、快餐、烘焙、便利店、药店……共 25 种),就以本市已开的同业态门店位置为尺子,拿候选点和它们比百分位。
同业态样本不足 80 家的城市退回全零售基线,界面会说明。
OSM 对部分业态覆盖太薄时,thicken-formats.mjs 按真实门店的选址特征在真实商业地址里取样补足;真实门店少于 8 家的业态不扩样。
分三个维度,先各自算百分位平均,再把三个维度平均:
| 维度 | 指标 |
|---|---|
| 客流基础 | 500m 建筑面积、500m 餐饮、最近商场 |
| 可达性 | 最近地铁口、300m 公交站、150m 过街设施、300m 停车场 |
| 位置质量 | 120m 内道路数、500m 街道总长 |
同业竞争和客群结构照常显示但不计分——它们没有「越高越好」的方向。 无排烟 / 办不出食品经营许可 / 无独立上下水,命中任一条直接判「不建议」。
分数是排名不是绝对好坏,每项都摊开给你看原始值、在基线里排第几、基线中位数。
| 层 | 说明 | |
|---|---|---|
| POI、路网、建筑、楼面面积 | 真实 | OpenStreetMap |
| 评分、百分位、基线 | 真实 | 完全由上面那层算出 |
| 铺源、租金、客流、商场档次 | 模拟 | *-market.json,程序生成 |
模拟层演示的是接口契约:字段口径对齐国内数据商实际售卖的内容(文件里 vendors 写明现实中向谁买),
买到真数据后按同一 schema 灌进来,上层代码不用动。
模拟数据永远不进分数,有单测守着。整个数据集作为演示夹具,标记只在选择数据集处出现一次。
自带北京、上海、广州。换城市不用改代码:
node scripts/fetch-city.mjs --id shenzhen-futian \
--label "深圳 · 福田区" --bbox 113.90,22.50,114.10,22.60从 Overpass 抓 POI、路网、建筑、楼面面积、公交/停车/过街,写进 src/data/。
重启 DSH,新城市自动出现在建项目的下拉里。
Overpass 是免费服务,一个城区要跑一阵子。中断了重跑同一条命令即可续传。
| 北京 · 五环内 | 上海 · 外环内 | 广州 · 主城区 | |
|---|---|---|---|
| POI | 48896 | 58942 | 26011 |
| 路网 | 35421 条 | 29864 条 | 22213 条 |
| 三维建筑 | 3011 栋(最高 528m) | 4459 栋(最高 632m) | 4195 栋(最高 440m) |
| 模拟铺源 | 2700 | 1900 | 1300 |
项目文件落在 ~/Documents/DSH 选址项目/<项目名>/,可用 DSH_SITE_SELECTION_ROOT 改。
删除项目只是移到同目录的 .trash/,不会真删。
DSH 通过项目文件夹里的 CONTEXT.md 读懂结构,再用这几个脚本干活:
node scripts/query-sites.mjs --where "..." --limit 10 # 按条件找位置
node scripts/query-listings.mjs --near-sites --radius 400 # 每个位置附近的在租铺源
node scripts/query-listings.mjs --adopt lst-0123 # 把一间铺收进清单,字段自动带入- 顶级商场未必在 OSM 里(如上海恒隆、兴业太古汇),那一带租金会偏低
- 「路网交汇度」用 120m 半径,说的是有几条路在附近汇合,不等于这个铺是拐角位
- 三里屯这类靠品牌聚集吸客的商圈会被低估,现有特征抓不到
- OSM 的 POI 覆盖不如商业地图,要门牌号级搜索和路径规划得接持牌服务商
npm run check # 语法 + 57 个单测
npm run sample # 重新生成两个示例项目
npm run fetch-city # 加城市
npm run market # 重新生成模拟商业数据代码 MIT(LICENSE)。
src/data/ 下的地理数据是 OpenStreetMap 衍生数据库,ODbL 1.0,具有传染性——
© OpenStreetMap contributors。对外分发或商业化前请读 DATA-LICENSE.md。