先签后干:vibe 项目的接单合同实战
接单最痛的不是没活,是活干完钱没拿到。把合同当收款工具的实战指南:合同六要素、SOW 写法、里程碑付款、IP 归属、AI 生成代码条款,附签约前 15 项自查清单。

vibe coder 接单,最痛的时刻不是没活干,而是活干完了、钱没拿到。客户一句"先做着,钱不会少你的",三个月后变成"这个效果不是我想要的,尾款再等等"。你熬夜写的代码,成了对方"再等等"的筹码。
这不是你技术不行,是你缺了一样东西:合同。不是那种几十页的律师腔文件,而是一份把"丑话说在前面"的书面约定:做什么、做成什么样、什么时候给钱、代码归谁。一人开发者对合同有天然的抵触——"谈钱伤感情""客户会觉得我不信任他"。真相恰恰相反:愿意跟你签合同的客户,才是认真想付钱的客户;连一页纸都不愿意签的,你最好现在就知道。
这篇是"接单二部曲"的上部:讲签约"之前"的事。签约"之后"的交付动作(文档包、权限移交、验收、尾款、维护边界),见本站《代码写完只是上半场:vibe 项目的客户交接实战》。两篇合起来,就是一条从"口头答应"到"钱货两清"的完整跑道。
不签合同的三种死法
先看三个真实到刺眼的剧本(人物为 composite,但每个情节都来自独立开发者的真实遭遇):
死法一:需求蔓延。阿 K 接了个企业官网,"顺手"帮客户加了个在线预约功能——客户说"很简单嘛"。然后是会员系统、支付对接、多语言。一句话需求,加了四个月。没有合同界定"做什么",就没有"不做什么"。
死法二:验收扯皮。小 M 交付了一个小程序,客户说"这不是我想要的感觉"。什么感觉?说不出来。改了七版,客户还是摇头。没有合同界定"什么算做完",验收标准就是客户当天的情绪。
死法三:尾款拖欠。老陈的项目上线三个月,30% 的尾款还在"财务走流程"。催多了怕撕破脸,不催钱就当没这回事。没有合同约定付款时间,"走流程"可以走到天荒地老。
三种死法的病根是同一个:口头约定没有执行力。合同的作用不是"打官司用"(绝大多数合同一辈子用不上法庭),而是"把分歧消灭在发生之前"。写合同的过程,就是逼双方把模糊地带谈清楚的过程。
报价单:合同的前传
在聊合同之前,先聊报价单——因为很多纠纷的种子,是在报价阶段埋下的。一份专业的报价单应该包含四样东西:工作项拆解(每个功能一行,写清包含什么)、工时/费用(每项多少钱)、不包含项(提前声明边界)、有效期("本报价 30 天内有效",防止客户半年后拿着老价格回来)。
报价单和合同的关系是:报价单是"意向",合同是"承诺"。实战技巧是让报价单尽量接近合同——把 SOW 的雏形直接写进报价单附件。客户在报价阶段确认的边界,合同阶段就不会重谈一遍。很多一人开发者报价只写一个总数("这个项目 3 万"),等于把"3 万包含什么"的解释权完全交给了客户——这是所有扯皮的源头。
还有一个反直觉的建议:报价单上写付款方式。"签约付 30%,中期付 30%,终验付 40%"这句话,第一次出现应该在报价单里,而不是合同谈判桌上。让客户在"心动期"就接受付款节奏,比在"签约期"讨价还价容易得多。
合同六要素:一人开发者版本
一份能保护你的合同,不需要法律术语堆砌,只需要六个要素齐全:
- 1. 主体(谁和谁签):写全称。个人对个人,写身份证号;对公司,写统一社会信用代码 + 法定代表人。别写"张总",要写"张某某"。主体不清,合同就是废纸。
- 2. 标的(做什么):不是"做一个网站"这种空话,而是"交付物清单"——几个页面、什么功能、什么技术栈。越具体越好,附件形式列出来。
- 3. 交付标准(什么算做完):功能清单 + 验收标准。参考:"官网首页、产品页、联系页三个页面,Chrome/Safari 最新版正常显示,移动端适配,交付源码 + 部署文档。"
- 4. 时间(什么时候做完):里程碑节点,而非只有一个死线。"需求确认后 2 周出原型,4 周交付测试版,6 周终验上线。"每个节点绑定一笔钱(见下一节)。
- 5. 钱(给多少、怎么给):总金额、付款节点、付款方式、逾期责任。"怎么给"比"给多少"更重要——分几次给,每次触发条件是什么。
- 6. 违约(搞砸了怎么办):客户中途取消怎么结算、你延期交付怎么赔、争议去哪里解决。这一条平时没用,出事时救命。
记住一句话:合同里没写,就等于没约定。所有"当时说好了"的口头承诺,在纠纷面前都不存在。
SOW:把"不做什么"写进工作说明书
SOW(Statement of Work,工作说明书)是合同的附件,也是合同里最有实战价值的部分。它的核心不是写"做什么"——那是需求文档的事——而是写"不做什么"(exclusion list)和"变更怎么算钱"。
一份可用的 SOW 包含四块:
第一,需求边界清单。把交付的功能一条条列出来,每条一句话能说清。比如:"用户注册/登录(含微信扫码)""商品列表 + 搜索 + 筛选""微信支付对接"。清单之外的,默认不做。
第二,排除清单(exclusion list)。这是 SOW 的灵魂。明确写出"以下内容不在本次交付范围内":比如"不含 App 端开发""不含服务器费用(客户自理)""不含 logo 与品牌设计""不含运营推广"。客户日后说"顺手加个 App",你指着这一条就行。
第三,变更流程。这是防需求蔓延的核武器,写清三句话:"任何超出 SOW 范围的需求,需双方书面确认变更单;变更单注明新增工作量与费用;客户签字确认后开工。"——口头新增一律不算数,这是铁律。很多纠纷的根源就是"你当时答应了","我以为是包含的"。
第四,假设与依赖。写清"你需要客户配合什么":比如"客户需在 3 个工作日内提供 logo 与文案素材""客户需提供微信支付商户号"。客户拖素材导致延期,责任不在你——但前提是写进了 SOW。
举个 mini 例子,一份 3 万元企业官网的 SOW 可能长这样:包含:首页/产品/案例/联系 4 个页面设计与开发、移动端适配、表单提交到企业微信、百度统计接入;不包含:logo 与文案撰写(客户提供)、服务器与域名费用、多语言版本、SEO 优化;变更:超出范围的需求按 1500 元/人天另行报价,书面确认后开工;依赖:客户在签约后 5 个工作日内提供全部文案与图片素材。一页纸,边界清清楚楚。
里程碑与付款:每一笔钱绑定一次验收
付款设计是合同的心脏。推荐两种经典结构:
3-3-4 结构(适合 5 万以下的中小项目):签约付 30%(启动资金,过滤掉"玩玩而已"的客户)、中期验收付 30%(核心功能交付、客户签字确认后)、终验交付付 40%(全部验收通过、源码与文档移交后)。
5-5 结构(适合 2 万以下的小快项目):签约 50%,交付 50%。简单直接,适合信任基础好的老客户。
无论哪种结构,守住三条铁律:
- 首付款是过滤器:不付首付款不开工。这条能过滤掉 90% 的"不靠谱客户"。对方说"先做个 demo 看看"?可以,但 demo 的范围和费用也要书面约定。
- 每一笔钱绑定一次书面验收:中期款对应"中期验收单签字",尾款对应"终验收单签字"。口头"可以了"不算数——客户交接指南里有验收单模板,配套使用。
- 逾期付款写滞纳金:"逾期付款的,每日按应付金额的万分之五支付违约金。"这条平时没人触发,但它让"财务走流程"有了成本。很多客户拖款不是没钱,是你的账单没有优先级——滞纳金条款就是给账单加优先级。

还要区分质保金和尾款:尾款是"交付了就该给的钱",质保金是"留一部分押在 bug 修复上"。建议质保期不超过 30 天、质保金不超过 10%——超过这个线的"质保",本质是变相拖欠。
IP 归属:代码到底归谁?
这是 vibe coder 最容易吃亏的一条。默认规则(中国《著作权法》):委托开发的软件,著作权归属按约定;没有约定的,归受托人(就是你)。但"默认归你"不等于"安全"——客户付了钱,天然认为"代码是我的",纠纷时各执一词。
合同里要写清三件事:
第一,著作权归谁。两种常见约定:A)"本项目全部知识产权归客户所有"(客户通常想要这个);B)"著作权归开发者,客户获得永久、不可撤销的使用许可"(对你更有利,适合 SaaS 化复用的场景)。选哪个取决于议价能力,但必须二选一写清楚,不能含糊。
第二,尾款与源码的"人质交换"。实战中最有效的条款:"尾款付清前,开发者保留源码;尾款到账后 3 个工作日内移交完整源码与文档。"这不是"扣押",是留置权思维的合同化——你的议价杠杆只在"客户还没拿到全部东西"时存在。
第三,开源组件的传染提示。如果你用了 GPL 类许可证的开源组件,整个项目的传染风险要提前告知客户(见本站《vibe 项目的开源发布实战》)。建议在合同里加一句:"开发者使用的第三方开源组件清单见附件,其许可证义务由客户在后续使用中遵守。"——别让客户日后因为许可证问题回头找你。
AI 时代的特殊条款:AI 写的代码,归谁?
这是 2026 年的新问题,传统合同模板里没有。vibe coding 的代码是 AI 生成的,权属链条比"人写的"复杂一层。建议在合同里单开一条"AI 辅助开发条款",写清三点:
- 权属约定:"本项目开发过程中使用 AI 编程工具辅助生成,生成代码的著作权归属按本合同第 X 条(IP 归属)执行。"——一句话,把 AI 生成代码纳入已有的权属框架,避免日后"AI 写的代码不算你的作品"的扯皮。
- 训练数据污染的责任划分:"开发者应采取合理措施避免将客户保密信息输入公共 AI 服务;因 AI 服务导致的数据泄露,按保密条款承担责任。"——对应的实战是密钥与保密管理(见本站《vibe 项目的密钥管理实战》):客户的数据库密码、API Key,绝不能进公共模型的 prompt。
- 客户数据的 AI 使用边界:"未经客户书面同意,开发者不得将客户业务数据用于 AI 模型训练或对外演示。"——这条保护客户,也保护你:数据不出事,就没有纠纷。
这三条在 2026 年不是"超前",是"刚需"。已经有客户在合同里反向要求"禁用 AI 写核心代码"——你要有备用的谈判话术:AI 是工具,责任主体是你,交付质量由验收标准保证,与"谁敲的键盘"无关。
违约与退出:好聚好散的艺术
合同的最后一章,写"分手"。没人签约时想分手,但写清楚分手规则的合作,反而更容易长久:
客户中途叫停:按已完成里程碑结算。"客户单方终止的,已支付款项不退,未支付的已完成里程碑款项应在 15 日内结清。"——这条防止"做到一半说不要了,白嫖半个项目"。
你无法交付:诚实条款。"开发者确认无法按期交付的,应提前 15 日书面通知,退还未完成部分的已收款。"——vibe coder 接超纲的活不丢人,硬撑到烂尾才丢人。有退出机制,你才敢接有挑战的单。
争议解决:写清"向乙方所在地人民法院起诉"或"提交某仲裁委员会仲裁"。仲裁一裁终局、速度快但费用高;诉讼便宜但周期长。一人开发者通常选"被告住所地法院"(就是你所在地)——别签"向甲方所在地法院起诉",真出事你跑断腿。
谈判话术:怎么开口谈合同不伤感情
道理都懂,但很多人卡在"怎么开口"。给你三句可以直接用的话术:
- 引入合同时:"我这边有个标准的合作模板,把咱们聊的需求、时间和费用都写清楚,对双方都是个保障——你看一下,有问题咱们改。"——关键词是"标准模板"(不是针对你)和"对双方的保障"(不是只保护我)。
- 客户说"不用这么正式吧":"越是朋友越要写清楚,亲兄弟还明算账呢。写下来以后,需求有变化咱们按变更流程走,对你也是保护——不然我随口答应的事,万一忘了呢?"——把合同包装成"对客户的保护",阻力减半。
- 谈首付款时:"行规是签约付 30% 启动,排期也是按付款顺序排的。你这边流程要是慢,排期可能就得往后顺延了。"——"排期"是最好的筹码:不是我要你的钱,是你的项目要排队。
核心心法只有一条:谈合同不是"不信任",是"专业"。大公司的采购流程比你的合同严十倍——你越专业,客户越放心把更大的单子给你。那些被"伤感情"吓退的单子,本来也大概率会伤你的钱。
签约前 15 项自查清单
打印出来,签约前逐项打勾:
主体(2 项):□ 对方全称/证件号写清了吗 □ 签字人有授权吗(公司要盖章)
标的(3 项):□ 交付物清单具体吗 □ 排除清单写了吗 □ 变更流程约定了吗
钱(4 项):□ 总金额含税吗 □ 付款节点和触发条件写清了吗 □ 首付款比例 ≥30% 吗 □ 逾期滞纳金写了吗
时间(2 项):□ 里程碑节点明确吗 □ 客户配合义务(素材/账号)写了吗
IP(2 项):□ 著作权归属二选一了吗 □ 尾款与源码移交的顺序写了吗
违约(2 项):□ 中途叫停的结算写了吗 □ 争议解决地在你这边吗
15 项全勾,才能签字。缺任何一项,回去补——合同是谈出来的,不是求出来的。一个连合同都不愿意好好谈的客户,你指望他好好付钱吗?
最后记住这篇的定位:它是"接单二部曲"的上部。合同签好了,交付时才有底气;交付的实战(文档包、权限移交、验收仪式、维护边界),去看下部《代码写完只是上半场:vibe 项目的客户交接实战》。两篇合起来,愿你接的每一单,都始于白纸黑字,终于钱货两清。
声明
本文为独立开发者实务经验分享,不构成法律意见。合同条款涉及金额较大或情形复杂时,请咨询执业律师。不同司法管辖区的法律规定存在差异,本文以中国内地法律实践为主要参照。
评论 (0)
相关文章

vibe 开发者敢上线不敢下线——僵尸功能悄悄吃掉所有维护时间。本文把下线做成一次倒着来的发布:下线三问、30/90 天公告期、数据导出脚本、按比例退款、告别邮件写法、301 映射表、代码归档,以及 12 项验收清单,一步不落。

企业售前是四关绞肉机:POC、安全、法务、采购。一人团队逐关拿下的实战指南:要搞定的四个角色、诚实应答的安全问卷策略、MSA/DPA 谈判话术,附 16 项自查清单与止损线。

vibe 项目上线即暴露:像素级复刻、代码改名分发、名字被抢注。本文讲被抄之后的完整动作:借鉴与抄袭的判定线(接触+实质性相似)、证据保全的正确顺序、平台投诉四件套(GitHub DMCA/应用商店/去索引/社交媒体)、DMCA 五要素与反通知、中美版权登记、商标抢注、预防体系,以及和解/诉讼/放手的三条路成本账,附 48 小时应急清单。