Skip to main content
Glama
khaoss85

Accordo

Accordo

向你的编码代理描述你的销售流程;拥有它构建的 CRM。

这是一个开源框架,Claude Code、Codex 和 Gemini CLI 使用它来生成一个以归你所有的代码形式存在的 CRM 应用——内置确定性工作流、策略门控的人工审批、审计和追踪。

名字已经选定,域名已经注册。npm create accordo 会从已发布的 create-accordo@0.1.0 搭建一个可工作的项目;accordo 包本身仍是一个空的 0.0.1 名称预留——没有任何东西会把该框架作为库安装——并且 @accordo 作用域已被声明,并有意保持为空。尚未进行商标筛查,而且该项目不可部署到生产环境。其确切含义见它止步于何处,在阅读其余内容之前值得先读一下。

Business request
      ↓  "Renewals of €50,000 or more need a manager's sign-off."
Claude Code / Codex
      ↓  reads AGENTS.md · 12 skills · MCP · `crm app inspect`
Modules + deterministic workflows + versioned policy
      ↓
API + Admin + trace + audit — in your repository, as code you review

何时使用 Accordo

  • Custom CRM: 当商业流程本身就是产品,且结果应该是可审查的代码,而不是别人运行时里的配置时。

  • 客户中心 当“中心”指的是一条本地商业记录链,并带有受治理的操作时。Accordo 不像 CDP 那样摄取数据源或解析客户身份。

  • 智能 CRM 当编码代理应组合应用程序,而版本化策略和具名人员保留业务决策权时。它是代理构建的软件,而不是自主决策者。

  • CDP + CRM 当外部 CDP 负责数据摄取、身份解析和受众,而 Accordo 在旁边拥有确定性的 CRM 流程层时。Accordo 不附带任何 CDP、连接器、导入器或同步运行时。

这些相邻术语是检索路径,而不是额外能力的声明。已检入的推荐映射图将每一项与框架证明了什么、止步于何处绑定起来。


Related MCP server: Pathmode

为什么存在

每个 CRM 最终都会要求你调整自己的流程,去适配它的模型。两种常见的出路都要付出代价:

  • 配置一个平台 —— 上手很快,但你的自定义以元数据的形式寄居在别人的运行时里。当达到天花板时,你就得 fork 一个 monorepo。

  • 从零构建 —— 完全自由,但每个团队都要重新推导校验、管道语义、审批和审计。通常是在项目后期,通常是在压力之下。

这个框架是第三种选项:代理生成应用程序,而框架提供团队在截止日期前总是搞错的部分。任何开发人员都可以用这个测试来判断:“如果这个项目明天消失了,我还剩下什么?” 而这里的答案是:你仓库中的一个 Node 应用,没有第三方运行时依赖,还有一个任何客户端都能打开的 SQLite 文件。

已经验证了什么

下面的每一行都与一个已合入的测试绑定。完整账本——声明、证据,以及随之而来的边界——在 site/claims.json 中,其背后的评审规范是 docs/QUALITY_GATES.md

能力

边界

证据

一个模块清单会变成一次迁移、一个服务、一个 REST 资源、一个 SDK 方法和 Admin 界面,且无需页面代码

仅生成式 CRUD——自定义对象的工作流和审批仍须手写

tests/module-factory-e2e.test.jstests/generated-api-e2e.test.jstests/admin-modules.test.js

生成的对象相互引用:外键、运行时目标校验、Admin 选择器

仅支持已生成对象间的多对一;没有多对多、反向集合或级联

tests/reference-fields-e2e.test.js

确定性审批策略:达到或超过阈值的续订会等待一个具名人员

内置续订对象和一个数值阈值

tests/workflow.test.jstests/api.test.js

代理无法代替人类做出审批决定 —— 由测试断言,而非由约定断言

行为者被断言,而非被认证;这针对的是诚实代理,而非攻击者

tests/workflow.test.js

商机在代码优先的管道阶段中推进,操作以服务端为权威——客户端请求,服务端决定

已在内置 Opportunity 模块上验证;不为生成的自定义对象声称可配置管道

tests/opportunity-pipeline-e2e.test.jstests/pipeline-contract.test.js

线索捕获、丰富化、可解释的版本化评分、确定性路由、资格认定、转化

丰富化针对 fixture 提供程序运行;未接入真实数据源

tests/lead-intelligence-e2e.test.jstests/lead-conversion-e2e.test.js

服务端定价的组合报价、不可变的报价版本、带审批的版本化折扣策略

fixture 目录提供程序;整数美分、无 FX——货币永不加总

tests/commercial-e2e.test.js

签名信封 → 已验证事件 → 已签名工件证据 → 恰好一个不可变订单

fixture 签名提供程序、仅测试用 webhook 密钥、提供程序报告的工件哈希

tests/signature-order-e2e.test.js

订单激活为合同、不可变版本、订阅和待履行义务

不执行计费、续订、修订或取消;没有调度器

tests/contracts-activation-e2e.test.js

交付交接到一个包含工作包、里程碑和可选合作伙伴的项目;由人驱动的执行

不进行调度、人员配置、验收或计费;交付物不作为对象存在

tests/delivery-handover-e2e.test.jstests/delivery-execution-e2e.test.js

仅追加的工时与费用证据,按版本化策略计价,并给出可复现的贡献估算

刻意不算毛利:不确认收入、不计 COGS、不计 ARR/MRR、无 FX

tests/delivery-economics-e2e.test.js

客户编写的领域包可挂载和卸载,且内核指纹保持不变

用于启动它的脚手架只会写入一个空包,不会做其他任何事情;没有注册表、没有发布、没有沙箱——包代码以宿主的权限运行

tests/package-contract.test.jstests/custom-package-e2e.test.js

accordo package scaffold <name> —— 一个最小、空、符合规范的本地包,原子写入,默认试运行

它不发明业务逻辑、不组合任何内容、不验证全局标识唯一性,也不安装或发布任何内容

tests/package-scaffold.test.jstests/package-test-command.test.js

crm app inspect —— 一份确定性、仅源码的 JSON 报告,说明一个应用包含什么

从不打开数据库、联系提供程序或读取机密——并在自己的输出中说明这一点

tests/app-inspect.test.js

crm solution check —— 解决方案计划是一份已检入的契约,带有规范指纹

它是文档契约,不是规划器,也不是运行时;不执行任何计划

tests/solution-plan.test.js

crm scenario run —— 两个已检入的业务场景会针对真实组合的应用程序运行,并报告它们获得了哪些 JTBD 行 以及哪些没有获得

覆盖率由场景声明,而非发现;它不提升任何行,不驱动浏览器,每次运行只代表一种组合

tests/scenario-run.test.js

生成的模块通过显式修订和仅追加的命名迁移进行演进

仅源码层面:特定数据库实际应用了什么,从这里无法得知

tests/module-evolution.test.js

整个测试套件在每次推送时都会运行,连同冒烟测试一起。具体有多少个测试,以及测量时所对应的提交,都记录在 site/claims.jsonmeasuredAgainst 下——这是本仓库中唯一写下测试数量的地方,也是 npm run gtm:check 允许数字出现的唯一位置。

运行它

Node.js 22.16 或更高版本。没有第三方运行时依赖,也没有构建步骤。

npm run tour     # compose the whole application and inspect it
npm run verify   # source checks, then the whole test suite
npm run falsify  # break five rules on purpose and watch the suite catch them
npm run demo     # the approval slice, end to end
npm run dev      # http://localhost:4000

npm run tour 是了解这到底是什么的最快方式。仓库的默认组合被有意设为空——项目会写出它自己想要的组合——所以在新克隆的仓库上运行 crm app inspect 不会报告任何内容。该 tour 会将启动安装器(与 CI 每次推送时运行的同一个)运行到它保留的一个目录中,然后检查结果:

  modules       76        resources     71        policies       7
  packages       9        actions       64        providers      1

  production posture — local development only: no authentication, tenancy or RBAC
                       exists, and actor headers are not identity

它以检查员说无法看到的十一件事作为结尾,因为一场只展示好的一半的导览不值得运行。npm run tour -- --keep ./demo 留下项目供探索;--json 打印机器可读的收据。

npm run falsify 是另一个方向。测试数量说明写了多少;它并不说明要让一个测试保持绿色需要出什么错。因此它一次移除一条规则——审批的人工参与者守卫、审批阈值的边界、webhook 签名验证、策略版本不可变性、完全托管的模块不产生公开写入的规则——运行本应捍卫它的测试套件,并指出捕获它的那个测试。它拒绝在未提交的更改上运行,并恢复它触碰的每个文件。任何存活下来的东西都被打印为缺口,因为那才是有用的输出 (docs/FALSIFY.mdtests/falsify.test.js)。

npm run demo 创建两个续约,并在每次推送时由 scripts/smoke.js 断言:

  • €20,000 → 直接移至 Proposal。

  • €80,000 → 停在 Approval Pending,直到经理决定。

从编码代理使用它

Claude Code 读取 CLAUDE.md.mcp.json.claude/skills/。Codex 读取 AGENTS.md.codex/config.toml。两者都已签入并连接在一起。

Read AGENTS.md, PRODUCT.md and docs/PROJECT_STATUS.md.
Run npm run crm -- app inspect --json.
Tell me which parts of my commercial process this already supports, and which it does not.

一个测试平台只需要:运行命令、读取 stdout、读取退出码、解析 JSON,以及读写文件。不需要 MCP 服务器、不需要网络、不需要凭据、不需要数据库、不需要长驻进程——docs/AGENT_HARNESS_COMPATIBILITY.md

npm run crm -- app inspect --json          # what this application contains
npm run crm -- solution check plan.json    # is this plan still valid against it

退出码就是契约:0 有效 · 1 有问题,报告仍会打印 · 2 不可读。

MCP 服务器通过 stdio 运行(node --no-warnings packages/mcp/bin/server.js),并暴露 项目检查、机会列表、阶段变更请求、审批决策、运行轨迹和模块脚手架。生成代码和破坏性工具在未传入显式 apply 标志时均为 dry-runtests/mcp.test.jstests/scaffold.test.js——docs/MCP.md)。 它仅支持 stdio 且仅限本地:没有托管或需认证的 MCP 端点,服务器继承启动它的进程的权限。

止步之处

在评估以上任何内容之前,请先阅读此节。docs/benchmarks/CRM_JTBD_MATRIX.md 以保守的状态词汇跟踪每个 CRM 任务,其中不支持是默认状态,离开该状态需要证据。

  • 无认证、无租户、无 RBAC。 服务器仅限本地开发;actor 头是一个断言,而非身份。不要将其暴露到网络。

  • 仅 SQLite。 PostgreSQL 在 Production Spine 轨道上,尚未实现。

  • 构建基准尚未运行。 不存在 Successful Agent Build Rate。任何归于此项目的百分比都是捏造的——docs/strategy/CRM_BUILD_BENCHMARK.md 是协议,而非结果。

  • 无调度器、无提醒、无定时任务。 Follow-up Tasks 和 Activity 时间线作为一个共享模型存在(docs/WORK_TASKS.md),每一步都由人来推动:到期日不改变任何状态,不存在任何重复性事件,不分配、不通知,续约通知期被记录但从不触发。

  • 无邮件、日历或营销集成。 存在通知提供者契约;没有任何适配器向任何人发送任何内容。

  • 无导入、导出、去重、合并、批量编辑、保存视图或全局搜索。 这些是每个商业 CRM 的基本要求,而它们都还没有里程碑。

  • 你还不能把真实客户数据放进去。 没有认证、没有租户、没有导出、没有删除路径——因此数据主体的访问或删除请求无法用它来满足。docs/strategy/DATA_GOVERNANCE.md 仅是设计文档。唯一成立的一点是:线索评分是确定性的、有版本化的、可解释的,而不是模型对一个人的判断。

  • 这是一个框架,不是你可以注册的产品。 没有托管 CRM、没有免费层、没有账户。输出是一个你运行的应用程序。

  • 所有权意味着供应商源码内嵌:没有框架依赖需要升级。 npm create accordo——已发布的 create-accordo@0.1.0——通过将框架源码复制到项目中,搭建一个能启动、从 app inspect 报告 valid 并从 project doctor 以 0 退出的项目;同样的引导程序也可以从检出中运行(node packages/create-accordo/bin/create-accordo.js <dir> --apply,无需安装、无需网络——tests/project-bootstrap.test.js)。注册表交给你的只是脚手架,而不是框架:accordo 包是一个空的 0.0.1 名称预留,这是有意为之。框架被内嵌到项目中,因此你完全拥有结果——而升级意味着合并,而不是升级版本号。

五个文件夹中的架构

packages/core/        the runtime platform: registry, services, workflow engine, audit
packages/modules/     CRM domain primitives
packages/domains/     optional domain packages (contracts, delivery) on a public contract
packages/mcp/         tools and context exposed to coding agents
apps/                 API server and generated Admin

代理从不写入数据库表。它调用服务方法和命名工作流,这些工作流保留验证、参与者身份、策略、轨迹和审计——ARCHITECTURE.md

文档

阅读此文档

用途

AGENTS.md

代理在修改代码前必须遵守的规则

PRODUCT.md

产品是什么、不是什么

ARCHITECTURE.md

技术模型及其扩展规则

DECISIONS.md

决策日志,ADR-001 … ADR-020

docs/PROJECT_STATUS.md

仓库中今天为真的内容

docs/benchmarks/CRM_JTBD_MATRIX.md

每个 CRM 任务、其状态及其证据

docs/QUALITY_GATES.md

评审纪律,包括对抗性评审类别

docs/strategy/MASTER_PLAN.md

品类、定位、路线图、指标

docs/strategy/GO_TO_MARKET.md

这如何触达人群,以及什么被门控在人工决策上

许可证

MIT,由 ADR-023 确认。

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Agent-native CRM. 25 tools — contacts, deals, sequences, enrichment waterfall, audit log.

  • Runtime AI governance: decision gates, human approval, hash-chained audit, compliance mapping.

  • Deterministic compliance and vertical knowledge bases for autonomous agents. Free 24hr trial.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/khaoss85/agent-crm'

If you have feedback or need assistance with the MCP directory API, please join our Discord server