跳转至

04-01~03:项目治理与架构收敛

这一阶段完成了项目发现系统的质量整改、curated 保护机制的落地,以及 Daily Digest 并入 Agent Portal 的代码库合并。

Dad 的关键产品决策

ABC 三路径并行

04-01 决策: - 路径 A:提高 digest 运行频率并验证效果 - 路径 B:项目发现补全 + 洞察去重 - 路径 C:门户上支持批准/驳回决策项并自动执行

不要另起炉灶

背景:bot 初始方案是单独写一个审核页面

Dad 否决

这不是一次性需求,必须直接优化门户现有项目管理模块,不能另起炉灶

原则:所有能力都回到现有门户。

代码库合并

决策:Daily Digest 本质上是为 Agent Portal 服务,应合并,不再作为独立项目

执行: - 将 bot 列表、事件、交付物等完整合并到 Agent Portal - 移除 Daily Digest 项目 - 项目数从 17 → 16

后端统一部署

决策:采用方案 A - Digest pipeline 部署到同一台服务器 - 与 Agent Portal 一起运行 - 所有后端能力都由 Agent Portal 统一负责

技术问题与根因分析

项目自动注册缺失

问题:新 bot 不会自动注册到 AP_bots

根因digest.py 主流程原本没有正确触发 bot 同步

修复:在 digest.py 主流程中调用 sync_bots()

项目清洗需求

问题:100 个项目明显不合理,很多不是项目

Dad 批评: - 批准/驳回操作台没看到 - 所有项目堆在一起,没有按状态筛选和分层 - bot 没有自己验收就汇报

清洗过程: - 100 → 54 → 31 → 23 个可见项目 - 合并/清理明显重复项

digest-v3 硬编码问题

现象:错误重复发生,每次重跑 pipeline 又出错

根因project_tracker.py 第 292 行硬编码:

"agent_id": "digest-v3"

进一步风险push_projects 使用 on_conflict=id upsert,每次跑都会覆盖

修复: - 改为使用 primary_bot - 通过 resolve_agent_id 映射到真实 bot

项目状态写入失败

现象:日志显示"7/7 项目更新成功",但数据库没写进去

根因: 1. push_project_insights 查询时 select 没带 id 2. PATCH URL 变成 ?id=eq.,没有匹配到任何行

修复: - 查询补上 id - 改 return=minimalreturn=representation

数据库架构调整

问题:Supabase API 像"多余中间层"

现状server.cjs 已经通过 Supabase rpc/run_sql 跑 raw SQL

决策:从 Supabase API 走向 PostgreSQL 直连

技术实现: - Node 侧:package.jsonpg - Python 侧:增加 push/db.py - config.py 增加 DATABASE_URL - 重构 pusher 使用统一 DB 抽象 - 保留 Supabase HTTP fallback

解决方案

curated 保护机制完整落地

匹配前同步:从 Supabase 同步 curated 标记到本地缓存

匹配时保护: - 对 curated 项目,只允许追加里程碑 - 不允许改名称/描述/状态/bots

推送时跳过push_projects 跳过 curated 项目

本地 Digest 退役

04-03 决策Agent Portal Digests 已迁移,本地不需要再跑

执行: - 注释掉两个相关 crontab 条目 - 本地只保留最原始的 collector.py 采集模块 - 删除其余 Agent Portal Digest 相关代码

架构含义:本地机器从"项目管理后端节点"退化为"原始数据采集参考实现"

知识转移给 portalbot

执行: - DM portalbot 完整部署说明 - DM portalbot 完整知识转移文档

意义:项目控制权从本地 bot 转移到 Portal 侧,减少双头维护

DronePicker 产出物修复

问题:项目详情页想展示产出物,但 artifacts 为空

排查:数据主要在 metadata.deliverables

解决:改走 /api/artifacts POST 单独创建 artifact

结果:成功创建 9 个产出物

里程碑

04-01

  • [x] ABC 三路径并行推进
  • [x] cron 频率确认(每天 5 次)
  • [x] 项目清洗:100 → 23 个
  • [x] 恢复被误清理项目
  • [x] curated 保护机制代码实现
  • [x] 项目对话式管理上线

04-02

  • [x] DronePicker 产出物修复
  • [x] Daily Digest 并入 Agent Portal(项目合并)
  • [x] Digest 代码库重构(3472 → 2667 行)
  • [x] 确认正确仓库 msdevhub/agent-portal
  • [x] PG 直连方案实现
  • [x] 知识转移给 portalbot

04-03

  • [x] 本地定时任务下线
  • [x] 本地只保留原始采集能力
  • [x] 项目治理流程闭环

反复出现的根因模式

metadata 整体覆盖

多个写入路径都把 metadata 当整体对象 PATCH,而不是字段级 merge。

解决:明确"谁拥有哪些 metadata 字段"的边界。

自动发现缺少人工审核

项目发现门槛过低 + 缺少 curated 保护 = 数据污染。

解决:引入 candidate 机制 + curated 标记。

列表接口返回详情级 payload

导致性能问题。

解决:列表/详情拆分。

pipeline 中存在硬编码

digest-v3

解决:改为动态解析。

前端"已部署"不等于"已渲染可见"

必须浏览器验收。

整体后端链路总结

Mattermost 聊天记录采集
L1/L2/L3 提取与匹配
项目发现/项目洞察生成
推送到 Supabase/PG
React 门户展示
用户通过项目对话反向驱动 bot 执行

ClawCraft 项目污染修复记录

问题:ClawCraft 里程碑混入了很多不属于该项目的内容,且该项目已 5 天无动作

处理: 1. 清理错误里程碑 2. 修复匹配 prompt,减少未来误归类

经验:项目匹配不能只靠模糊关键词,否则会把"同生态但不同项目"的事件混入。


至此,ClawCraft 从 03-10 立项到 04-03 完成了: - 产品方向从"配置工具"转向"游戏化工作台" - 技术栈确定为 React + PixiJS + OpenClaw Plugin - 核心稳定性问题(SSE 死循环)彻底解决 - 多端联调与协议层收敛 - 与 Agent Portal 深度整合,形成项目管理门户雏形