了解类似 Uber 的平台如何通过流动性、动态定价与调度协调来平衡供需,使城市出行变得更像可编程的系统。

城市不是软件——但当一个平台能感知发生了什么、应用规则并从结果中学习时,城市运行的部分就可以被当作软件来对待。
从这个意义上说,“可编程”并不等于控制城市,而是指在其上运行一个持续更新的协调层。
一个可编程网络是一个系统,其中:
Uber 是一个明确的例子,因为它不断将凌乱的城市现实转成机器可读的信号,做出成千上万次的小决策,然后随着新信号到来更新这些决策。
协调困难是因为“输入”不稳定且部分由人决定。
交通可能在几分钟内从通畅变为拥堵。天气改变需求和行驶速度。演唱会、体育赛事、地铁延误和封路会产生突发高峰。而人并不像传感器——他们会对价格、等待时间、激励和习惯做出反应。
因此挑战不仅是预测会发生什么;还要反应得足够快,同时保证反应本身不会制造新的问题。
当人们说 Uber 在“编程”城市时,通常指它用三把调节杆让市场保持运转:
这些要素把分散的个人选择转化为协调的流动。
本文侧重于概念与机制:关于流动性、动态定价、匹配与反馈回路的基本逻辑。
不会描述专有代码、精确公式或任何内部实现细节。相反,请把它当作理解平台如何在城市规模上协调现实服务的可复用模型。
与其说 Uber 是“一款打车应用”,不如说它是一个双边市场,协调两个目标不同的群体:想要即时出行的乘客和希望获得可观且可预测收入的司机。平台的工作是把成千上万次分散的选择——请求、接单、等待、取消——转成稳定的已完成行程流。
对大多数乘客而言,体验并不由车辆本身定义,而是由他们多快被匹配以及上车是否可靠来定义。上车时间和可靠性(不被放鸽子、ETA 不会频繁跳动)是实际的“产品”。
这就是为什么流动性重要:当足够多的可用司机接近足够多的乘客时,系统能迅速匹配,保持 ETA 稳定,并减少取消。
每一次匹配都是在互相竞争的结果间的平衡:
为管理这些权衡,平台会关注一组指标,这些指标表征健康状况:
当这些指标变化时,通常不是单一问题,而是跨市场双方的一连串反应。
在类 Uber 的市场中,流动性可以简单定义为:在大多数时候有足够近的供给满足需求。不是“城市里有很多司机”,而是司机足够接近,使乘客下单后能迅速获得可靠匹配。
当流动性下降,症状会立即显现:
这些并非独立问题——它们是同一短缺的不同面向:在关键半径内没有足够可用车辆。
一座城市即使总体司机众多,如果分布过于分散仍会感觉“干涸”。流动性是超本地化的:按街区和分钟变化。
演唱会在 22:17 散场所形成的市场,与两条街之外 22:19 的市场不同。雨中的一个路口不同于干燥时分。哪怕一处施工封闭也能改变供给聚集与消失的地点。
这就是为什么密度比规模更重要:每增加一英里距离都会带来等候时间、不确定性和取消的概率。
当乘客相信“车辆会出现”时,他们会更频繁、更广泛地下单。稳定的需求使司机更容易预测收入并保持在线。更多稳定供给又进一步提升可靠性。
流动性不仅是结果——它是塑造双方行为的信号,使他们持续使用平台。
平台下游的一切行为——定价、匹配、ETA——都依赖于一张持续更新的当前图景:把杂乱的街道转为系统可行动的输入的活地图。
在实际操作层面,状态由许多小信号构成:
反应是直接的:某一区域出现请求突增,系统随之响应。
但更有价值的是预测——在供需过度分离之前预测它们会在哪儿出现。这可能意味着预判演唱会散场、降雨或通勤高峰的结束。预测有助于避免“追着问题跑”,即司机到达时高峰已过去。
尽管标称“实时”,决策通常以批次方式进行:
真实街道产生的是杂乱数据。城市峡谷中的 GPS 会漂移,更新可能迟到,某些信号在手机断网时完全丢失。数据层的重要工作之一是检测并修正这些问题,避免后续决策基于幽灵位置、陈旧位置或误导性的速度。
如果你想了解这些信号如何影响后续步骤,请继续阅读 /blog/dynamic-pricing-balancing-supply-and-demand。
动态定价(常称为高峰定价)最好被理解为一种平衡工具。它并不是主要用来“多收钱”;而是在市场失衡时 платформы 可以旋转的控制旋钮。
一个叫车市场的简单问题是:人们成群地在某些时刻请求,而可用司机在任何时刻都分布不均且有限。系统的目标是减少过剩需求(过多乘客同时请求)并吸引或留住供给(在正确区域有足够愿意可用的司机)。
当价格快速调整时,平台试图同时影响两种决策:
可以这样想:
这种行为可以在分钟级别发生,因为条件本身也在分钟级别变化:演出散场、雨开始、列车延误、片区突然空荡。
既然定价直接影响人,动态定价通常需要护栏。原则上这些可以包括:
重要的一点是:动态定价是一个行为信号。它是保持市场可用性的机制——在城市供需短暂失配时,让接驾成为可能并防止等待时间失控。
打车平台的定价不仅仅是“忙时高,空时低”。算法的目标是让市场保持工作状态:有足够乘客下单、足够司机接单,并且行程以可预测的等待时间发生。
准确性很重要,因为错误的代价是不对称的。如果系统定价过高,乘客会放弃或推迟出行,平台看起来像在趁火打劫。如果在高峰时定价过低,请求会涌入超过司机能服务的速度——ETA 上升、取消增加,司机可能流失因为机会感降低。无论哪种情况,可靠性都会受损。
大多数定价系统结合若干信号来估计近期状况:
目标不是精确预测未来,而是在当下塑造行为——把足够多的司机引到繁忙区,并在服务无法保证时抑制低概率请求。
即使需求变化很快,定价也不能剧烈波动,否则会损害信心。平滑技术(例如渐进调整、上限和时间窗口平均)有助于防止因微小数据变化引起的突然跳变,同时在真正由事件驱动的冲击发生时允许更快响应。
因为乘客和司机行为敏感,平台通常依赖精心设计的实验(比如受控 A/B 测试)来调优结果——在不假设存在“完美”价格的前提下平衡转化、接单、取消与等待时间。
调度是市场变成移动的那一刻:系统决定哪个司机去接哪个乘客,以及在那之后的最佳操作是什么。
在任一时刻,附近有很多司机和乘客的可能配对。调度与匹配就是选择一个当前配对的过程——要知道这个选择会改变下一分钟的可能性。
这不仅仅是“最近的司机接单”。平台可能会考虑谁能最快到达、谁最有可能接受,以及该分配如何影响该区域的拥堵。当拼车可用时,还要决定两位乘客是否能在不破坏承诺的前提下共享一辆车。
一个常见目标是最小化接驾时间,同时保持整体系统健康。“健康”包括乘客体验(短等候、可靠 ETA)、司机体验(稳定收入、合理空驶)和公平(避免某些社区或乘客群长期得到较差服务)。
调度决策受现实规则限制:
每次匹配都会移动供给。把司机派往北边 6 分钟接客也许能改善该乘客的等待,但同时把南边的供给移走,会提高未来的 ETA,并可能触发更多的重新定位。调度因此是一个持续的协调问题:成千上万个小选择共同决定车辆在哪里、乘客会看到什么以及市场的流动性如何随时间变化。
Uber 的核心承诺不仅是“会有车到达”——而是多久、多少可预测性、行程多顺畅。物流协调是试图让这一承诺在街道、天气、活动与人类选择不断变化时仍然可靠的层。
ETA 本身就是产品的一部分:乘客基于它决定是否下单(或取消),司机基于它判断行程是否值得接。为估算到达与行程时间,系统将地图数据与实时信号结合——路段最近的交通速度、按时段的典型慢点,以及当前发生的事情(施工、事故或体育场散场)。
路径规划由此得出:它并不总是“最短距离”,而是“最快预期时间”,并随条件变化而更新。当 ETA 变差时,平台可能调整接驾点、建议替代路线或更新双方预期。
即使路径规划良好,供给仍需接近需求。重新定位就是司机出于选择向更可能出现请求的区域移动。平台通过不止提高车费来鼓励这一点:热力图显示繁忙区、指引如“前往市中心”、机场或场馆排队系统,以及在指定待命区等待可获得优先规则等。
协调也有反馈问题:当许多司机跟随同一信号移动时,他们会增加交通并降低接驾可靠性。平台对城市反应(交通减慢 ETA),城市又因司机移动而反应(交通变化)。这种双向循环说明路径规划与重新定位信号必须持续调整——不仅是追逐需求,还要避免制造新的瓶颈。
Uber 不只是一次性地把乘客与司机匹配——它在不断塑造行为。小的改进(或失败)会累积,因为每次行程都会影响人们下一步的选择。
当上车时间短且价格感受可预测时,乘客更常下单。稳定的需求使开车更有吸引力:司机可以保持忙碌、收入稳定并减少等待时间。\n 更多在正确地点的司机会降低 ETA 并减少取消,从而再次提升乘客体验。简言之:更好服务 → 更多乘客 → 更多司机 → 更好服务。这就是城市“进入”健康状态并让市场感觉轻松自如的方式。
同样的累积效应在反方向也会发生。如果乘客多次遭遇取消或长等待,他们会失去对应用的信任,不再用于时间敏感的出行。他们会减少请求或同时打开多个平台。
较低的请求量降低司机收入可预测性,一些司机会下线或转向更繁忙地区。供给萎缩让 ETA 更差,导致更多取消——取消 → 不信任 → 更少请求 → 更低流动性。
几次完美的服务瞬间无济于事,如果典型体验不一致。人们会基于可预期的体验做计划。稳定的 ETA 和更少的“可能会发生/可能不会发生”的结果(例如临时取消)会形成习惯,而习惯才是保持双方回归的关键。
有些区域会陷入局部最小值:供给少导致等待长,乘客因此停止下单,使该区域对司机更不具吸引力。没有外部推动——定向激励、更聪明的重新定位或定价引导——即使附近区域繁荣,该社区仍可能陷于长期低流动状态。
大多数时候,叫车市场表现可预期:需求起落、司机向繁忙区移动、ETA 在熟悉范围内。但“边缘情况”是这些模式破裂的时刻——常常发生得很突然——系统必须在嘈杂、不完整的输入下做决策。
活动高峰(演唱会、体育场散场)、天气冲击与大范围封路会同时造成同步需求与上下车变慢。应用故障或支付失败则不同:它们不仅改变需求,还中断平台用于“观察”城市的反馈通道。即便是小问题(市中心 GPS 漂移、地铁延误把乘客冲出来到街上)在大量用户同时遭遇时也会放大。
当信号延迟或不完整时,协调最困难。司机看起来可用,但许多司机可能被困在交通中、正在行程中或不愿意接受有不确定取车条件的订单。同样,请求峰值可能来得比系统确认供给快,短期预测容易高估或低估现实。
平台通常依赖多种手段:放慢需求增长(例如限制重复请求)、优先某些行程类型、并调整匹配逻辑以减少流失(比如过多取消与重复指派)。一些策略侧重于在较小区域内保持服务可行,而不是在全城范围内拨薄资源。
当状况不稳定时,面向用户的清晰提示很重要:现实的 ETA、透明的价格变动、可理解的取消政策。哪怕是小的清晰改进也能减少“慌乱点按”、不必要的取消与重复请求——这些行为会放大网络压力。
当平台能实时调配车辆与定价时,也就能影响谁被服务、在何处以及以何种成本被服务。因此“让系统更好”不能简化为单一指标。
公平性问题体现在日常结果中:
任何定价或调度算法都隐含权衡,比如:
这些目标不能同时最大化。选择优化什么既是技术问题,也是政策问题。
行程数据很敏感,因为它可能揭示家庭与工作地点、日常轨迹与私人访问记录。负责任的做法强调数据最小化(只收集必要的信息)、有限保留、访问控制与对精确 GPS 轨迹的谨慎使用。
以“值得信赖的系统”为目标:
去掉品牌与应用,Uber 的“可编程城市”效应由三把持续运作并相互加强的调节杆驱动:流动性、定价 与 调度/物流。
1) 流动性(在正确时空的密度)。 更多附近可用供给降低等待、增加完成率,吸引更多乘客并让司机保持收入——形成自我强化循环。
2) 定价(引导行为)。 动态定价不仅仅是“更高价格”,而是调整激励,使供给向需求高峰移动并让乘客揭示出行紧急性。做得好时,定价保护可靠性;做得不好则会引发用户流失与监管关注。
3) 调度与物流(把现有资源用到极致)。 匹配、路径规划与重新定位把原始供给变成可用供给。更好的 ETA 与更聪明的匹配通过减少空闲时间与取消来“创造”流动性。
当这些要素对齐时,会形成简单的飞轮:更好匹配 → 更快上车 → 更高转化 → 更高收入/可用性 → 更多乘客 → 更多数据 → 更好匹配与定价。
同样模型可应用于外卖、货运、家政服务、甚至预约类市场:
如果你想要更深入的度量与定价入门,请参见 /blog/marketplace-metrics 和 /blog/dynamic-pricing-basics。
如果你在构建具有类似调节杆的市场——实时状态、定价规则、调度工作流与护栏——主要挑战通常是速度:把想法快速变成可运行的产品,以便对行为和指标进行迭代。像 Koder.ai 这类平台可以帮助团队更快地原型与发布这些系统,通过构建 web 后台(通常 React)、Go/PostgreSQL 后端,甚至通过聊天驱动工作流构建移动应用——在你想测试调度逻辑、实验仪表盘或定价规则配置而不想重写基础设施时很有用。
要测量的内容: 上车 ETA(p50/p90)、填充率(fill rate)、取消率(双边)、利用率/空闲时间、接单率、小时收入、价格倍率分布与复购率。
要调优的内容: 匹配规则(优先级、批处理)、重新定位提示、激励设计(奖金 vs 倍率)以及防止极端结果的“护栏”。
要沟通的内容: 价格变动的驱动因素、如何保护可靠性以及用户可以采取的操作(等待、步行、预约、切换车种)。清晰解释能减少那种“算法是随机的”的担忧——而信任本身就是一种流动性。
A “programmable” city 不是字面意义上的软件——而是一个平台可以:
网约车是一个明显的例子,因为它把街头的混乱转成机器可读的信号,并持续对这些信号采取行动。
一个可编程网络包含:
关键思想是:随着新信号到来,决策会被反复更新。
因为输入不稳定且部分由人驱动:
平台不仅要预测城市,而是要实时反应且避免引发新问题(比如剧烈波动的定价或错误分配的供给)。
流动性 是指在绝大多数时间里,在足够近的范围内有足够的司机和乘客,使配对能快速发生并且可靠。
重点不是“城市里有很多司机”,而是按街区/分钟的密度,因为距离会带来:
低流动性通常会立即在街面上表现为:
这些现象是互相关联的——它们都是同一局部短缺的不同表现。
动态定价应被看作一种平衡机制,而不仅仅是“多收钱”。当短期内需求超过供给时,提高价格可以:
当错配缩小后,价格会回落到正常水平。
护栏设计是防止定价伤害信任或造成损害的手段。常见做法包括:
目标是保持市场可用性的同时,确保可预测且可解释。
并非总是“最近的司机胜出”。匹配通常会考虑:
一次好的匹配是在不恶化未来几分钟系统表现的前提下,改进当前行程。
平台会把“实时状态”从以下信号构建出来:
决策常以批次形式进行(每几秒一次),在网格单元和短时间窗口上汇总以减少随机性。
平台在追求速度与收益的同时,可能会产生不良后果。主要问题包括:
务实的保护措施包括:差异化影响审计、数据最小化与保留限制、异常监控与人工干预路径。