Files
dsh_ai1net_server/交付物/AI1net插件状态与AA开源插件迁WorkBuddy可行性评估-20260928.md
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

13 KiB
Raw Permalink Blame History

AI1NET 插件开发状态 + AA 开源插件功能迁至 WorkBuddy 的可行性评估

日期:2026-09-28 | 性质:只读评估(未改任何被评估项目的源码) 取证方式:跑插件自带门禁 + 读本地实物(WorkBuddy 安装目录、插件缓存、guest SDK) 材料边界:AA 的手机侧页面与 AA Server 不在本机任何副本内 ⇒ 本评估只判「功能本体能否在 WorkBuddy 侧落地」,不判「AA 服务端可否照抄」


一、结论(先给判定)

  1. ai1net 插件:门禁全绿(rc=0),规格 21 条路由已实现 14 条 —— M2 模型管理 / M3 技能插件管理 / M5 IM 插件侧三块完整,M1 多租户与 M4 覆盖网络界面未接入。
  2. AA 开源插件的功能可分三层:本机桥接层(强对位,可做)· 账号与设备层(部分对位,需自建服务端)· 手机接入层(WorkBuddy 内无对应机制,不可能只靠它完成)。
  3. ⇒ 可行,但不是「移植」而是「重做 + 复用」:WorkBuddy 侧只做「设备侧桥」,手机接入那一段复用你们已有的平台能力(覆盖网络中继 + 配对端点 + 手机页)。

二、ai1net 插件开发状态(实测)

包:@dsh-local/ai1net(E:/ProgramData/AIProject/dsh-plugin-ai1net)|pluginId ai1net|库 dshs_pl_ai1net|表前缀 p_ai1net_

判据实跑:node scripts/build.mjs --check-only ⇒ rc=0「✅ 门禁通过」(含语法、客户端封包契约、host 半契约、数据面声明、M2/M3/M5 逐条冻结校验;M2 回读摘要 M2_DIGEST=11d7b1be8aea3996)

模块 规格路由 已实现 状态
S2 骨架 1(ping) 1 ✅
M2 模型管理 3 3 ✅ 三条精确路由 / 六种方法;明文密钥零落台账;home 写走 UserFs
M3 技能插件管理 7 7 ✅(「搬包」在包外 = 平台侧拉取器)
M5 IM 插件侧 3 3 ✅ 含每插件令牌 + 实例级单例长轮询闸
M1 多租户 5 0 ⛔ 未接入
M4 覆盖网络界面 3 0 ⛔ 未接入
合计 22 14 全包 14 条路径互不重复(实测)

产物:lib/ 6 件(index.js 36 KB · client.js 55 KB · im-plugin-sdk.mjs 49 KB · models-sdk.mjs 33 KB · plugins-sdk.mjs 24 KB · data-limits.js 2 KB),最新写入 09-26 17:31。

⚠️ 一条顺带发现:dsh-plugin-ai1net 不在任何 git 仓内(git -C 向上找不到 .git)。同一现象在 dsh-plugin-forge / dsh-plugin-carbon / ai1net-dsh-anywhere / ai1net-dsh-desktop 全部存在 ⇒ 这些"包"目前只有文件系统副本、没有版本历史。属风险项,不在本次评估范围。


三、AA 开源插件是什么(被评估对象)

身份:Agents Anywhere(AA) 的 DSH 插件,自称 DSH Bridge Next。本机实物 = ai1net-dsh-anywhere/tmp/aa-inspect-20260926/package/(README 28 KB + RUNTIME_READS + USER_QUESTIONS + lib/bundled-connector/ + locale/)。

它为 DSH 桌面做的事(= 待评估的功能全集):

# 功能 要点
F1 侧栏入口 + 弹窗面板 挂官方 sidebar.footer.action(设置上方),四个标签页:登录和连接 / 设置 / 桥接日志 / 维护
F2 账号登录(云 或 自建服务器) OAuth + 临时回环端口 + state + PKCE S256 + 一次性授权码
F3 手机扫码连接 复用 /auth/mobile-login/{qr,status,confirm},二维码内嵌临时登录凭据
F4 设备注册 / 绑定 / 凭据恢复 同账号同服务复用已有设备;失效凭据按「已删除 / 已断开」两条人工恢复分支
F5 内嵌 Python Connector @dataiku/uv 起 venv(Python 3.12+),stdio RPC,进程互斥 + 有序 Connector ID 历史 + 共享 connector-runtime.json
F6 DSH runtime 桥 原生会话/历史读取、Timeline 投影 v3、增量同步检查点、附件上传(图片接口 / fileUploads.uploadStream)、模型 / effort / 权限
F7 审批转发 官方 approval/request → 远端交互通知(允许一次 / 拒绝),含 plan-review 计划审批卡片
F8 桥接日志 只读、最近 200 条、2 s 刷新、滚动保留、写前脱敏
F9 维护 打开数据 / 日志目录、恢复出厂(先撤销设备凭据再清本地)
F10 跟随宿主语言 中英切换、已开面板即时更新
F11 Web onboarding 独立引导页:添加 Agent → 可选手机连接 → 完成
F12 承载 AA 云中转(自建服务器亦可)

四、WorkBuddy 的扩展面(评估标尺 · 全部本地实测)

WorkBuddy 内核 = @genie/agent-cli(CodeBuddy/Genie 系),与 DSH/cordis 零共享 ⇒ AA 插件不能装进 WorkBuddy,只能按 WorkBuddy 的扩展面重做。

扩展面 实测形态 关键约束
Skill .codebuddy-plugin/plugin.json(category: skill,实测 52 个)+ SKILL.md + references/ 提示词与脚本层,无自定义 UI 面板
MCP app category: mcp-app(实测 4 个)+ .mcp.json type: stdio;env 有 ${CODEBUDDY_PLUGIN_ROOT} / ${CODEBUDDY_PLUGIN_DATA}
Connector .workbuddy/connectors/ + enterprise-registry.json 外部系统集成,官方文档要求先搜连接器
Hook settings.json → SessionStart / PreToolUse / UserPromptSubmit / SessionEnd 会话启动时快照;仅 4 个事件
Automation 一次性 / 周期排期 由宿主拉起新会话
发布为应用 本地项目 → 在线链接(sites) 发布的是项目产物,不是 agent 会话
guest SDK resources/wb-guest-sdk/wb.js(@genie/workbuddy-desktop-sdk) 见下表;未见公开文档

guest SDK 暴露的能力(wb.js 反解)

  • 通用命名空间:storage · config · account · openAuth · skills · experts · automations · workspaces · models · notifications · ops · connectors · conversations · artifacts · search · changes · intentRecognition · metrics · netdrive · inspirationCode · cloud
  • 桌面专属:paths · shell · mcp · buddyApps
  • conversations 方法(节选):sendPrompt · runPrompt · requests · artifacts · files · searchFiles · changes · cancel · resend · getPendingInfo · resolvePending / rejectPending · configSetModel / configSetPermissionMode / configSetExpert …
  • 事件(节选):wb:conversation:permission(权限请求) · stateChange · timelineEvent · planUpdate · artifactUpdate · creditChanged · contextUsageChanged

⛔ 重要边界:WorkBuddy 官方文档站只有用户手册(快速开始 / 创建任务 / 任务管理 / 对话 / 结果查看),没有第三方插件开发文档;buddyApps 虽在 SDK 命名空间里,但未见对外形态与清单规范 ⇒ 结论必须按"未公开"处理。


五、逐功能对位(按三层给判定)

A 层 · 本机桥接 —— 对位强,可做

AA 功能 WorkBuddy 对位 判定
F5 内嵌 Python Connector MCP app(stdio 外部进程) —— 正是 WorkBuddy 的插件形态;uv 可直接由该进程自理 ✅ 可做(且比 DSH 侧更顺)
F6 会话 / 历史读写 conversations(requests / artifacts / files / searchFiles)+ 本地转录 jsonl ✅ 可做;Timeline 投影与增量检查点协议须自建
F7 审批转发 wb:conversation:permission 事件 + resolvePending / rejectPending + PreToolUse 钩子 ✅ 最强对位,语义几乎一一对应("允许一次 / 拒绝")
F8 桥接日志 ops / notifications + 自建滚动文件 ✅ 可做
F9 维护 paths(桌面专属)+ storage ✅ 可做
F10 语言 config ✅ 可做
F1 侧栏入口 + 自定义弹窗 ⛔ 无公开对位(插件 category 只有 skill / mcp-app;buddyApps 未文档化) ⚠️ 做不出同等交互 ⇒ 退化为「对话式 skill」或「产物卡片」

B 层 · 账号与设备 —— 部分对位,需自建服务端

AA 功能 WorkBuddy 对位 判定
F2 账号登录 / 自建服务器 account + openAuth(OAuth) ✅ 可做
F4 设备注册 / 绑定 / 恢复 storage 存本地绑定;设备台账与 /revoke 语义须自建服务端 ⚠️ 半可做
F12 云端承载 cloud / netdrive;但WorkBuddy 不提供"把本机 agent 暴露给外部"的中转服务 ⛔ 须外部服务端

C 层 · 手机接入 —— WorkBuddy 内无对应机制

AA 功能 WorkBuddy 对位 判定
F3 扫码配对 无配对服务端、无设备台账、无二维码轮询通道 ⛔ 须外部服务端
手机页面 / Web onboarding(F11) WorkBuddy 无对外 HTTP 服务面(sites 发布的是项目产物,非 agent 会话) ⛔ 须外部服务端
反隧道(本机被外部打到) 无;但 MCP app 是普通进程 ⇒ 可自己绑定回环 + 主动拨出,这一点技术上成立 ⚠️ 可行但须实测进程常驻性

六、结论与推荐路径

判定:功能本体「大部分可实现」,但「手机接入」这一段不可能只靠 WorkBuddy 完成。

推荐落地形态(三层拼装,各用其长):

  1. WorkBuddy 侧:做一个 MCP app 插件充当「设备侧桥」 —— 挂 PreToolUse / conversation.permission 做审批转发;用 conversations 读写会话;把桥接到的事件通过本机回环 + 主动拨出送给中继。不碰任何对外服务面。
  2. 手机侧:⛔ 不在 WorkBuddy 内重造 —— 直接复用你们已经验证过的那一套(overlay-pair 五端点 + pair.html + 覆盖网络中继),它已产出 28 条判据全绿 的运行面读数。
  3. 平台侧:沿用 ai1net 平台做设备台账与准入四道闸(这正是 AA 用云中转做、而你们已用自研中继替掉的那部分)。

一句话:AA 的用户可见仪式可对齐,承载与配对用你们自己的;WorkBuddy 侧只需补「桥」这一层。


七、卡点与未验证项(⛔ 不得当成已定)

  1. 进程常驻性未验:MCP app 是 stdio、生命周期由宿主管(defer_loading / preload 语义);「让一个能常驻监听回环并拨出中继的守护」在 WorkBuddy 里能否稳定存活,必须实测,不能按"是普通进程"推断。
  2. 无 UI 扩展形态:AA 那种侧栏 + 弹窗面板在 WorkBuddy 无公开对位 ⇒ 若产品要求"看得见的面板",须先确认 buddyApps 是否对第三方开放(本机无文档 ⇒ 判"未公开")。
  3. 材料缺口:AA 的手机侧页面与 AA Server 不在本机副本内(vendor/agents-anywhere/README.md 明写其归该包所有)⇒ 本文不评价其服务端实现,也不假设可照抄。
  4. 审计结论互不影响:本次是功能可行性评估;AA 包的许可与供应链未审(其 package/ 为检视副本,来源与授权未核)⇒ 真要复用代码前须单独做一轮许可核查。
  5. 同一缺口在 ai1net 侧也存在:M1 多租户 / M4 覆盖网络界面未接入,与本评估的"手机接入"是两条独立线,⛔ 别混为一谈。

附:本次取证命令与读数

# 命令 / 位置 读数
1 node scripts/build.mjs --check-only(dsh-plugin-ai1net) rc=0、「✅ 门禁通过」、全包 14 条路径互不重复
2 git -C dsh-plugin-ai1net rev-parse fatal: not a git repository ⇒ 不在任何 git 仓内
3 grep -rho '"category":"…"'(WorkBuddy 插件缓存) skill 52 · interaction 10 · welcomeMode 6 · builtin-plugin 5 · mcp-app 4 · template 2
4 cat .codebuddy-plugin/plugin.json(mcp-miora) category: mcp-app · runtimeOwner: agent-cli
5 cat .mcp.json(mcp-miora) type: stdio · ${CODEBUDDY_PLUGIN_ROOT} · ${CODEBUDDY_PLUGIN_DATA}
6 head wb-guest-sdk/wb.js(WorkBuddy resources) 21 个通用命名空间 + 4 个桌面专属 + conversations 方法/事件全表
7 WebFetch workbuddy.cn/docs/workbuddy/Overview 仅用户手册(5 章),无插件开发章节
8 规格书 05-交接单/交接单_包规格书_20260926.md §五 A1/A3 五模块 A1 清单 + A3 精确路径全表(21 条 + S2 1 条)