尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

先审批后保存:OpenDots 人在环审批卡如何安全管控 AI 生成内容

先审批后保存:OpenDots 人在环审批卡如何安全管控 AI 生成内容 先审批后保存OpenDots 人在环审批卡如何安全管控 AI 生成内容【免费下载链接】OpenDotsYour always-on AI coworkers that move between text, calls, and Slack.项目地址: https://gitcode.com/gh_mirrors/op/OpenDotsOpenDots 是一款可自托管的开源 AI 同事框架让常驻 AI 在文字、通话和 Slack 之间协作。它的**人在环审批卡Review Card**解决了一个关键问题AI 生成的内容必须先由你预览、审批才能写入 Space 文档库——在点头之前AI 无法保存任何内容。️什么是人在环审批卡为什么 AI 内容要先审批很多人用 AI 写文档时都会遇到同一个顾虑AI 会不会把没审过的内容直接写进我的知识库OpenDots 的答案是一句极简的流程Ask → Browse → Approve → Save提问 → 预览 → 审批 → 保存当你让某个 DotAI 专家写一篇草稿存到 Space时AI 不会直接落库而是暂停对话在聊天流里弹出一张审批卡展示草稿标题、Markdown 预览以及两个按钮——✅Approve save批准并保存创建页面到已授权的 Space返回可点击的页面链接Decline拒绝告诉 AI这份草稿被拒绝不要保存然后继续对话这套机制由 CopilotKit 的 human-in-the-loop 能力驱动审批卡源码在 src/client/PageReviewCard.tsx。审批卡完整流程从 AI 草稿到一键保存审批卡的状态机非常克制用户在卡片上只会看到这几个状态状态卡片提示说明恢复中Checking saved review…刷新页面后先查这张卡是否已保存过待审批Ready for your review/You decide展示草稿等待你的决定保存成功Saved to your Space/Approved出现Open page按钮直达页面被拒绝Review ended/Not saved明确提示No page was saved卡片底部有一句关键提示Nothing is saved until you approve.在你批准之前什么都不会被保存。按钮区域代码见 src/client/PageReviewCard.tsx。工具注册定义在 src/shared/page-review.ts其中review_space_page工具的参数用 Zod Schema 严格约束标题 ≤160 字符、正文 ≤20000 字符、必须携带目标spaceId。三道安全护栏OpenDots 审批卡如何防绕过护栏一AI 被明确禁止自批自存review_space_page工具的描述里写死了这条铁律见 src/shared/page-review.tsDo not create the page yourself after this tool: its approved result includes the saved page URL. Call once, then wait for the review result.也就是说AI 调用审批工具后必须停下等待页面只能由你的点击创建AI 自己绕过去用其他工具创建页面是不被工具描述允许的。护栏二服务端双重校验 Space 权限前端按钮只是体验真正的闸门在服务端。每次批准请求都会经过 src/server/page-routes.ts 的权限检查用requireThread确认对话归属哪个 Dot用 src/server/workspace.ts 的canAccessSpace查询dot_spaces授权表若该 Dot 没有目标 Space 的权限或权限已被撤销直接返回403——即使审批卡点得再快也没用。这意味着审批不只是AI 问不问你更是服务端强制执行的访问控制。护栏三草稿结构严格校验拒绝注入审批请求进入服务端后会用与工具定义相同的 Zod Schema 再做一次safeParse且.strict()模式拒绝任何多余字段——多传一个字段都会得到 400 错误。标题、正文、spaceId、toolCallId之外的内容一律不合法堵住了草稿结构被篡改的空间。防重复保存审批回执如何保证幂等重试网络不稳定时最容易翻车的场景是点了Approve save请求成功了但响应丢了。再点一次会不会产生两个重复页面OpenDots 用一个审批回执表page_reviews解决了这个问题实现见 src/server/pages.ts每次保存成功后服务端在page_reviews表中记录(threadId, toolCallId) → (pageId, spaceId)整个查回执 → 建页 → 写回执在BEGIN IMMEDIATE数据库事务中原子完成重复点击或重试时先按toolCallId查回执——已保存过就直接返回同一个页面绝不重复创建若同一审批曾保存到另一个 Space返回 409 冲突防止张冠李戴。刷新页面同样安全前端会先调用GET /conversations/:id/reviewed-page/:toolCallId恢复卡片状态见 src/client/page-review-decision.ts已批准的草稿会直接显示Saved to your Space和Open page按钮。快速上手体验 OpenDots 审批卡使用Node.js 24 npm三步跑起来git clone https://gitcode.com/gh_mirrors/op/OpenDots cd OpenDots npm ci cp .env.example .env npm run dev打开http://127.0.0.1:5173创建一个 Space、配置一个 Dot然后在聊天里对 Dot 说帮我写一份项目发布说明保存到 Space先给我过目。——审批卡就会出现在对话流中。完整配置模型、Slack、通话、Dockerdocs/SETUP.mdDot 电脑部署说明docs/COMPUTERS.md审批相关测试tests/page-review.test.tsx、tests/page-routes.test.ts一句话总结OpenDots 的审批卡把AI 能写和AI 能存彻底分开——草稿必须经过 Zod 校验、服务端 Space 权限检查、以及你本人的点击才能进入文档库而幂等回执机制保证任何重试都不会产生脏数据。这就是给 AI 生成内容上一道人在环安全闸的完整思路。【免费下载链接】OpenDotsYour always-on AI coworkers that move between text, calls, and Slack.项目地址: https://gitcode.com/gh_mirrors/op/OpenDots创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表