我们让 AI 智能体管理 23 套度假租赁房产。这是我们从未让它们做的事。
We let AI agents run 23 vacation rental properties. Here is what we never let them do.
我们发现了什么
我们让 AI 智能体管理 23 套度假租赁房产。
- 来源:DEV Community(发现于 2026-08-27)
- 证据等级:C · 存在定价或订阅线索;有收费设计不等于已有收入。
- 商业模式:待核验
- 主题:AI Agent
- 初筛评分:14.7/100 · 收录 1 次
证据,比故事更重要。
规则清洗与初筛,未经人工商业核验。原文语境、实际客户和付费情况仍需自行验证。
引用与数字披露
来源类型(原作者自述/第三方测算/媒体转引)需采集端标注,本版尚未落字段。
- 作者
- 未标注
- 抓取日期
- 来源类型
- 未标注
- 币种
- 未标注
- 口径
- 未标注
- 披露主体
- 未标注
- 披露日期
- 未标注
中文辅助译文(全文)
我做短租业务。一共二十三套。大约十八个月前,我开始用 AI Agent 替换那些吞噬我夜晚的工作——主要是第四十次回答关于停车的同一个问题。
它们确实管用。它们也让我意识到,我最初关于上线自主 Agent 的几乎所有认知都是错的。
这不是一篇讲 Prompt 工程的文章。当真金白银开始在这个系统里流转时,我们最终沉淀下来四条规则;其中三条讲的是 Agent 不被允许做什么。 Rule 1:护栏写在代码里,而不是写在 Prompt 里
这是我最先搞砸的一条,也是我到处都能看到的一条。
我们的定价 Agent 每晚会给每套房源重新定价。它有一个底价:永远不能低于这套房源的翻房成本。我的第一版把这条规则放在了系统 Prompt 里。大致是这样的: 永远不要建议低于 £X 底价的每晚价格。
这条规则撑住了。大部分时间是这样。然后有一天晚上,它在一套底价为 £52 的房源上给出了 £38 的建议,因为上下文让一个便宜的夜晚看起来合情合理,而这条指令在模型眼里只是众多考量之一。
Prompt 是一个请求。代码才是保证。修复方案枯燥但彻底:
那个 Math.max 就是全部的安全属性。模型返回什么都不重要。是否有人越狱了 Prompt、我们是否换了模型、上下文窗口里是否塞进了什么奇怪的东西,都不重要。底价之所以成立,是因为底价是算术,而不是说服。
通用形式是这样:任何一旦被违反会让你感到难堪的约束,都必须在模型返回之后、用模型无法影响的代码来强制执行。如果你唯一的防线就是 Prompt 里的一条指令,那你拥有的不是一个约束,而是一个偏好。
对系统 Prompt 里的每一条规则,问问自己:如果模型恰好忽略了一次,会发生什么?如果答案是"我们会亏钱"、"我们会惹恼一位客户"或"我们会违法",那它就不该放在 Prompt 里。 Rule 2:上线时每个 Agent 都默认关闭,让用户自己去打开
我们跑的每个 Agent 都有三个档位。Off、Suggest、Auto。
在 Suggest 模式下,Agent 把整份工作做完,然后停下来。它写好回复,等你按下发送。它算好新价格,展示给你看。所有的活都干了,但没有任何权限。
所有功能都以 Suggest 模式上线。这不是一个我们会随后移除的 Beta 阶段,而是永久的默认设置。用户自己把某个 Agent 升级到 Auto,按 Agent 一个一个来,等那个具体的 Agent 在他们眼里赢得了信任。
我搭建它的时候觉得这像是一种怯懦。结果证明这是让产品变得可用的唯一一件事,原因有二。
显而易见的是信任。没有人会在第一天就把自己的收件箱交出去。Suggest 让某人在 Agent 独立行动之前,先看着它正确四十次——这比任何落地页上的说辞都要有说服力。
不那么显而易见的一点是,Suggest 模式是你能搭建的最好的评估工具链。每当用户在发送前修改一次草稿,那就是一次免费的、带纠正标注的、生产环境中的失败案例。你不必再去拼凑一套评估集去猜测真实输入长什么样。真实输入正在出现,而用户在帮你批改作业,因为这符合他们的利益。
我们就是用这种方式发现了最严重的 Prompt Bug。消息 Agent 的署名方式让客人读起来感觉有点冷。任何测试都抓不到这个问题。十个用户从十份草稿里改掉同一句话,一周之内就暴露了它。 Rule 3:当它失败时,搞清楚哪个方向是安全的
"Fail safe"(安全失效)在你为那个具体的 Agent 决定"安全"到底意味着什么之前毫无意义,而且每个 Agent 的答案都不同。
我们有一个 Agent 会盯着即将过期的预订请求。如果一个请求在没有任何决定的情况下即将超时,平台会把这计入你的响应率,进而影响你的排名。所以这个 Agent 必须按时间行动。
它采用 Fail closed(失效即关闭)。如果距过期还有十五分钟且没有任何响应,它会拒绝。拒绝是可恢复的结果:客人可以重新预订,而你的响应率得以保住。静默地让它超时才是不可恢复的。
但请注意后半段——这差点让我们栽了个跟头才学到:它只在"沉默"时才行动。如果你或其他 Agent 已经回复过那个请求,它就什么都不做。这个 Agent 的危险版本,是那种自以为更懂、从而覆盖四分钟前人类做出的决定的版本。
所以这条规则是双面的。为具体的失败选择安全的方向,并精确定义 Agent 允许行动的状态。"没有任何人碰过这件事"通常是正确的先决条件,而且很容易被忘掉。 Rule 4:有些事永远不会被自动化,无论处在哪个自主级别
即便在 Auto 模式下,三类动作对我们的 Agent 也是不可用的: · 任何花钱或拒绝花钱的动作。价格底价永远不能被突破。除非是上面提到的那个狭窄的过期场景(因为替代方案更糟),否则预订永远不会被 Agent 凭自身判断拒绝。 · 任何不可逆的动作。不取消,不扣款。 · 任何会歪曲人类意图的动作。Agent 不会代表房东做出房东本人并未同意的承诺。
这并非技术限制。我们本可以上线。这是一个产品决策,我认为它是正确的,因为失败模式是不对称的。一个过于谨慎的 Agent 只会浪费你几分钟。一个拒绝错单或击穿你底价的 Agent 会让你损失一晚的收入和一位客人,而你事后才会发现。
当你决定自己的边界划在哪里时,问题不是"模型能不能可靠地做到这件事?",而是"如果凌晨三点没人盯着的时候出了岔子,损失还能挽回吗?"如果不能,那就让一个人留在流程里,无论你的评估看起来有多漂亮。 代价
我想诚实地谈谈这笔交易,因为这类文章通常不会。
把 Agent 限制得这么严,会让产品在演示中不那么惊艳。"它起草回复,你来审批"这句话,比"它替你打理整个收件箱"差远了。我们在那一句话上流失过用户。
这也意味着我们的迭代会更慢。每个新 Agent 都需要把护栏用代码写下来,这比往 Prompt 里加一段话要费力得多。
我们换来的是一个 Agent 体系,十八个月了、二十三套房源、几千条客人消息,它还没有做过任何让我不得不道歉的事。对于一款会触及别人生意和别人假期的软件来说,我愿意每次都做这笔交易。 简短版 · 如果一条规则很重要,就在模型返回之后用代码强制执行它。Prompt 是一个请求,而不是一个约束。 · 以 Suggest 模式上线。它能买到信任,也是一个免费的生产评估工具链。 · 为每个 Agent 决定哪个方向是安全的,并定义它可以行动的确切状态。通常是:只在沉默时行动。 · 永远不要自动化不可逆的事,无论你的评估有多漂亮。
这些都不算巧妙。某种程度上这恰恰是重点。当下 Agent 领域有趣的工作不是让它们更强大,而是搞清楚它们被允许碰什么。
我打造了 Zugrow,这些 Agent 就住在这里;我自己也经营二十三套短租,这就是它们的试验场。评论区很乐意回答关于具体护栏是如何实现的任何问题。
译文由上游机器翻译生成,可能有误;判断请以英文原文为准。
英文原文(来源本站未改写)
I run short lets. Twenty three of them. About eighteen months ago I started replacing the parts of that job that were eating my evenings, mostly answering the same question about parking for the fortieth time, with AI agents.
They work. They also taught me that almost everything I first believed about shipping autonomous agents was wrong.
This is not a post about prompt engineering. It is about the four rules we ended up with once real money was moving through the thing, and why three of them are about what the agent is not allowed to do. Rule 1: The guardrail goes in code, not in the prompt
This is the one I got wrong first, and it is the one I see everywhere.
Our pricing agent reprices every property every night. It has a floor: never go below what the property costs to turn around. My first version put that in the system prompt. Something like: Never suggest a nightly price below the floor of £X.
It held. Most of the time. Then one night it suggested £38 on a property with a £52 floor, because the surrounding context made a cheap night look reasonable and the instruction was, to the model, one consideration among many.
A prompt is a request. Code is a guarantee. The fix is dull and total:
That Math.max is the entire safety property. It does not matter what the model returns. It does not matter if someone jailbreaks the prompt, or if we swap models, or if the context window fills with something strange. The floor holds because the floor is arithmetic, not persuasion.
The general form: any constraint you would be embarrassed to have violated must be enforced after the model returns, in code that the model cannot influence. If your only defence is an instruction in a prompt, you do not have a constraint. You have a preference.
Ask yourself, for every rule in your system prompt: what happens if the model ignores this exactly once? If the answer is "we lose money" or "we upset a customer" or "we break the law", it does not belong in the prompt. Rule 2: Ship every agent switched off, and make the user turn it up
Every agent we run has three positions. Off, Suggest, Auto.
In Suggest, the agent does the whole job and then stops. It writes the reply and waits for you to press send. It works out the new price and shows it to you. All the work, none of the authority.
Everything ships in Suggest. Not as a beta phase we later remove, but permanently, as the default. The user promotes an agent to Auto themselves, per agent, when that particular agent has earned it in their eyes.
This felt like cowardice when I built it. It turned out to be the single thing that made the product usable, for two reasons.
The obvious one is trust. Nobody hands over their inbox on day one. Suggest lets someone watch an agent be right forty times before it gets to act alone, and that is a much better argument than anything on a landing page.
The less obvious one is that Suggest mode is the best evaluation harness you will ever build. Every time a user edits a draft before sending it, that is a labelled failure, free, in production, with the correction attached. You do not have to construct an eval set that guesses at what real inputs look like. Real inputs are showing up, and users are marking your homework because it is in their interest to do so.
We found our worst prompt bug that way. The messaging agent was signing off in a way that read as slightly cold to guests. No test would have caught it. Forty users editing the same sentence out of forty drafts caught it in a week. Rule 3: When it fails, work out which direction is safe
"Fail safe" is meaningless until you decide what safe means for that specific agent, and the answer differs per agent.
We have an agent that watches booking requests approaching expiry. If a request is about to time out with no decision, the platform counts that against your response rate, which affects your ranking. So this agent acts on the clock.
It fails closed. If it is fifteen minutes from expiry and nothing has happened, it declines. Declining is the recoverable outcome: a guest can rebook, and your response rate survives. Silently letting it expire is not recoverable.
But note the second half, which took a near miss to learn: it only ever acts on silence. If you or another agent has already answered that request, it does nothing at all. The dangerous version of this agent is the one that decides it knows better and overrides a human decision made four minutes ago.
So the rule is two-sided. Pick the safe direction for the specific failure, and define precisely the state in which the agent is allowed to act at all. "No human has touched this" is usually the right precondition, and it is easy to forget. Rule 4: Some things never get automated, at any autonomy level
Even on Auto, three categories of action are unavailable to our agents: · Anything that spends or refuses money. A price floor never gets crossed. A booking never gets declined by an agent acting on its own judgment, except in the narrow expiry case above where the alternative is worse. · Anything irreversible. No cancellations, no charges. · Anything that would misrepresent the human. Agents do not make promises on the host's behalf that the host has not agreed to.
This is not a technical limit. We could ship it. It is a product decision, and I think it is the right one, because the failure mode is asymmetric. An agent that is too cautious costs you a few minutes. An agent that declines the wrong booking or undercuts your floor costs you a night's revenue and a guest, and you find out afterwards.
When you are deciding where your own line sits, the question is not "can the model do this reliably?" It is "if this goes wrong at 3am while nobody is watching, is the damage recoverable?" If it is not, keep a human in it, however good your evals look. What this costs
I want to be honest about the trade, because posts like this usually are not.
Constraining agents this heavily makes the product less impressive in a demo. "It drafts a reply and you approve it" is a worse sentence than "it runs your whole inbox". We have lost people at that sentence.
It also means we ship slower. Every new agent needs its guardrails written in code, which is more work than adding a paragraph to a prompt.
What we get for that is an agent estate that has not yet done something I had to apologise for. Eighteen months, twenty three properties, thousands of guest messages. For software touching other people's businesses and other people's holidays, I will take that trade every time. The short version · If a rule matters, enforce it in code after the model returns. A prompt is a request, not a constraint. · Ship in Suggest mode. It buys trust, and it is a free production eval harness. · Decide which direction is safe for each agent, and define the exact state it may act in. Usually: only on silence. · Never automate the irreversible, no matter how good your evals are.
None of this is clever. That is sort of the point. The interesting work in agents right now is not making them more capable, it is working out what they are allowed to touch.
I build Zugrow, which is where these agents live, and I host twenty three short lets, which is where they get tested. Happy to answer anything in the comments about how a specific guardrail is implemented.
这条还缺什么证据?
下面每条都由本条已有字段推出(等级、理由、商业模式、来源次数、是否演示), 本站不生成推测性结论;通用验证方法放在方法论页。
- 可核验的收入或付费证据查官网定价页与付费口径;第三方数据源(如 GetLatka)只作旁证,需标注来源与时点。
- 商业模式未定确认按席位/按用量/授权还是开源托管版收费;开源项目另查 LICENSE 与是否存在付费版。
- 只有单一来源找一手站点或其他渠道是否重复出现同一产品;社区热帖数量不等于商业进展。
通用验证清单(谁有这个问题/谁愿意付费/一个人能交付哪一小步)见我们的筛选方法。