惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
Microsoft Azure Blog
Microsoft Azure Blog
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 看到有公司考核 token 指标,很好奇大家上个月的 AI 账单是多少 GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? 现在还有什么渠道可以稳定安全地使用 Claude 吗? 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? gemini cli 貌似挂了,一直返回 403 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 只有我一个人觉得 codex 不好用?
我做了一个飞书多维表格/钉钉 AI 表格的简单替代品
penzi · 2026-06-22 · via V2EX

Github: https://github.com/autable/autable

主页以及文档: https://autable.github.io/

最近我在尝试把一些公司内部的流程迁移到钉钉 AI 表格, 然而发现并不顺利

  1. 钉钉审批流程同步到 AI 表格之后, 会产生多条相同编号的记录, 钉钉的表单和自动化没有任何办法处理这个问题, 因为钉钉并没有把 unique 的 record id 暴露出来
  2. 钉钉 AI 表格的 AI 非常傻, 经常做不到一些简单的表单定义和自动化流程定义
  3. nocode 的自动化对于会写代码的人完全是负生产力
  4. 最大的问题, 即使付费, 默认最高也只有单表 5 万条记录

我也调研了一下开源方案, 一个问题就是 OIDC 登录基本都是付费功能, 商业版 self-host 普遍定价比钉钉/飞书的最高级别的订阅还贵

最终, 我搓了一个符合我需求的 AI 表格

  1. 支持表格, 自动化, 表单和字段级别的权限配置
  2. 自动化, 表格都使用简单的 js 定义, AI 友好的方式
  3. 支持公式字段, 公式同样使用 js 表达
  4. 存储使用 sqlite, 运维成本低, 最初的容灾方案每天备份一次就行了
  5. 支持 OIDC, GPL 3.0 license, 永远不用担心开原版缺失关键功能

目前刚跑通一个使用案例, 可以使用自动化同步钉钉 AI 表格的数据, 已经可以渐进式迁移, 并且可以借助这个打通钉钉内部所有数据的同步

下面是一个周期性同步钉钉 AI 表格的 workflow.js 例子

function instances(info) {
  return {
    timer: "time.schedule",
    dingTable: "dingtalk.notable.records.list",
    fields: "table.field.create",
    rows: "table.row.upsert"
  };
}

function trigger(info) {
  return {
    instance: "timer",
    params: {
      interval_ms: 5 * 60 * 1000
    }
  };
}

function run(info) {
  const table = "同步表";
  let nextToken = "";

  while (true) {
    const page = info.instance("dingTable").exec({
      max_results: 100,
      ...(nextToken ? { next_token: nextToken } : {})
    });

    const records = page.records || [];

    info.instance("fields").exec({
      table,
      fields: fieldsOf(records)
    });

    for (const record of records) {
      info.instance("rows").exec({
        table,
        match_field: "dingtalk_record_id",
        values: valuesOf(record)
      });
    }

    nextToken = page.next_token || "";
    if (!page.has_more || !nextToken) break;
  }

  return { ok: true, table };
}

function fieldsOf(records) {
  const fields = {
    dingtalk_record_id: "string"
  };

  for (const record of records) {
    for (const name of Object.keys(record.fields || {})) {
      fields[name] = "string";
    }
  }

  return fields;
}

function valuesOf(record) {
  return {
    dingtalk_record_id: String(record.id || ""),
    ...Object.fromEntries(
      Object.entries(record.fields || {}).map(([name, value]) => [
        name,
        stableStringify(value)
      ])
    )
  };
}