Ask AI:官方 Agent 能力、账户与受控业务操作
我们要做的是一个能在 Retaintive 内理解当前工作、查证业务数据、提出并执行获准操作的助手。模型可以换,用户可以选择公司渠道或自己的 AI 计费渠道;工具、权限、业务记录和一致性仍由 Retaintive 管理。用户还需要看懂它的实际效果、谁付款、怎么排查问题。
2026-10-04 02:49 UTC 状态:站内 test 已部署本轮加固,并完成指定长对话和取消场景复验;整体稳定性验收尚未完成。 网站采用官方 Agents SDK。修复了 scoped Task 引用、历史权限过滤、有界 429 retry、共享 Outcome/Timeline reader 和每请求一次性恢复;真实测试又发现“缺证据却断言未转化”,已增加受限措辞检查并复测。此处记录的是 02:49 UTC 运行快照,当时代码仅在未合并 feature branch。当前 PR 状态见下方记录;未改 production。
当前 review 状态(2026-10-04): 产品文档已提交 docs PR #513;Ask AI 代码已提交 infra PR #2619,同步 infra main 85adf7080,功能尚未合并。只有原样 schema 基线修正 #2611 已进入 main。production 放量条件由 #2618 跟踪。本轮未修改共享数据库或重新部署,运行证据仍采用下方注明日期和版本的快照。
最新产品方向(2026-10-03 用户再次确认):聊天窗口必须留在 Retaintive 内,不做让客户转去 ChatGPT / Claude 聊天的 connector、MCP 或 Marketplace 产品入口。当前主线继续站内 DeepSeek + 官方 Agents SDK,先加固连续追问、业务数据准确性和失败恢复;通用 Agent 能力优先复用官方 SDK,业务权限与最终写入由现有代码负责。普通客户直接使用 Retaintive AI,不要求理解 OpenRouter 或填写 API key。商业接入申请与审批前后步骤已记录:用户已自行提交并提供 OpenAI 收件回执,等待产品匹配评估,尚未获批。站内订阅连接等待官方资格,不阻塞公司渠道;现有 API key 能力不代表最终普通客户入口设计。
本文是产品目标与可查看成果入口。工程契约与运行记录维护在 callytics-infrastructure/openwiki/studio/ask-ai.md;业务概念服从产品北极星、系统世界观和 Task V3 contract。
发布流程事故补记(2026-10-04): 本任务曾将未合并 Ask AI 分支的 0130 migration
提前应用到共享 test,违反已有发布流程,导致其他 PR 的 integration 和 test 部署被
migration drift 阻塞。用户用 #2611
原样补齐 main 后恢复。上述功能复验不证明这一迁移操作合规。后续必须通过 Drizzle
generate → review / PR → merge → 同一 SHA 的 CI migrate / verify → deploy;合并前
只用 disposable branch 或本地 PostgreSQL,不直接改共享库、不改写已执行 migration。
此次只读核对了代码和 GitHub 结果,没有再次修改数据库或部署。
从对话历史还原完整目标
用户最初提出的重点是:能否直接使用 OpenAI / Claude 已经做好的 agent engineering,而不只是调用一次模型 API。后续明确要求看真实 demo、研究现有代码、区分账户和费用、支持权限内的业务修改,并优先保证功能和数据一致性。
因此,“test 第一版可用”对应一个已验证的阶段,不等于上述长期目标全部完成。
设计图与实际效果
历史设计原型
下面保存最初用于解释产品效果的设计图。它使用合成数据与模拟交互,表达助手、工具步骤、付款渠道和审批的位置;不是当前部署截图,也不证明画面中的能力都已实现。涉及 ChatGPT / Claude 订阅的连接画面只表达未来流程。

还保留了“用户在外部 ChatGPT / Codex 客户端访问 Retaintive”的入口概念图,仅作为历史设计记录。用户已明确排除这个产品入口,不在当前建设范围;尚未上线、未发布 Marketplace / MCP,也不代表网站可以直接使用订阅额度。

早期真实 test 截图
当前站内入口是既有页面旁的 Ask AI 面板。用户先照常登录 Retaintive,选择模型付款渠道;提问后看到真实工具进度、回答、可定位引用、费用状态,以及必要的改期卡片。


这些截图来自 2026-10-03 的合成 Task 验收:助手提出 10 月 9 日 15:00 的预览,未点击确认,因此实际 Task 仍安排在 10 月 8 日 15:00(America/New_York)。旧截图里的预览会过期,体验时需要重新提问。

体验入口:Retaintive test。需要对应测试门店权限。合成演示 Task 名称为 Ask AI Smoke ask-ai-smoke-ae1dddaa,显示门店为 Demo Studio;可以问“当前任务的下一步安排是什么”,或要求先预览改期。该任务没有自动外呼来源,本次没有发送真实电话或短信。
面板上的按钮做什么
ChatGPT / Claude 订阅按钮当前没有可用的商业授权流程,不应让用户误以为填一个 API key 就接上自己的月费订阅。普通客户使用公司 AI 不需要完成这一步。
当前预览的到期检查位于 UI;写入复用既有 Task command,后端检查业务权限、版本和 幂等性,尚未将 proposal expiry 绑定为独立的服务端确认条件。这个 production 前的 缺口与“AI 不能自动保存”分别记录,不能用按钮禁用证明服务端已经拒绝所有过期提案。
2026-10-03 继续建设的决定
产品决定:聊天留在 Retaintive;普通客户直接使用公司 DeepSeek,不要求懂 API key 或 OpenRouter;优先借官方 SDK 的通用执行能力。先保证连续追问、数据准确性和失败 恢复。排除外部 ChatGPT/Claude connector 产品入口。ChatGPT 商业申请已收件、未批准, 等待期间公司渠道继续建设;API key 能力保留为可选能力,不代表最终普通客户入口。
工程取舍:保留官方 Agents SDK 0.18.0;安全的 provider HTTP 429 一次 run 最多额外 尝试一次,付款渠道不变,工具不重放。历史先过滤权限再取最近十轮。Task 引用由服务器 解析真实身份,正文引用一起验证;SMS 失败与计划不能冒充业务结果。读取 Task 关闭时 对齐实际 writer、保留时间毫秒和 Policy 守卫,把 Staff 审计归属与 Outcome credit 分开。
五分钟 Neon 巡检已在 test 改为每请求一次性 expiry,晚开始的请求有独立运行期限。 安排失败不启动付费 worker,恢复失败耗尽重试进入 DLQ;没有请求不报警。完整性检查 仍是请求触发抽查,晚确认未必再检查,DB insert→schedule 的 crash 仍靠下一次请求 兜底。Streaming、receipt-triggered audit/durable dispatch、所有关闭变体全量评测和 production rollout 继续待办,不能声称已完成。
早期本地验收 checkpoint:API 四组 227 pass、SDK/data/retry/schedule 七组 44 pass,真实
Neon 临时表超时 CAS 与历史权限 LIMIT 通过。最新真实 SDK 三轮合成 Task 问答正确区分
Next Action、Deadline 和未证明转化,Task version 5 与时间未变,模型费 $0.00198024。
这是指定场景的实测小样本,不代表所有业务问答准确,也不包含基础设施成本。
功能分支当时已同步 infra main d6d858ede,Ask AI 功能未合并;01:30 UTC 曾观察到 test worker/API 被后续 main
部署覆盖且 monitor 不存在。本轮已重新部署,下方旧截图/release 明确保留为历史证据。
本轮部署与真实验收(2026-10-04 02:49 UTC)
真实长对话中,Task 工具正确报告没有已验证 Outcome,模型却两次写出“未转化”。只补
prompt 未能消除,因此增加服务端针对已发现 conversion 措辞的证据检查:同一句引用
的 Task 必须有匹配 canonical lead_conversion Outcome;重查缺失或异常会清除旧
支持。首次违规让官方 SDK 纠正一次,再犯拒绝发布答案和草稿,已知费用仍保存。
它不保证所有自由文本同义表达、人物绑定、复杂否定、时间范围和付款语义正确。
最新 query b0f50d52-e039-4089-9a35-2847c53dd3b4 在原长对话里成功,回答“当前记录
尚不能确认转化”,只有一次 Task 查询;三个模型 receipts、complete ledger、模型费
$0.00098358。旧错误答案保留为失败证据,不把 succeeded 请求状态等同业务答案正确。
Stop query 76645537-4730-4ada-9409-dc8f51913f6b 落库 cancelled,页面显示 Stopped;
未 claim 运行(started_at 为空),没有费用 telemetry,不伪造已知零成本。本轮只读验收前后 Task
snapshot 一致,version 5 和 Next Action 2026-10-08T19:00:00Z 未改变。


普通 Playwright click 复验了设置、付款菜单、引用定位、关闭/重开、新对话、Send、Stop; 1280×800 与 390×844 没有面板横向溢出,console error 为 0,临时 viewport 已恢复。 root 全量 965 pass / 20 skip / 0 fail、API 四组 227 pass、最新 SDK 八组 63 pass、root typecheck 和正常提交 hooks 通过;真实 Neon 五项只读/临时表验证通过。独立复核关闭 已发现的四个 guard 漏洞,另有八个失败重读探针通过;不代表所有业务语义全面验收。
CloudWatch 02:05–02:49 UTC 的 API/worker/monitor 未观察到 error event。一次性 Scheduler callback 实际执行,首个 schedule 执行后自动删除,DLQ 三种消息计数为 0,三个 alarms OK。impact/recovery 接 SNS;integrity 在 test 为 diagnostic、没有 notification action。 真实通知送达仍未验收。Sentry maps 带 Debug ID 配对留在本地,upload 缺写权限(HTTP403)。
本轮七条浏览器请求的已知模型费合计 $0.00513720,包含修复前错误答案;一次取消
没有费用 telemetry,不能把它当成完整账单保证,也不含基础设施费用。
到底借用了什么
模型负责理解问题和选择工具。harness 是围绕模型的执行机制,管理工具循环、运行生命周期和进度。Retaintive 提供业务工具,并决定什么数据可读、什么操作可写、谁付款和记录如何落库。
当前接入的是运行在我们服务器里的 Agents SDK,不是 OpenAI 托管 Agents API 的 Codex harness,也不等于完整 ChatGPT 产品。SDK 已支持 sessions 和 streaming;当前网站仍使用自有权限过滤的近期问答上下文与 polling,不能把官方支持当成本产品已经接入。后续优先评估复用官方实现,保留门店权限和最终答案校验。官方运行与会话说明。
选择 Agents SDK 是结合当前 Lambda / Neon、既有工具和多模型需求的工程取舍。官方支持通过 AI SDK adapter 接其他模型;该 adapter 仍为 beta,需按选定 provider 验证。当前版本已固定,并保留 provider 多轮 contract tests。官方 adapter 文档。
公开 SDK 代码作为依赖打包进我们的 worker,在 AWS Lambda 执行;模型通过选定 provider 的远程 API 运行。Neon 仍保存我们的业务记录,工具只查询权限范围内的结果,再将这些结果作为模型上下文发给所选 provider。自带 key 改变计费项目,不改变数据权限;也不意味着模型只在客户电脑计算。我们没有下载模型参数或完整 ChatGPT 产品的私有代码。
Codex 的公开 harness / app-server 是另一种可用路线,包含会话、事件流、工具与审批协议;应用继续拥有业务上下文和系统记录。开源 harness 与模型访问是两件事。Codex 官方说明。
当前网站采用真实进度与 polling,结束后发布已校验的完整答案,尚未实现逐 token streaming。也没有开放任意 shell / SQL、MCP Marketplace、全部 UI mutation,或复制用户原 ChatGPT 的对话与记忆。
工具循环与确认写入
首个修改能力只调整已有 managed Task 的 Next Action 时间,保留行动内容。生成草稿时检查角色、DNC、Task 状态与身份、门店时区、夏令时歧义、未来时间和 deadline。卡片包含前后时间、理由、版本与有效期;聊天里回复“确认”不会保存。
确认复用现有 UI 的 Task 修改接口。相同 command 重试不重复改动;其他人已改 Task 时旧版本被拒绝。草稿到期目前由 UI 在确认前检查,服务端既有 writer 没有核验 proposal 归属/到期的专门入口;服务端仍强制业务权限、版本与时间约束。production 前需明确是否把草稿验证也收敛到服务端。不能把这个动作推广成“模型可以自由修改数据库”,也不能将 Task 改期当成课程预约、通话时长或业务 Outcome。
登录、token 和谁付钱
Retaintive 登录决定业务权限;AI 计费连接决定这一轮模型请求由哪个 API 项目付钱。 用户能登录某个模型账号,不会因此取得其他门店的数据权限。
API key 在服务端用 KMS 加密,绑定用户与连接;接口只返回 metadata,支持撤销。一次问题选择的付款人固定,key 无效、被撤销或额度不足时不会切换到公司渠道偷偷付款。第一版是用户自己的连接,尚未建设完整的组织 key 管理策略。
OpenAI 公开的 ChatGPT plan usage 路线面向开源/本地应用;付费或远程托管应用需要提交官方 interest form。我们尚未取得本站该路线的接入资格;公开本地流程不能作为 SaaS 接入已获准的证据。它也不提供原 ChatGPT 对话或其他账户 context。官方适用范围。Anthropic 要求第三方产品使用 claude.ai 登录/额度前事先获准;当前采用 API key 方式。Claude 官方要求。
用户在外部 ChatGPT / Codex / Claude 客户端通过 MCP 使用 Retaintive,需要独立授权与发布;用户已明确排除这个产品入口,本轮不建设、不发布它。
存储、排查与重要预警
Neon 记录 conversation 所属用户、query、结果、引用、进度、选定 provider / payer 和逐轮 usage。前端记录按环境与用户隔离,退出/切换身份会清理;模型历史按当前权限重新筛选。API key 不进入回答或 logs。默认关闭 OpenAI tracing 与敏感内容日志。历史自动保留/删除机制仍需 production 前补齐。
模型/工具前以及最终结果发布前重新检查权限;取消与终态采用条件更新,防止停下后被迟到结果改回成功。每轮已完成模型请求先保存 usage,失败或取消仍保留已知费用;未知/不完整费用不能当成零。工具输入允许一次纠正,数据库故障和撤权不进入该循环。安全诊断记录失败阶段、工具、错误类型与白名单字段,不写入原始错误正文或 SDK run state。
test 监控关注成批失败、已确认修改的证据不一致,以及恢复失败进入 DLQ;没有 idle heartbeat 报警。取消、撤权、客户 key 401/429 和孤立小错误不升级为系统预警。Task 一致性核对使用草稿、accepted event、command receipt 与 Timeline;目前为请求触发抽查,晚确认可能没有再次核对。具体阈值、恢复规则和操作步骤以 OpenWiki 工程页为准。
三个 CloudWatch alarms 在最后记录时为 OK,SNS 已接既有 dispatcher;test 的一致性 alarm 为 diagnostic,未配置通知 action。没有制造假 ALARM,Lark 送达尚未验收。Sentry source-map 上传因现有只读凭据返回 403;已保存 test 后端 maps 与补传计划,未声称上传完成,旧 Web build 没有生成 maps。
早期真实验收与版本快照
以下是 2026-10-03 的 test snapshot,并非“main / production 已包含”。infra source HEAD 为 790571ee687dd36c6021b54eea2642d2726f7dc4;运行部署版本与后续测试/文档提交分别记录:
OpenAI / Anthropic 的成功调用验证使用官方 SDK 的多轮 HTTP fixtures;未获得有效客户 key 完成这两种 provider 的真实付费成功请求。模型引用不存在的服务器 ref 会阻止答案发布;没有引用目前是 warning,不是 hard reject。合法引用通过权限与来源校验,也不等于所有回答语义通过完整业务评测。
失败记录保留:旧 agent_run_failed 缺少原始诊断,不能拿后来的错误复现冒充历史根因;本轮曾引入的 AI SDK adapter outputSchema 回归已修复并重新验收。不能以当前通过推断供应商永不失败或模型永不误判。
工程实现记录为 callytics-infrastructure/.claude/specs/2026-10-03-ask-ai-platform-impl.md。原始证据文件名:verification.json、byok-success.json、health-verification.json、codex-personal-smoke.json;交接位置和复验步骤由 OpenWiki 维护。可查看脱敏验收摘要,它是历史记录,不代表当前运行健康。本文只保存必要的合成验收摘要,不包含 key、登录密码或用户私密对话。
成本与下一步条件
本轮沿用已有 AWS / Neon / Cloudflare / OpenRouter,未购买新服务。公司和 BYOK 样本中模型费是每题约千分之一美元量级,但不是固定价:工具轮数、上下文、缓存、模型和实时价格都会改变账单,基础设施另计。公司渠道目前有问题数量限制;尚未实现全公司硬美元预算。
本轮已选择按请求安排 expiry,空闲时不做五分钟 Neon polling。它减少空闲唤醒,不代表基础设施免费;production 前仍需按负载核算 Scheduler、Lambda、Neon、SQS、KMS 和 logs,并决定写入事件审计的范围。不会从本次小样本推定未来公司的总月费。
难度以这些实际依赖和验收工作衡量,不在缺少接入资格、政策与样本时编造交付时长或供应商单价。