CRM:一个以代理为先的开源客户关系管理系统
一个开源、以代理为先的客户关系管理系统。一个持久的研究代理是其产品。数据库只是用来记下信息的地方。这是反向构建的。代理不是CRM的一项功能;CRM是代理保存笔记的地方。它在自己的部署上独立运行,按照自己的日程安排,处理自己的工作队列。它决定下一个查看什么,预约自己的后续工作,使用研究预算,并在预算用完时停止。它的工作方式没有请求-响应的过程:关闭浏览器,它仍然继续运行。API故意没有任何智能。NestJS报告某些事情发生——一条记录被采集,一个公司被创建,一个与会者是未知的——通过在队列中写入一行。代理租用那一行,并决定它的含义。调用丰富API的Nest服务被视为错误,而docs/api.md解释了导致这一规则的故障。代理自己从不违反的规则是:不对一个人的任何事情进行猜测。没有工具接受置信评分,因为要求模型评估自己的确定性,它将产生错误,且往往会向着使其看起来有用的方向错误。工具报告它们观察到的内容——crm.signature-block,github.account-identity——而账本会为证据定价。强证据记入记录。弱证据成为人类进行决策的建议。对客户的自信错误事实比空白字段更糟,因为没人能说它是错的。设计上是单租户和内部的。登录采用Google,允许列表只需一个环境变量,所有进入的人都可以查看所有内容。这就是整个授权模型——在针对真实客户数据之前,请查看SECURITY.md。 截图交易——过滤器、排序和分页均在URL中,因此视图是一个链接。联系人——大多数是由邮箱同步创建的,而非手动输入。公司——logo,行业和位置自动到达。概述——您的或整个团队的,可在URL中切换。代理apps/agent是其自己的部署,基于eve——Vercel的文件系统优先框架,适用于持久代理。工具是文件,技能是markdown文件,日程是文件,运行时处理持久部分:恢复部署后仍能存活的会话,继续中断的工作。 18个作者工具read_crm_history,search_crm,identify_contact,research_person,enrich_company,record_fact,schedule_recheck……4个技能evidence.md,identity-matching.md,data-boundaries.md,writing-a-brief.md——代理阅读的散文,以代码版本控制。1个日程dispatch.ts,做出任何决定。它租用到期的内容,并为每行启动一个会话。一个沙箱bash,grep,glob和一个/workspace,拒绝所有出口。它自主运行。lib/tasks.ts是工作队列:claimDue使用FOR UPDATE SKIP LOCKED租用行,因此两个调度员处理不同的工作,而一个死掉的运行会在租约到期时释放其行。任何看起来像“每N分钟,最旧的十个联系人”的内容应该属于任务的dueAt,而不是cron表达式。当代理想要再次查看某人时,它调用schedule_recheck并说明原因——原因会显示给代表,因为一个不能说明为什么它将在十四天内回来代理没有理由,仅有一个默认。每个外部来源都是可选的,设计上可以在没有外部来源的情况下运行。甚至没有API密钥时,它也仍然能工作:read_crm_history读取您自己的线程、会议和签名块,这是免费的,也是最好的证据——没有数据供应商可以向您出售来自个人本人的回复。每个密钥都打开一个更进一步的地方可以查看。它在每个会话开始时被告知这个安装有哪些密钥,因此它围绕实际拥有的内容进行计划,而不是逐个失败调用进行填补,并在启动时打印列表:[agent] 在LinkedIn(RAPIDAPI_KEY) [agent] 关闭网页研究(PERPLEXITY_API_KEY) [agent] 关闭公司品牌数据(CONTEXT_DEV_API_KEY)沙箱没有网络和数据库。打开它将为模型提供一个shell——工具调用者和可以保持档案,比较本月的档案与上个月的档案,以及grep一个线程以获取签名块之间的区别。拒绝所有出口不花任何费用,因为web_fetch在应用程序运行时运行,而web_search在模型提供者处运行。它消除的是客户的电子邮件正文可能通过shell命令泄露的唯一途径。该规则的另一半是缺失:沙箱从不提供DATABASE_URL。即使是内部工具,拥有凭据和出口的shell也是泄露形状;而不具有这两者的shell只是一个文本处理器。您可以与它交谈,并观察它的工作。每个联系人、公司和交易……
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡