Skip to content
xu4wangPublic

About

把和 LLM 一起跑通的操作封存成经过审核的确定性指令——在飞书群、定时任务或网页上执行,全程不经过模型。 Freeze what you and an LLM got working into reviewed, deterministic commands — run them from Feishu chats, schedules, or the web, with no model in the loop.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Amber

AI 跑通的,Amber 封存。(Freeze what works.)

跑通一次,随时再用。

为什么叫 Amber:琥珀把一瞬间封存起来,多年后取出还是原样。Amber 把和 AI 一起跑通的操作封存起来,审核通过后按哈希锁定,以后每次执行都和审核时一模一样

📺 视频手册:每章 1 分钟左右的操作演示 · 📖 文档站

Amber 把「和 LLM agent 一起跑通的一次操作」封存成经过审核的确定性应用,在飞书里、网站上一键执行,也可以定时运行。执行时不经过模型。

定位:AI 当驻场工程师,Amber 负责交付。 对不写代码的同事来说,AI 助手就像身边的驻场工程师(FDE):听需求、写脚本、把事情跑通。Amber 负责把它做出来的东西交付成团队能长期依赖的工具:审核把关、锁定版本、以真实身份执行、人人一键可用、按时自动运行,需要时改版或下线。

为什么叫 Amber

Amber 是琥珀。琥珀把一瞬间的东西封存起来,过很多年取出来还是原样。Amber 做的是同一件事:把和 AI 一起跑通的那一次操作封存起来,以后每次执行都和审核通过时一模一样,不会因为模型换了想法而变。

  • 封存:审核通过后代码按哈希锁定,改一个字都要重新审核。
  • 一次成形,长期保存:Run it once. Keep it forever.(跑通一次,随时再用)
  • Logo:一滴琥珀里封着一条斜杠「/」,代表一个被封存的应用。

工作流程

  1. 提交:agent 提交一份草稿,包含参数和一段 Python 脚本,以及它要用到的能力(密钥、服务、运行环境等)。草稿里的任何内容都不被信任。
  2. 认领:Amber 在应用所属的群或私聊里发出认领卡。认领人以自己的身份(来自飞书事件,而不是 agent)试运行一次,确认后提交审核。同一个人在私聊里重新提交、上一版还没提交审核时,新版本直接替换上一版。
  3. 审核:Amber 把完整代码和它声明的能力写进飞书知识库文档,并发起飞书审批;所有审核人都同意才生效。通过的版本按哈希锁定,每次执行前都核对。
  4. 执行:
    • 在飞书里 @Amber 或私聊发应用名,用卡片表单填参数执行。
    • 在网站上选应用执行,图表和表格完整显示(飞书卡片里每张表最多显示 100 行)。
    • 跟自己的 agent 说,agent 用 amber 命令行调用。不需要身份的应用直接执行,结果交给 agent;需要身份的,Amber 发一张确认卡,谁点就以谁的身份执行,结果只显示在卡片上。声明了「结果可以交给 agent」的只读应用例外:agent 在和用户的私聊里用 amber read 发起,用户在私聊卡片上允许(本次,或这个 agent 会话一段时间)后以他的身份执行,结果加密交给这个 agent,用来读他自己的消息、邮件、文档。
  5. 定时:审核时允许定时的应用(新草稿默认允许),可以在网站上或由 agent 发起、人在卡片上确认,建成定时任务,以创建人的身份运行。脚本没有输出时不发消息,适合做监控。
  6. 改版与下线:同名提交就是新版本,认领卡和审核文档附代码差异,只有原创建人能认领,审核通过后自动替换;挂在旧版本上的定时任务暂停,创建人确认后换绑。创建人或管理员可以下线应用。

能做什么

执行身份

  • 每次执行都有一个真实的执行人:发消息或点卡片的人、网站上登录的人、定时任务的创建人。身份只来自飞书事件或网站登录,agent 和脚本给不出身份。
  • 调用内部服务(比如数仓 data-mcp):Amber 在每次调用经过时,当场签发一张代表执行人的短时效 Ed25519 签名凭证,服务按执行人的权限返回数据。脚本拿到的只是一次性的调用票据。见可信身份。
  • 以执行人本人的飞书身份运行:应用声明后,谁执行就以谁的飞书身份调用 lark-cli 或飞书接口,可以读自己的妙记和群消息、在自己的云空间建文档。每人授权一次(私聊 Amber 或网站上),只保存加密的刷新令牌。见以你本人的飞书身份运行。

脚本能用的能力(都写在应用定义里,随代码一起审核)

  • 沙箱:每次执行都在 macOS 沙箱里运行,只能读写本次运行的临时目录和系统工具链;Amber 和执行端的密钥、~/.ssh、钥匙串都打不开。
  • 运行环境与执行端:数据在别的机器上时(比如机器人建的台账),在那台机器装执行端、登记运行环境(可以直接从 botmux 机器人导出),管理员批准后,应用就在那个环境里执行。见执行端。
  • 网络白名单:应用不能直连网络,经代理只能访问执行位置白名单里的地址(默认放行飞书)。确实需要时才声明可以访问外网。
  • 内置大模型服务:把文字交给 Amber 做总结、分类、改写。模型没有任何工具,默认不保存会话,脚本拿不到账号凭证。见主要场景。
  • 密钥:像生产部署的环境变量。应用声明名字,值由创建人或管理员在私聊或网站上填写,加密保存,只交给这个应用,输出里出现会被遮成 ***,agent 拿不到。
  • 配置项:每次执行都一样的值,创建人在网站上设置一次,执行人改不了。
  • 运行时限与并发:管理员在网站上设置,默认 60 秒,应用最长可以申请到 10 分钟。

输出

  • 脚本输出 Markdown,```vega-lite 图表和 ```table 数据表由各渠道自己适配:飞书卡片转成原生图表和表格,网站上完整显示。
  • 输出里写 @名字,正式运行时会真正 @ 到群里的人或机器人,把结果交给下一步处理。

页面、触发器与分享

  • 页面应用:agent 写的网页发布到 Amber,在网站上打开;页面通过审核过的应用查数、写飞书,以打开页面的人自己的身份执行。页面运行在单独的域名和隔离框里,不能联网。见页面应用。
  • 触发器:提交审核、执行失败、定时任务有输出、执行端离线等事件发生时,私聊通知你,或在群里 @机器人让 agent 接着处理。见触发器。
  • 分享:应用默认只有创建人能用。可以复制给同群的人、上架到 Amber Store 让别人各装一份、由管理员设为全局应用,或者在离职、退群时由管理员重新分配。见应用的分享。

管理

  • 网站上的系统管理:审批执行端、设置运行限制、网络白名单、卡片页脚;在应用页面上设为全局应用。
  • 审计日志:认领、审核、执行、大模型调用、飞书授权、分享、密钥和配置项的修改、登录等都会记录,可以按类别、群、关键字筛选。

设计原则

  • 只有「应用」一个概念:应用 = 参数 + 一段脚本 + 它声明的能力。没有执行器、渲染器、步骤这些概念。
  • 应用不写路径:能访问哪些数据由它选的运行环境决定,不选环境就只能用本次运行的临时目录。
  • 不区分读写:脚本会不会改数据,由沙箱、审核人和服务方的权限共同把关。应用只有两个选项,随代码一起审核:confirm(执行前要在表单上确认)和 schedulable(允许定时执行)。认领时一律试运行,试运行就是真实执行一次。
  • 能力全部显式声明:密钥、服务、飞书身份、大模型、运行环境、联网都写在应用定义里,审核时一眼可见,没声明的拿不到。

文档

在线阅读:文档站 · 视频手册

文档 内容
快速上手 给使用者:从一次操作到一个能反复用的应用
Amber 机器人对话 · 和自己的 agent 协作 · 网站操作 在飞书、agent、网站上执行应用和管理定时任务
主要场景的实现方式 查数出报表、定时监控、密钥、读机器人的台账、@ 人或机器人、写飞书文档、配置项、页面、大模型总结
页面应用 agent 写的网页,发布到 Amber 即可打开,以打开页面的人自己的身份执行
触发器 某件事发生时私聊通知你,或在群里 @机器人让 agent 接着处理
以你本人的飞书身份运行 读自己的妙记、群消息,写自己的文档;怎么授权飞书
应用的分享 四种分享方式的区别和怎么选
示例应用 仓库 samples/ 里的天气、密钥保管箱、群聊日报、我的飞书数据:怎么安装、怎么用
常见问题 使用中的常见疑问
审核指南 · 管理员手册 给审核人和管理员
安装与部署 环境要求、配置文件、launchd 常驻、nginx、运维
飞书应用配置 权限清单、长连接事件、审批定义、知识库、发布检查
执行端 在数据所在的机器上执行:装执行端、登记运行环境
概念模型 · 脚本约定 给开发人员:对象之间的关系、脚本的输入输出与沙箱
agent 接入:命令行、skill 与接口 安装、命令、三档行为、定时任务、触发器、接口、读取密钥、读取个人数据
可信身份 · 完整示例 身份从哪来、网站登录、执行身份凭证与服务方验证
运行环境定义格式 运行环境的 JSON 格式规范(amber-env/1),独立于 Amber,其他 agent 平台和沙箱可以照着移植
给 agent 的 skill agent 怎么调用 Amber、怎么提交新应用

快速开始

npm install
node src/main.ts       # 飞书长连接 + agent 接口 127.0.0.1:7341 + 网站 127.0.0.1:7342

配置文件、飞书应用权限、launchd 常驻和 nginx 见安装与部署与飞书应用配置。

许可证

MIT。web/vendor/ 下的前端库保留各自原有的许可证,见 web/vendor/README.md。

About

把和 LLM 一起跑通的操作封存成经过审核的确定性指令——在飞书群、定时任务或网页上执行,全程不经过模型。 Freeze what you and an LLM got working into reviewed, deterministic commands — run them from Feishu chats, schedules, or the web, with no model in the loop.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages