37 Commits
Author SHA1 Message Date
ringo e498f8ecb6 feat(workbuddy): 官方连接器包 connectors/deta(远程 streamableHttp + 原生 OAuth,source=deta)
CI / contract (push) Has been cancelled
2026-09-20 19:20:02 +08:00
ringo caf0f32313 feat(runtime): 运行时随 login 存活校验更新,studio 0.3.18 / writer 0.1.9
CI / contract (push) Has been cancelled
2026-09-20 18:36:39 +08:00
ringo 2d6bc05b12 docs(readme): WB 段补升级口径(插件升级后重跑一次 install-workbuddy 刷新稳定入口)
CI / contract (push) Has been cancelled
2026-09-20 17:50:16 +08:00
ringo 2d9bc908e1 feat(runtime): 运行时随 open_studio 本机回落更新(f236e99),studio 0.3.17 / writer 0.1.8
CI / contract (push) Has been cancelled
2026-09-20 17:42:13 +08:00
ringo 1d1000ddf5 feat(hosts): WorkBuddy 接入(install-workbuddy:本机 stdio + 技能安装 + 握手自证)
CI / contract (push) Has been cancelled
WorkBuddy 自定义 MCP 支持 command/args/env(取证:其二进制 calculateConfigHash 先判 entry.command),因此走与 Codex 同款的本机 stdio full 工具面,不退远程引擎面。

落地:① 启动器多维护一个 MCP 稳定入口 ~/.deta/bin/deta-mcp-<档位>(指向当前插件副本,升级自动刷新;WB 信任哈希按命令行算,路径稳定=升级不重弹信任);② deta-cli 新增 install-workbuddy [--http]——备份并合并 ~/.workbuddy/mcp.json(同名旧条目与旧远程条目替换掉,防双工具面)、把插件内全部技能装进 ~/.workbuddy/skills/(单一事实源,带 icon.svg)、用宿主将执行的同一条命令做真实握手自证;③ aml-design 技能两处 Codex 特有措辞改宿主中立;④ 契约校验加 E7(装配源齐备 + README 指引);⑤ 探针 scripts/verify-workbuddy.sh(配置形态/稳定入口/技能/握手/WB 日志,5 项断言)。

实测:studio 0.3.16 已装副本重跑幂等通过(握手 39 工具);writer 0.1.7 在沙箱 HOME 验证(deta_writer + report-authoring 技能 + 握手 39 工具)。WB 侧需重启并点一次信任确认。
2026-09-20 17:13:15 +08:00
ringo 7ca4923ac3 docs(readme): 开发态运行时根用占位符(勿把本机开发检出路径写进文档,章程 W1)
CI / contract (push) Has been cancelled
2026-09-20 16:40:41 +08:00
ringo 3ab20c23b0 feat(runtime): 领域服务运行时随插件分发 + 启动器自动供给(修 P0:同事机器无开发检出就起不来)
CI / contract (push) Has been cancelled
根因:启动器的运行时解析第三顺位是开发检出 ~/Dev/ant/ant-copilot,同事机器没有该目录 → 插件装上、MCP 起不来;而私有 registry 匿名读返回 401,走 npm 安装等于要求每台机器都配 Gitea token。

改法:① 打包产物随插件分发(plugins/<产品>/runtime/,3.96MB 自包含单文件 + manifest 记录来源版本/提交/大小/sha256);② 启动器每次拉起比对 sha256,缺失或被改动即从插件包安装到 ~/.deta/runtime(首次启动零操作、升级自动同步);③ 新增 deta install-runtime(显式安装 + 补装可选依赖 @resvg/resvg-js + 装完立刻做一次真实 MCP 握手自证),status/doctor 显示运行时来源与预览图依赖状态;④ 契约校验加 E6:运行时包必须自洽(sha256/字节数/manifest.pluginVersion 与插件版本一致),拦住“升版本忘重跑 sync-runtime”。

实测:全新 HOME(模拟同事机器、无开发检出、无凭据)下供给探针 10/10 通过 —— 首次启动自动安装、启动行指向沙箱运行时、install-runtime 握手 39 个工具、重复安装幂等、运行时被改动自动修复、插件包缺运行时两处都给打包缺陷指引;已装副本 0.3.14 独立验证(含 npm 自动补装 @resvg 2 包)。studio 0.3.14 / writer 0.1.5。
2026-09-20 16:40:33 +08:00
ringo abb5835310 fix(plugin): 品牌标字段改用官方口径 logo/logoDark(PNG/SVG 均可),studio 0.3.13 / writer 0.1.4
CI / contract (push) Has been cancelled
上一版把技能字段 iconSmall/iconLarge 写进了插件清单——插件不认这两个键,卡片图标不会显示。对照官方内置插件(latex/visualize/deep-research)的真实清单,插件品牌标是 interface.logo + interface.logoDark(相对插件根,PNG 或 SVG 都接受;latex 用 512×512 PNG,visualize 用 SVG),而 iconSmall/iconLarge 属于**技能**的 SkillInterface。

本提交:assets/logo.svg(浅色,门店 favicon 同源)+ assets/logo-dark.svg(深色,填色 #e5e5e5,与 @deta/ui Logo 的 currentColor 行为一致),interface.logo/logoDark 指向二者并移除 iconSmall/iconLarge;契约校验 E5 改为校验 logo/logoDark(缺失/越界/文件不存在均报错,hint 里点明 icon* 是技能字段)。已装副本 interface 键序与官方一致。
2026-09-20 16:32:29 +08:00
ringo 774e27cfc8 feat(plugin): 品牌图标用 deta.city logo(iconSmall/iconLarge + 契约守卫 E5),studio 0.3.12 / writer 0.1.3
CI / contract (push) Has been cancelled
plugin.json 的 interface 补 iconSmall/iconLarge = ./assets/logo.svg(与门户 favicon 同一份 brand 标),brandColor 由 #2F6F4E 改为 #333333 对齐品牌标与门店令牌色。契约校验新增 E5:图标必须是插件根内相对路径且文件存在(实测写坏能抓到)。
2026-09-20 16:28:15 +08:00
ringo d137a012c6 docs(skill): 候选比选口径(预览图走工具结果、wall_roles/unit_door 契约),studio 0.3.11
CI / contract (push) Has been cancelled
ask_user 卡片协议上装不下图 → 预览图随 generate_candidates 的工具结果回(宿主显示),选项文字按序号引用;补 wall_roles 列表形态与 unit_door.offset 0~1 的实测契约。
2026-09-20 16:11:44 +08:00
ringo ce1815658b chore(skill): ask_user 双回执口径写进 skill,studio 0.3.10
CI / contract (push) Has been cancelled
宿主支持 MCP elicitation 时用户选择随工具结果返回(via=elicitation + answers,据此继续);不支持时保持结构化回执并等宿主注入【用户决策】。多选题自动走回执形态。
2026-09-20 16:00:51 +08:00
ringo 26e293f916 feat(skill): 插件 skill 补设计流程知识(决策闸门/阶段准入/四轨与 GSA 端口/知识索引),studio 0.3.9
CI / contract (push) Has been cancelled
用户反馈:用 deta 插件时感觉 skills 知识利用不足——插件 skill 原本只是一份工具手册(206 行),不含 DSL 领域知识、四轨关系、决策门禁、阶段准入门槛、GSA 端口,也没告诉模型 read_reference 这条路存在(而领域知识(workflow-stages 9.8K/D0-D8 全套闸门等)其实已在 MCP 里可达)。

新增四节:★领域知识必须先加载(read_reference 索引表 + 何时读哪份)· 设计流程与决策闸门(三阶段 + D0-D8 + ask_user 用法 + 渐进生成 + 禁止替用户决策)· 阶段准入门槛(每个阶段必须先有什么数据、判据是什么,含'未编译不得宣称完成')· 四轨关系与 GSA 端口速查 + 脚本参数自愈用法。
2026-09-20 15:15:38 +08:00
ringo ef6a174255 fix(launcher): 注入 ANT_WORKSPACE_BRIDGE_URL(云项目写入前置),studio 0.3.8
CI / contract (push) Has been cancelled
缺该 env 时 build_model 无法写云项目、退回只写本地工作区(用户以为已同步)。启动器改为:显式 env → 本机 127.0.0.1:3180 探测(dev 网关)→ 生产 https://deta.city/workspace-api,并把解析结果打进启动行(网关桥=…)便于排查。

陷阱:探测写成 (exec 3<>/dev/tcp/...) 后不要紧跟 exec 3<&- —— 父 shell 无该 fd 时在 set -e 下会直接退出脚本(症状:启动行只剩一行提示、MCP 不启)。
2026-09-20 14:12:50 +08:00
ringo ec9db45b6a chore(plugin): 缺令牌时的启动提示改指 login 工具(浏览器一键),studio 0.3.7
CI / contract (push) Has been cancelled
2026-09-20 13:56:47 +08:00
ringo c77d2fe864 docs(plugin): 登录口径改为浏览器一键授权(不需要终端),studio 0.3.6
CI / contract (push) Has been cancelled
配合 ant-copilot 新增的 login 工具(回环 OAuth 授权):技能里 auth_required 的处置从"让用户去终端跑命令"改为"调 login 工具 + 浏览器点一下允许";三份 README 同步,终端助手降为无 login 工具形态(CLI 等)的兜底。
2026-09-20 13:46:54 +08:00
ringo 36347f3222 docs(skill): 新建项目改走 create_project(云端唯一工具入口),studio 0.3.5
CI / contract (push) Has been cancelled
原指引「先在门户创建云项目拿到 ID,再 push_project 绑定」在工具面补上 create_project 之后已过时:模型会因此拿 push_project 去绑定不存在的 ID,或让用户去门户手工建。改为:先 create_project({name}) 拿 projectId 与 Studio 深链,再 build_model / push_project 把模型放进去。
2026-09-20 13:32:13 +08:00
ringo 5778962ba5 fix(plugin): 产品档位改读插件清单,修缓存布局下把版本号当产品名
CI / contract (push) Has been cancelled
症状(实测):宿主缓存布局是 <市场>/<插件>/<版本>/,deta-cli 原先用「自身目录名的上一级」推断产品名,于是 status 显示工作区 ~/.deta/0.3.3/workspace,doctor 会以 --profile 0.3.3 拉起服务并真的创建该目录。

修复:detectProfile 优先读 .codex-plugin/plugin.json 的 name(开发态与缓存态都对),DETA_PROFILE 仍可覆盖,清单不可读才回落目录名。studio 0.3.4 / writer 0.1.2。

验证:重装 0.3.4 后 status 显示 /Users/ringo/.deta/studio/workspace,doctor 以 --profile studio 握手成功 37 工具。
2026-09-20 12:13:10 +08:00
ringo 54924cd4fc feat(plugin): 稳定命令行入口 ~/.deta/bin/deta(login / status / doctor)
CI / contract (push) Has been cancelled
为什么需要:登录助手原先只在插件目录里(宿主缓存路径 <缓存>/bin/deta-login.mjs),普通用户不知道插件装在哪;工具回执让用户「跑登录助手」时给不出可复制的命令。

实现:新增 bin/deta-cli.mjs(login 转交登录助手、status 看凭据来源/运行时/工作区、doctor 自检运行时+凭据+GSA health+MCP 握手,永不打印令牌);启动器每次拉起时幂等注册 ~/.deta/bin/deta(路径随插件更新自动刷新,幂等比较避免重复写);技能与三份 README 的登录口径统一为 \`~/.deta/bin/deta login\`。版本 studio 0.3.3 / writer 0.1.1。

实测:shim 生成与 help/status/doctor 均符合预期,doctor 准确报出唯一缺口(未登录)并握手成功 37 工具。
2026-09-20 12:10:49 +08:00
ringo e7d372f939 fix(plugin): 云令牌改由启动器解析,清掉废弃的 MCP 授权指引
CI / contract (push) Has been cancelled
症状:装好插件后调 list_projects 返回 auth_required,模型被技能里"先让用户完成 MCP 授权(codex mcp login deta_mcp)"带偏,用户卡在登录环节。

根因两条:① 启动器只透传环境变量 DETA_TOKEN,而 Finder/Dock 启动的桌面应用不继承终端环境,登录助手写的 ~/.deta 凭据根本进不去宿主进程;② 技能/README 仍留着远程形态的 OAuth 指引,本机形态里那条命令不存在。

修复:启动器按 DETA_TOKEN 环境变量 → ~/.deta/env → ~/.deta/credentials.json 顺序解析令牌并在 stderr 报告来源(不打印值);技能改为"让用户跑登录助手 → 开新会话",并明确区分 MCP 侧云令牌与面板侧 deta.city 登录;两份 README 的登录流程改为"登录一次、开新会话即可"(无需 source / launchctl / 改 .zshrc / 重启应用)。studio 0.3.1 → 0.3.2。

实测(隔离 HOME):四种取令牌路径与优先级、缺令牌时的引导文案均符合预期。
2026-09-20 12:02:24 +08:00
ringo 7d3f9e2933 refactor(plugin)!: 插件改名 studio、新增 writer、统一本机 stdio 管道
CI / contract (push) Has been cancelled
命名结构(品牌=市场,产品=插件):市场名保持 deta;插件 deta → studio(displayName DETA Studio),新增 writer(DETA Writer)。安装标识 studio@deta / writer@deta;MCP 服务名 studio_mcp / writer_mcp,可同时安装。plugins/deta → plugins/studio(git mv 保留历史),新增 plugins/writer。

连接形态统一为单一本机 stdio 管道:.mcp.json 与 cordis.patch.yml 均声明 stdio → bin/deta-mcp.sh --profile <产品>,并按官方插件写法补 cwd: "."(缺它时 Cwd=- ,相对命令按宿主进程 cwd 解析会静默起不来);启动器新增 --profile 档位(工作区 ~/.deta/<产品>/workspace、工具面缺省 full),运行时按 DETA_SERVER_ROOT → ~/.deta/runtime → 开发检出解析,入口优先打包产物;DETA_TOKEN 可选注入(缺省时云类工具返回 auth_required)。原远程端点声明(含 OAuth/401 段落)从插件移除。

文档与治理:根 README 与两个插件 README 改为单一管道口径;技能 aml-design 对齐本机全量面;新增 scripts/check-plugin-contract.mjs(E1 禁工具清单 / E2 必须给出 list_capabilities / E3 禁解释内部实现 / E4 市场条目一致性 / W1 开发检出依赖)与 .gitea/workflows/ci.yml。版本:studio 0.3.1、writer 0.1.0。
2026-09-20 11:56:23 +08:00
ringo 80fbd162d3 docs(plugin): 铁律补复杂形体脚本契约,版本 0.2.8
skill aml-design 新增铁律 6:`<solid script="geometry/xxx.py">` 的脚本属**工作区文件**——
编译服务无工作区访问权,编译前引擎按 AML 声明的相对路径把脚本内容随请求携带(键名一字不差,
含目录前缀);脚本必须真实存在于工作区(可用工作区文件工具读写);取不到时编译**显式失败**
并列出原因,而不是「编译通过但形体丢失」;AML 若声明 `version="sha256:…"`,脚本内容变了必须
同步版本号,否则报「几何脚本版本不匹配」。

配套引擎侧修复见 ant-copilot 提交 `fix(solid): <solid script> 脚本随编译请求携带 + 缺失显式失败`。
版本 0.2.7 → 0.2.8(三处同步),供 Codex 换缓存目录后生效;官方校验器 passed。
2026-09-17 14:54:32 +08:00
ringo 0aea2ac562 chore(plugin): 文案去内部代号 + 版本 0.2.7
- plugin.json 的 description 去掉内部引擎代号(「经 GSA 编译」→「编译为建筑模型并执行
  规则校验」)——该字段在市场 UI 可见,内部代号不应出现;
- 版本三处同步 0.2.6 → 0.2.7(.codex-plugin/plugin.json / package.json /
  package-lock.json 两处),供 Codex 换缓存目录生效;
- 根 README 的编译服务表述改述(底层环境变量名 DETA_GSA_URL 保留,属允许例外)。

官方校验器 validate_plugin.py:Plugin validation passed。
2026-09-17 14:12:03 +08:00
ringo 7163fe9054 docs(plugin): 同步校验三合一——validate_model 统一入口
对应 ant-copilot 272c409:analyze_gsa_issues / analyze_rules_compliance 已并入 validate_model,checks 一次要齐几何 + issues + rules(三类共用同一次编译);技能与 README 的工具清单同步。
2026-09-11 15:45:41 +08:00
ringo 63d52f47b5 docs(plugin): 技能同步 studio_link 并入 open_studio、query_knowledge 已裁出
对应 ant-copilot 的两处收敛:打开 Studio 只留 open_studio(追加 waitSeconds 确认 executor_online 的典型节奏);query_knowledge 因需宿主注入知识库回调、远程形态不接入,已从工具一览移除并说明原因。
2026-09-11 15:39:58 +08:00
ringo c21a979c0c feat(plugin): 技能写入 open_studio 执行器用法,版本 0.2.6
- 「打开 Studio」主路径改为 open_studio(签发免密链接 + 轮询等 executor_online),studio_link 降为只要链接时用
- 新增说明:模拟/可视化类工具依赖 Studio 浏览器执行器在线,标签页关闭即离线并 fail fast
- 工具一览补 open_studio
- 版本 0.2.5 → 0.2.6,便于重装拉取技能更新
2026-09-11 15:12:39 +08:00
ringo 4f5dfd79ae docs(skill): aml-design 同步能力目录与模拟工具口径
- 能力目录提示:simulate 仅 energy/comfort,采光/日照/CFD 不在范围
- 模拟参数读写用 simulation_params(扁平或分组写法均可)
2026-09-11 09:26:02 +08:00
ringo c1491f9cdc feat(docs): 移除命名约定与本地路径安装说明 2026-09-10 18:55:13 +08:00
ringo 1d1a0f5d54 feat(plugin): 更新版本至 0.2.5,增加工具发现规则与闭环单入口说明 2026-09-10 17:07:21 +08:00
ringo 8454fd7ef0 feat(plugin): 增加闭环单入口 build_model 的说明与使用示例 2026-09-10 15:55:32 +08:00
ringo 045cb29e41 feat(plugin): 面板登录态说明 + 版本 0.2.4
- 明确面板是独立浏览器上下文(系统浏览器登录态带不过来),给出一次性登录入口
  https://deta.city/login(写入 ant_token cookie 与 ant-model-auth localStorage)
- 说明若宿主把 MCP 授权页开在面板内,codex mcp login deta_mcp 一步即可同时建立门户会话
  (deta-mcp 授权页在授权成功时会把门户会话写进当前浏览器)
2026-09-10 13:41:01 +08:00
ringo 6f0dbe80e8 feat(plugin): 技能补「在 Codex 右侧面板打开 Studio 并跑模拟」(v0.2.3)
- 新增独立章节:用宿主内置浏览器(browser 插件的 iab)打开
  https://deta.city/design/<projectId>;已有同 URL 标签优先复用、禁止 goto 重载;
  含面板未登录/无 projectId/无内置浏览器三类前置与故障处置
- 面板内跑模拟的操作纪律:默认交给用户操作;代跑时用 tab.ax.write() 取元素、
  ax.click(序号) 逐步操作并每步确认,结果用 ax.write("both")/screenshot 校验
- 标准工作流第 6 步与 README 端到端流程同步:模拟由 Studio 执行,MCP 只做推送与校验
2026-09-10 13:36:36 +08:00
ringo 71a31dc112 feat(plugin): 技能改写为「编辑归宿主、MCP 只做引擎与同步」(v0.2.2)
- SKILL.md 新增「编辑与校验分工」:AML 与设计源文件用宿主原生 read/patch/grep 编辑,
  编译/规范校验/规则检查/围护统计/空间邻接走 MCP 引擎工具;固定顺序
  本地编辑 → push_project → 引擎校验 → Studio 查看;studioUrl 用内置浏览器打开且复用已有标签
- README 新增「工具面」说明、本地项目目录约定(可选 deta.json 绑定 projectId)
  与端到端工作流示例
- plugin.json 版本 0.2.1 → 0.2.2
2026-09-10 13:29:33 +08:00
ringo 532efd0258 fix(plugin): MCP 服务名 deta -> deta_mcp,解除与插件名的命名空间冲突(v0.2.1)
Codex 中插件名即工具命名空间;插件内 MCP 服务同名为 deta 时模型请求被拒:
Duplicate namespace name deta: Namespace names must be unique(对照实验证实)。
改名后冲突消失,登录命令随之变为 codex mcp login deta_mcp。
2026-09-10 11:50:00 +08:00
ringo 4b924674a3 feat(plugin): Codex 侧改为 OAuth 浏览器登录(v0.2.0)
- .mcp.json 移除 bearer_token_env_var:401 后由 Codex 自动进入 OAuth 2.1 授权流程
  (服务端 https://deta.city 提供 discovery/DCR/PKCE/token/refresh/revoke)
- 安装流程改为 codex plugin add + codex mcp login deta(浏览器里完成账号登录)
- 保留登录助手与 DETA_TOKEN 路径,供 dsh/脚本/CI 使用(README 分节说明)
- 插件版本 0.1.0 -> 0.2.0(市场按版本刷新缓存)
2026-09-10 11:36:19 +08:00
ringo d73e907ec4 fix(login): 登录标识与门户对齐 + 失败可诊断
- 端点:走 /login(已存在账号的密码校验),不走门户的 /login-or-register(会触发登录即注册)
- 新增 -u/--identifier:标识可用 用户名/已验证邮箱/已验证手机号(服务端 LoginIdentifierResolver 解析)
- 新增 --email-code:邮箱验证码登录(账号未设密码时的可用路径)
- 登录前匿名预检 /login/check:区分「标识未注册」与「密码不匹配」,避免误导性提示
- 失败提示按服务端 msg 映射可执行下一步(未验证/停用/登录方式未开放)
- 修复 readLine:TTY 下一次粘贴多行会丢弃换行之后的剩余字符(第二次读取挂起)
2026-09-10 11:08:19 +08:00
ringo 9577d2e132 feat: MCP 后端切到 deta.city 远程端点 + 账号登录门槛
- .mcp.json / cordis.patch.yml 改为远程 streamable-http(https://deta.city/mcp-api/mcp),凭据经环境变量 DETA_TOKEN
- 新增 bin/deta-login.mjs:deta.city 账号登录,写 ~/.deta/credentials.json 与 ~/.deta/env(均 0600)
- 新增 plugins/deta/README.md:端点/凭据语义、两种宿主安装、本地 stdio 开发形态
- 本地 stdio 形态改为默认注释关闭(仅本机开发,不校验账号、不隔离工作区)
2026-09-10 10:53:43 +08:00
ringo b5877769de feat: DETA Agent Plugins 首发
一份产物、多宿主壳:同一目录既是 Codex 插件(.codex-plugin + .mcp.json + skills),
也是 dsh 组合包(dsh.bundle + cordis.patch.yml),能力本体以 MCP 服务提供、多宿主复用。

- Codex:插件市场 + deta 插件(默认市场与 API key 市场两份索引)
- dsh:组合包 manifest + 配置层(本地 stdio / 远程 streamable-http 两种形态)
- 技能:deta:aml-design(AML 唯一事实源、编译校验、围护结构统计、空间邻接)
- 文档:双壳架构对照、本地迭代(cachebuster)、已验证缺陷与上游限制
2026-09-10 10:35:09 +08:00