任务视图铺到顶层的字段,原先取「该对象最新一行」—— 那一行很可能是**别的任务** 放行后的正式版记录。实测:NE555P 的打标读到了上一单 LM358DR 的情报 (historyDays 30 / 在产),被判成 Type A;修正后按自己的事实判成 Type B「重估后报」, 与 P-03 规则一致。 改为只铺**本任务自己写下的**草稿(读己之写),别人的事实仍在 `域.对象` 整表里、 要用得显式取。ledger 门面因此新增 `taskDrafts(taskId)` —— 与 `taskView` 的区别是 它只回我写过的那些行。 顺带记录:A1 已能 released 且节点实例正确落 terminal,但 G2 并行网关未起出 下游 A3 / A2;排查线索写进 PROGRESS.md 待办 1。 gates: tsc / eslint / depcruise(317 模块)/ 393 测试 全绿 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
8.8 KiB
实施进度(主 Agent 维护)
里程碑序见 编码规范 §15。每个里程碑先立骨架(index / contract / port / CONTRACT.md + 空测试) 再填实现;门禁从 M0 起全绿,红了先修门禁再前进。
状态总览
| 里程碑 | 内容 | 状态 |
|---|---|---|
| M0 | 工作区骨架 + 五道门禁 + 环境自举 | ✅ 完成 |
| M1 | @contracts 首版、event、ledger、org、llm |
✅ 完成 |
| M2 | memory、toolbox、channel、message |
✅ 完成 |
| M3 | interaction、human-tool、release、activity-registry、@sfeel |
✅ 完成 |
| M4 | skill-engine、loop-engine、flow-engine、task |
✅ 完成(模块与 domain;app 装配随 M5) |
| M5 | process、trigger、@activity-sdk + 六个活动包 |
✅ 完成 |
| M6 | 前端:工作台五要素 → 治理台九功能;minute、report |
🟡 五要素九功能均已平移并接真实 API;minute/report 已落;编排画布只读态已接,手绘编辑器待接 |
当前:393 个测试通过(含 1 组对真实 PG 的集成测试),门禁五道全绿。20 个后端模块 + 5 个包 + 6 个活动包 + 14 个前端 feature。
MVP 完成判据的跑通进度(README《MVP 完成判据》)
| # | 场景 | 状态 |
|---|---|---|
| 1 | 治理台:员工岗位 / LLM 实例 / 流程包发布 / 触发器 / 邮件通道 | ✅ pnpm db:seed 一次做完 |
| 2 | RFQ 邮件入站 → 归属解析 → 触发器命中起单 → A1 落到冯兵工作台 | ✅ 已跑通 |
| 3 | A1 受理归一(flow):步序推进 → LLM 抽取 → 台账草稿 → 补全卡 → DMN 打标 → 放行落地 | ✅ 全链路跑通至 released:D1 条件跳步、S4 工具、S5 DMN 三分类(LM358DR → Type A)、放行后草稿合并正式版 2 行、输出口 intake 发射。LLM 步因占位 key 走声明给定的人兜底,接真 key 即走机器路径 |
| 4–9 | A3 / A2 / A4 / AP / A6 / A7 | 🟡 六个活动包已装入且静态审全过、流程包全图已发布;A1 释放后 G2 分流的下游节点逐条待跑 |
| 10 | 全程可审计 · 工作台五要素 · 治理台在途监控与叫停恢复 | 🟡 五要素齐活(任务 / 审批 / 消息 / 纪要 / 汇报),纪要「决议 → 登记起单」已端到端跑通;治理台在途监控 + 叫停 + 恢复已跑通且留痕归人裁决侧;终态封卷蒸馏钩子已挂,候选条目待验 |
常用命令
pnpm gates # gen:tiers → typecheck → lint → depcruise → api:check → test(五道门禁)
pnpm db:up # docker compose 起 PG16(四 schema 由 db/init 建)
pnpm db:generate # drizzle-kit 生成 sys schema 迁移
pnpm db:migrate # 应用迁移
pnpm db:seed # 播种五岗位五员工(登录者 = 冯兵)
pnpm dev:api # tsup watch + node dist/main.js(:8787)
pnpm dev:web # vite(:5173,/api 反代到 8787)
契约变更后:pnpm api:check --update && git add api-report(§12.4)。
已完成的落点
M0 — pnpm workspaces / tsconfig 双工程 / eslint flat / dependency-cruiser
(基线八条 + JCAI 增补,tier-order 由 tools/module-tiers.json 生成)/ 契约快照只留契约面 /
docker-compose PG16 + 四 schema。
M1 — @contracts 九文件首版;四个 L1 模块各带 index / contract / port / CONTRACT.md /
domain 零 mock 测试;app 层 Hono 服务、鉴权中间件、DI 装配、drizzle 迁移、AES-256-GCM 凭证密封。
已验证:种子播种、岗位授权(BD 被拒 / PM 放行)、LLM 四元绑定密钥不外泄、
ledger 对真实 PG 的 schema 自生长与写三分。
M2 — 四个 L2 模块:memory(任务记忆四性质 / 活动记忆四层 / 任务日志两级投影 / 度量)、
toolbox(注册两审 / 效应等级 / 白名单 / ToolInvoker 第二条缝)、
channel(入站归一 → 系统写 → 数据事件;出站与关联记录)、message(通知 / 跨任务征答 / 死信 / 无主兜底)。
app 侧接上派发器(advisory lock 串行 + 消费幂等)与 /api/ingest 模拟通道。
已验证:一封无主 RFQ 邮件入站 → 归属解析 no-match → 事件落库 → 兜底落到 OP 岗位李元初的消息要素。
M3 — @sfeel 全套(lexer / parser / evaluate / static-check);
human-tool 三规矩机检 + 工单两模式 + 对话卡族 + 到达面两路 + 驳回重答;
release 落地预检五项 + 幂等落地 + 落地收敛才发射输出口;
interaction 控制权按态转交 + 视图净化门 + SSE 推送;
activity-registry 安装两审 + 悬空监听拒绝 + 零环境能力扫描 + 资产与包分离版本化 + 进化管线状态机。
M4 — skill-engine(载方法不载权力 / 结晶片段经 ToolInvoker 留痕 / 装配入信封);
flow-engine(四种步型 / 条件跳步 / 声明给定的失败路径 / 异步步即监听 / 步序位置持久);
loop-engine(自研 CMMN 子集解析器,表外构件直接报错;两副标准生命周期与迁移拓扑;
Enabled ≠ Active;前提求值与语义性前提交裁量;DMN 确定性求值与命中行留痕;DRD 缺口演绎;
双向驱动与交集导航,断点即人环;三型行动);
task(终态五名裁定 / Harness 预算与停滞熔断 / 控制三语义 / 改派 / 断点续跑三份持久状态 /
封卷触发蒸馏)。
M5 — process:闭合校验(七类违规)+ 四策略解析 + 状态聚合 + 确定性流转
(选边 / 装配 / AND 回齐 / 失败走向四选一 / 审批驳回重开新实例)+ 三表持久;
trigger:三类触发器 + 起单幂等 + 数据日历型逐行扫描;
@activity-sdk:基座六件接口 + defineActivity() + 本地开发宿主(mock 工具表 / 模拟工位 / 录制);
activities/quote-intake:统一报价 A1 的首个活动包 —— 契约七件 + 步序声明(五步)+
DMN 三分类规则 P-03 + 台账声明 + 样例集。depcruise 已实测拦下活动包越界 import。
下一步(按序)
- app 装配收尾(打通端到端的关键一步):把 M4/M5 的九个模块接入
container.ts——loop-engine需要internal/adapter/agent-runner.ts的 Mastra Agent(§6.1); 派发器注册任务与触发器两个消费者;TriggerMatcher/InFlightWorkProbe占位换真身; pg-boss 承接周期扫描与监听时限。 - 活动装载通道:
activity-registry装载 .JS 产物并把基座六件句柄注入活动 (tsup 单文件 ESM 编译预设,§8.2 / ADR-004)。 - 余下活动包:A4 成本定价(flow · DMN P-01/P-02)、A6 报价议价(flow)、 A7 情报归档(flow)、A3 渠道寻源(loop · CMMN)、A2 替代选型(loop · CMMN)。
- M6 · 前端(进行中):任务要素已平移并接真实 API(样式整文件搬、DOM 与类名原样、
@ui的沙箱 iframe 视图容器)。余下:- 工作台:审批 / 消息(已有列表,待接就地作答)/ 纪要 / 汇报四要素 + SSE 订阅层
- 治理台九功能:
Governance.tsx(2415 行)+_flow/编排画布六文件(diagram-js) minute、report两个后端模块(L8)
- 验收:README《MVP 完成判据》十条场景端到端跑通。
待接的占位(详见 docs/debt.md)
container.ts两个占位端口:InFlightWorkProbe(M4)、TriggerMatcher(M5)- 派发器的消费者表为空(M4 任务 / M5 触发器)
- pg-boss 已装未用(M5 定时作业)
- M4 四模块尚未接入
container.ts(需要 Mastra Agent adapter 与流程层起单,随 M5)
已建 ADR
编码规范 §14 已占 001–006,新 ADR 自 007 续(README 写「从 005 续」是笔误):
- ADR-007 工具链与门禁的落地形态
- ADR-008 投递队列:
sys.event_delivery是队列本体,pg-boss 只管定时 - ADR-009 凭证加密:AES-256-GCM +
JCAI_SECRET_KEY
已知待办(按优先级)
- 判据 ④–⑨ 逐节点端到端:A1 已能到
released且节点实例正确落terminal, 但 G2 并行网关未把下游 A3 / A2 起出来 —— 工作流停在 A1 之后。 已排除:投递无失败、无异常日志、selectEdges对并行分叉返回全部出边、dispatchOf对活动节点返回 start-task。下一步从advanceFrom的实际入参查起 (onTaskTerminal里Object.values(ports)[0]目前是{},outputPortsOf按输出口声明的属性名取值、与台账列名对不上,值得先看这里)。 - 判据 ③ 的机器路径:
JCAI_LLM_API_KEY现为占位符,LLM 步一律走声明给定的人兜底。 接任一 OpenAI 兼容端点即可验证机器路径;两条缝的 record/replay 也需先有一次 live 录制。 - 编排画布的手绘编辑器:只读态(
FlowDiagram)已接真实流程包; 原型的FlowEditor/flow-editor-core/manual-flow尚未平移。 - 治理台写面:员工增删、岗位授权编辑、LLM 实例 upsert、活动启停、记忆修剪等写动作 路由已在,前端确认带已备,逐个接上即可。
ch-mail遗留通道:库里有一条早期迭代留下的通道配置(只含quoteNo提取规则), 与种子的ch-rfq-mail并存;确认无引用后清理。