教程 · Odoo + AI代理

用API Key将你的Odoo连接到Claude,无需编写Python即可创建自己的视图

Facebook上「Odoo México」小组里的一个帖子提醒了我们一件令人不适的事:在顾问上门报价数千美元之前,开源社区早就解决了这个问题。这里是具体做法,适用于任何版本、任何版次的Odoo,也是几乎没人告诉你的那些缺点。

简短回答。 要在任何Odoo(Community或Enterprise,从v14到v19)中用AI查询报表或创建视图,你不需要购买一个封闭的模块:你生成一个原生的API Key(个人资料,偏好设置,安全),通过一个MCP服务器把它连接到AI代理,然后用中文向它描述你想要的视图。代理会编写Odoo原生的XML,不需要一行Python。真正重要的限制是:它不是一个高可用的服务,这个key会继承用户的全部权限,而且在Odoo Online中,Python代码(不是XML)可能会被当作代码行计费。

起因:一个合理的问题和八个昂贵的回答

在Facebook的Odoo México小组里,有人问了一个我们许多人都曾想过的问题:

「谁有一个能为Odoo Community用AI查询报表的模块?」

回答都在意料之中:「我很乐意为你开发」「我们有一个已经在用了」「你好,我们很乐意帮你」「可以给你个好价钱」。一个社区在做它最擅长的事:报价。

而在帖子中间,出现了那句很少有人愿意大声说出来的回答:

「你为什么不直接生成API Key,把它交给任意一个AI代理,让它帮你建立与MCP的连接并做出自定义视图呢?」

任何版本的Odoo。任何版次。无需安装第三方模块。无需报价。无需编写哪怕一行Python。

这篇文章就是那个回答的完整而诚实的长版本。有的,是分步操作指南,但也有大多数帖子跳过的那些小字:你引入的技术债、你制造的依赖、你可能在不知不觉中触发的Odoo收费,以及为什么这并不取代一位好顾问,而是赋能于他。

Odoo原本自带、却几乎没人用的东西

在教程之前先说一句:Odoo多年来一直在「技术」菜单里附带一套工具箱,而大多数用户并不知道它的存在:

这些都不需要Python。它们由XML和QWeb组成,而QWeb就是拥有超能力的HTML。如果你让一个语言模型帮你编写那个视图,它会毫无问题地写出来,因为十多年来Odoo的公开语料库里到处都是这类内容。

那个会被报价数千美元的「AI报表模块」,在大多数情况下,恰恰就是把这些东西包进一个manifest里而已。

Odoo技术菜单的思维导图:用户界面分支汇集自定义视图、菜单项和用户过滤器;数据结构分支汇集模型、字段和字段选择;全部由XML和QWeb组成,无需Python。
图表源码(Mermaid)
mindmap
  root(("Odoo的
技术菜单")) 用户界面 自定义视图 菜单项 用户过滤器 数据结构 模型 字段 字段选择 全部无需Python XML和QWeb
Odoo已经在技术菜单里自带的工具箱。这些都不需要Python。
流程图:用户在Odoo中生成API Key,把它交给带有MCP服务器的AI代理,代理查询模型的真实结构,用XML编写自定义视图,用户在浏览器中验证。
图表源码(Mermaid)
flowchart LR
    U(["用户"]) -->|"1. 生成"| K["Odoo中的API Key\n个人资料,偏好设置,安全"]
    K -->|"2. 配置"| M["AI代理 + MCP服务器"]
    M -->|"3. 读取真实结构"| S[("模型与字段\nfields_get / list_models")]
    S --> M
    M -->|"4. 编写"| V["自定义视图\nXML / QWeb,无需Python"]
    V -->|"5. 在浏览器中验证"| U
完整的模式:API Key是钥匙,MCP是桥梁,代理编写Odoo原生的XML。由人来验证。

教程:如何自己一步步连接起来

按顺序排列的五个步骤:步骤1在个人资料、偏好设置、安全中生成API Key;步骤2将Odoo的MCP连接到代理;步骤3用中文描述视图;步骤4在浏览器中验证(突出显示);步骤5保存变更的记录。
图表源码(Mermaid)
flowchart LR
    P1["步骤1\n生成API Key\n个人资料,偏好设置,\n安全"] --> P2["步骤2\n将Odoo的MCP\n连接到代理"] --> P3["步骤3\n用中文\n描述视图"] --> P4["步骤4\n在浏览器中\n验证"] --> P5["步骤5\n保存变更的\n记录"]
    style P4 fill:#E14228,stroke:#E14228,color:#FFFFFF
五个步骤。第四步,在浏览器中验证,是几乎所有教程都省略的那一步。

步骤1:在Odoo中生成你的API Key

在Odoo里,用你的账户:个人资料,偏好设置,账户或安全标签页,新建API Key

给它起一个有描述性的名字(例如,claude-mcp-septiembre2026)。Odoo只会向你显示一次这个key,请立刻把它复制到密码管理器里。如果丢了,你可以再生成一个;它是不可恢复的。

它在Community、Enterprise、Odoo Online和Odoo.sh上都能用。它在v14、v15、v16、v17、v18和v19上都能用。这是一个原生机制,不是什么取巧的手段。

步骤2:在你的AI代理中登记一个Odoo的MCP

MCP的意思是Model Context Protocol,这是把AI代理与真实系统连接起来的开放标准。

选择你的技术栈所支持的连接器:

你的MCP需要四项数据:

ODOO_URL=https://tu-instancia.odoo.com
ODOO_DB=nombre-de-tu-base
ODOO_USER=usuario-que-genero-la-key
ODOO_API_KEY=la-key-del-paso-1

步骤3:用中文向AI描述你想要什么

一个真实有效的指令示例:

「在销售模块里,创建一个报价单的列表视图(处于「已发送」状态的sale.order),筛选出创建至今超过7天的,按销售员和按行业标签分组。列:编号、客户、销售员、总金额、自发送以来的天数。把它挂到菜单:销售、报表、停滞的报价单。」

代理会做三件事:

  1. 查询真实的结构(对sale.order执行fields_get),以免编造出不存在的字段。
  2. 生成视图的XML、窗口动作和菜单项。
  3. 直接通过API写入,或者交给你,让你手动粘贴到「自定义视图」里。

步骤4:在相信之前先验证

这是一半的教程都省略的一步。在认定视图没问题之前:

如果有什么看起来不对劲,就让代理回读它刚创建的那个视图。是的,AI会出错。区别在于,现在你用两条消息就能纠正它,而不用等一个咨询工单等上两周。

步骤5:保存变更的记录

在某个地方(一个文档、一份内部笔记)记下:你创建了哪个视图,用的是什么指令,在什么日期,以及哪个用户持有这个API Key。这一步看起来是可选的。它不是。缺点那一节会向你解释原因。

令人不适的思考:传统顾问的食利

这里是文章变得沉重的地方,所以我直说了。

一位在Odoo领域有十年经验的资深顾问读到这里,可能会同时感受到两件事:

  1. 「他们在砸我的饭碗。」为一个报表模块开出五千、八千、一万五千美元的账单,而一个高级用户用一个AI代理和一个API Key,在一个下午就能把它复制出来。
  2. 「我终于可以不用再卖这个了。」因为在内心深处,为一个自定义视图收取几十个小时的费用,从来不是一个人当初学习系统架构时所设想的工作。

开源社区多年来一直在推荐这条路。自定义视图、Enterprise里的Studio、JSON-RPC API、无需Python的XML开发:这一切早在十多年前就写在Odoo的官方文档里了。在2024年和2025年改变的,是出现了一种工具,即带MCP的AI代理,它把编写那段XML的成本从「一位有多年经验的顾问」降到了「一位有耐心、会提好问题的高级用户」。

这个变化并没有消灭严肃的咨询。严肃的咨询是数据架构、流程决策、安全、访问权限控制、迁移、与SAT和CFDI的集成、财税纪律、ERP治理。所有这些依然需要一个有判断力的人。

它确实消灭的,而且是好事,是那种食利型的咨询:为今天只需一次点击、一条指令和一个原生菜单就能完成的事按小时收费。那些抱着这个模式不放的顾问、开发者和技术项目经理,将要面对越来越自主的终端用户的竞争。而那些进化到治理、架构和判断层面的人,会比以往任何时候都赚得更多,因为市场终于要能分辨出这两者的区别了。

图示:Odoo顾问的工作分为两类。食利型(为一个视图或临时报表按小时收费)被拥有AI的高级用户吸收。专业型(架构、安全、迁移、ERP治理)仍然需要人类判断。
图表源码(Mermaid)
flowchart TD
    C["Odoo顾问的工作"] --> R{"哪一类工作?"}
    R -->|"食利型"| X["按小时收费做一个视图\n或临时报表"]
    R -->|"专业型"| K["架构,安全,\n迁移,ERP治理"]
    X --> XD["由拥有AI的\n高级用户吸收"]
    K --> KP["仍然需要\n人类判断"]
    style XD fill:#7a2018,stroke:#E14228,color:#FFFFFF
    style KP fill:#14532d,stroke:#3ba55d,color:#FFFFFF
技术并不抹去严肃的咨询。它抹去的是为今天只需一次受监督的点击就能完成的事所做的食利式收费。

优点,简而言之

缺点:几乎没人告诉你的那些小字

这一节才是这篇文章真正存在的理由。优点到处都有人推销给你;缺点,则很少。

权衡的思维导图:优点是速度、无供应商锁定、对话式迭代和在核心之内工作;缺点是技术债、依赖机主的电脑、可计费的代码行和访问权限控制。
图表源码(Mermaid)
mindmap
  root(("Odoo中的
API Key + AI")) 优点 速度 无供应商锁定 对话式迭代 在核心之内 缺点 技术债 依赖个人电脑 可计费的LoC 访问权限控制
一眼看清的权衡。这四个缺点是很少出现在推销话术里的。
决策图:在Odoo Online中,XML视图和带简单逻辑的Studio是安全的,不计为代码行,而带Python的server action和自动化则会被计为可计费的代码行。
图表源码(Mermaid)
flowchart TD
    A["你向AI请求一项更改"] --> B{"需要Python吗?"}
    B -->|"否:XML / QWeb / 视图"| C["安全\n不计为LoC"]
    B -->|"带简单safe_eval的Studio"| C
    B -->|"是:server action中的\ndef / class / import"| D["Odoo将其\n计为代码行"]
    D --> E{"你在Odoo Online\n或Odoo.sh上吗?"}
    E -->|"是"| F["可能被Odoo SA\n计费"]
    E -->|"否:Community自托管"| G["不计费,\n但属于技术债"]
那条红线:XML不收费,Python会被计入。而被计入,和被记录归档,不是一回事。

1. 看不见的技术债

一个通过与AI对话创建的视图,并不存放在git仓库里。没有diff,没有同行评审,除了那条记录的write_uidwrite_date之外,没有「谁在什么时候、为什么改了什么」的历史。

在实践中这意味着:

这就等同于在一栋没有图纸的房子上加盖:能用,直到需要改造的那一天。

对比:一个通过对话创建的视图没有git仓库,没有diff也没有审查,在迁移中悄然损坏。一个受版本控制的模块存在于git中,有diff、PR和测试,在迁移中是可复现的。
图表源码(Mermaid)
flowchart LR
    subgraph IA["通过对话创建的视图"]
      I1["无git仓库"] --> I2["无diff无审查"] --> I3["迁移:\n悄然损坏"]
    end
    subgraph GIT["受版本控制的模块"]
      G1["存在于git中"] --> G2["Diff,PR,测试"] --> G3["迁移:\n可复现"]
    end
    style I3 fill:#7a2018,stroke:#E14228,color:#FFFFFF
    style G3 fill:#14532d,stroke:#3ba55d,color:#FFFFFF
同一个个性化,两种不同的生命周期。这个差别会在下一次迁移时付出代价。

2. 依赖机主的电脑

这是最被低估的一点。API Key存放在你的机器上:在你本地MCP的配置文件里,在Claude Desktop的配置里,在你编辑器的mcp.json里。存放在一台具体的、实体的笔记本电脑上,而它是会坏的。

后果:

这不同于一个第三方模块,后者至少和它的manifest一起存放在addons里,也不同于一位外部顾问所做的改动,后者至少留下一个关闭的工单和一张发票作为痕迹。

3. 对Odoo的责任:那出了名的代码行

这是在原帖里出现的那一点,值得单独一段。

在Odoo Online(SaaS)和Odoo.sh里,根据Odoo SA的商业模式,修改会被计入,并且可能作为个性化被计费。实用的操作规则:

如果你让AI通过给你写一个三十行的Python server action来「解决」一个复杂的计算,恭喜你:你刚刚制造了技术债,还额外产生了一笔对Odoo SA的可变成本。

一个来自原帖本身的建议:如果Odoo试图为个性化向你收取代码行费用,就向他们索要不含HTML行数的审计报表,因为HTML、XML和QWeb不应该被算作Python代码,而那份报表能让你看清最原始的账单。

4. 访问权限控制:影响范围的问题

Odoo的API Key会继承生成它的那个用户的全部权限。这就是它的设计。在标准的Odoo里,没有按操作细分的权限。

后果:

不可商量的最佳实践:

  1. 创建一个专用用户,例如[email protected]
  2. 给它分配最小的用户组:能只读的地方就只读,只在它需要的模型上给写权限。
  3. 从那个用户生成API Key。
  4. 永远不要使用管理员用户的API Key。
  5. 每60到90天轮换一次这个key。
  6. 记录是哪个代理、哪台机器在使用它。
影响范围对比:使用管理员的API Key会让代理继承全部权限,影响范围是整个ERP。使用一个拥有最小权限的专用用户ai-bot则会缩小影响范围。
图表源码(Mermaid)
flowchart TD
    subgraph MAL["有风险"]
      A1["管理员的API Key"] --> A2["代理继承\n全部权限"] --> A3["影响范围:\n整个ERP"]
    end
    subgraph BIEN["推荐做法"]
      B1["专用用户ai-bot"] --> B2["最小权限,\n仅需所需"] --> B3["影响范围:\n受限"]
    end
    style A3 fill:#7a2018,stroke:#E14228,color:#FFFFFF
    style B3 fill:#14532d,stroke:#3ba55d,color:#FFFFFF
同一个连接,两种影响范围。API Key会继承生成它那个用户的权限:请慎重选择那个用户。

5. 可复现性与环境

对于一个通过对话创建的视图,没有从staging到生产的通路。如果你的实例损坏了,你恢复了两周前的备份,那么在那个日期之后创建的所有视图都会消失,除非你手动导出了它们,或者记录了它们的原始指令以便重新生成。

在一个受git管理的传统模块里,一次checkout就能复现出那个状态。这里不行。

6. 知识的连续性

如果那个与代理对话创建视图的用户离开了公司,谁也不知道他用了什么指令,存在哪些计算字段,什么依赖于什么。没有刻意的文档,每一个这样创建出来的个性化都是一个小小的黑箱。

7. 结构幻觉

一个无法访问真实结构的代理,可能会编造出不存在的字段。视图要么编译失败,要么编译成功却对所有内容都显示为空。最佳实践:让代理在编写之前始终对照真实模型做校验。成熟的连接器暴露了这个能力;请用它。

什么时候该用、什么时候不该用这个模式

决策树:如果你要构建一个临时报表、试点或原型,请作为有判断力的超级用户自己动手。如果这是一个关键流程、CFDI、安全或一次正式上线,请由专业人员陪同来做:顾问加ERP治理。
图表源码(Mermaid)
flowchart TD
    Q{"你要构建什么?"} -->|"临时报表,\n试点,原型"| SI["自己动手"]
    Q -->|"关键流程,CFDI,\n安全,正式上线"| NO["由专业人员\n陪同"]
    SI --> SI2["有判断力的\n超级用户"]
    NO --> NO2["顾问 + ERP\n治理"]
    style SI fill:#14532d,stroke:#3ba55d,color:#FFFFFF
    style NO fill:#7a2018,stroke:#E14228,color:#FFFFFF
黄金法则:关键性和财税风险越高,即兴越少,治理越多。

什么时候该用:

什么时候不该用,若没有专业陪同:

顾问、开发者和技术项目经理的真正角色

我以此收尾,这也是Transgenia为什么把这篇文章发布出来、而不是藏着掖着的原因。

这项技术不取代严肃的顾问。它赋能于他,让他不必再为今天只需一次带监督的点击就能完成的事收取咨询费。

而且它把技术项目经理和资深开发者解放出来,去做那些确实需要判断力和经验的工作:

在Transgenia,我们采用的正是这个模式:一个通往Odoo的MCP连接器,一个拥有最小权限的专用用户,以及一位人类顾问来治理代理所写的一切。不是为了给我们自己省下计费的工时,而是为了把它们释放到那些确实能长期创造价值的工作上。

如果你要自己试试,欢迎入伙:你已经知道该怎么开始了。而如果哪天视图搞坏了生产环境、Odoo开始向你收取代码行费用、或者API Key泄露了,那时候,确实值得打一通电话。而那,恰恰就是那份不会消失的工作。

常见问题

要连接一个AI代理,我需要Odoo.sh或Enterprise版本吗?

不需要。API Key和API访问在任何版次都存在,包括Community自托管,也存在于任何较新的版本里(v14及以后)。版次之间改变的不是能否连接,而是添加Python代码行的商业后果:在Odoo Online和Odoo.sh上会被计入;在Community自托管上,则不会。

用AI创建视图会让我被Odoo收取可计费的代码行费用吗?

如果你只限于用XML做自定义视图、字段和菜单,就不会。这些个性化不计为代码行。收费出现在你请求Python逻辑(server action、带代码的自动化)的时候。如果你在Odoo Online上,就停留在配置、Studio和XML里;把Python留给经过顾问评估的场景。

把我的API Key交给一个AI代理安全吗?

取决于是哪个用户生成的。一个API Key会继承那个用户的全部权限,没有细分。永远不要用管理员的。创建一个拥有最小权限的专用用户,从那里生成key,每60到90天轮换一次,并记录是哪台机器在用它。这样一旦key泄露,你也能缩小影响范围。

那我就不再需要Odoo顾问了吗?

对于一个视图或一个临时报表,一位有判断力的超级用户可能确实不再需要了。但对于架构、安全、迁移、财税集成和ERP治理,需要。这项技术消灭的是食利型咨询(为一次点击就能完成的事按小时收费),而不是严肃的咨询。

当我做Odoo版本迁移时,这些视图会怎样?

那是最大的风险。因为它们既不存放在git仓库里,也没有自动化测试,所以在迁移过程中可能悄无声息地损坏,而没人知道该去哪里找。请记录每一个视图(是什么指令创建了它、在什么日期、用了哪些字段),或者把它导出,以便日后能够复现。

关于作者与 Transgenia

Efraín Carreón OrtizCentrum Transgenia(一家墨西哥技术精品公司)的总经理(Director General)。他持有由 Anthropic 颁发的官方 Claude Code 徽章(Claude Partner Badge),可在 Credly 上验证。

Transgenia 是 OpenAI Partner Network 中的 OpenAI Select Partner,也是 Anthropic Claude Partner Network 的注册合作伙伴。我们在自有生产环境中运营着十二个受治理的 AI 代理,并在医疗和 B2B 领域支持可验证的落地实施。

联系我们:LinkedIn预约 15 分钟,或访问联系页面

继续阅读

← 返回博客