盘点 32 ActionKey 与 HTTP 169 路由对话边界,明确假成功/dry-run 与 UI 专属红线;分期消除假成功、live 化 intentflow、查询真源与新写意图扩展。
15 KiB
title, created, owner, task_id, policy_revision, review_state, integration_state, deployment, cleanup, remote_sync, status, confidence
| title | created | owner | task_id | policy_revision | review_state | integration_state | deployment | cleanup | remote_sync | status | confidence |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 对话办公能力全景盘点 | 2026-09-25 | Cursor | dialogue-office-expansion-2026-09-25 | cursor-governance-2026-09-24-r1 @ 44161d2ad2 |
pending | pending | not_required | pending | not_requested | done | high |
调研:对话办公能力全景盘点
范围与授权
- 用户目标:以「对话辅助办公」为初衷,最大限度扩展对话可操作范围;创建项目、添加成员、设置等治理结构操作保持 UI 专属。
- 本轮交付:研究报告 + 分期整改计划(文档落盘);P0–P3 实施另起任务。
- 允许写路径:
.doc/audit、.doc/remediation。 - 基线 SHA:
44161d2ad2d7aada3e9ff88127b52148543278e5(建场时 localdev)。 - 非目标:不改产品代码、不更新 CURRENT/FEATURE-MATRIX/gap-matrix、不部署。
- 整改方案:2026-09-25-dialogue-office-expansion-plan.md
结论
- 注册表共 32 个 ActionKey(非早期估计的 34);主链路与 intentflow 计划执行面 双轨脱节:计划层 U11/U12 已把部分键 live 化,单意图协调层仍对认领/送审/工作流触发等返回「假成功」话术。
- HTTP 169 条路由可按对话边界分为:可操作候选 A=46、只读查询 B=66、UI 专属写/管理台 C=44、平台基线 13。
- 消除假成功、打通 dry-run、接真实查询源、再扩新写意图,应按 P0→P3 分期;一律复用 doc-review 四道防线(识别分流 → 话语分类 → 角色×状态出卡 → 执行二次鉴权),两步确认 + 服务端权威校验。
证据
| 项 | 路径/命令 | 结果 |
|---|---|---|
| ActionKey SSOT | internal/intent/registry.go registerBuiltinActions L145–187 |
32 键 |
| 主链 docgov | internal/coordinator/engine_docgov.go |
claim/submit 假成功;approve/reject 有 PendingAction |
| 主链 workflow | internal/coordinator/engine_workflow.go |
switch 确认闭环断裂;trigger 引导 UI |
| intentflow dry-run | internal/app/intentflow/expansion.go L195–216 |
docgov 5 dry-run + run-control 2 dry-run |
| HTTP 路由 | rg 'mux\.HandleFunc\("' internal/server/server.go internal/server/document_revision_handlers.go |
169 |
| 样板 | doc-review-lifecycle 09fe9723;card_policy.go / recognizer_matchers_docgov.go / action_executor.go |
四道防线可复用 |
1. 意图执行矩阵(32 ActionKey)
执行类别说明
| 类别 | 含义 |
|---|---|
real-exec |
协调层或 PendingAction 已调用领域服务真写 |
pending-action / confirm-card+pending |
出确认卡或挂起期望,确认后 action_executor 真写 |
query-direct |
只读查询,直接回复(可能含硬编码兜底) |
prose-only |
仅自然语言,无业务副作用(或明确拒绝) |
假成功 |
StatusAccepted/成功话术,但未调用权威写服务 |
dry-run |
intentflow Owner 返回 validated_only receipt,无副作用 |
| ActionKey | 中文 | 主链类别 | 计划链(intentflow) | 主处理 | 后端 owner |
|---|---|---|---|---|---|
project.advisory |
进展/风险查询 | query-direct | QueryOwner | engine_query.go:handleQueryProgress |
协调层/LLM |
project.fact.supplement |
补充项目事实 | real-exec | Mutate(flag 下 dry→live) | engine_stage.go:handleSupplementInfo |
ctxmgr / MutateOwner |
project.stage.advance |
推进阶段 | real-exec / 无 runner 时 prose 模拟 | — | engine_stage.go:handleAdvanceStage |
stageflow |
task.run |
触发生成任务 | real-exec | TaskRunAdapter | engine_task.go:handleTriggerTask |
stageflow / taskrun |
task.run.adhoc |
特设任务 | real-exec | — | engine_task.go:handleTriggerAdhocTask |
同上 |
conversation.chat |
闲聊 | prose-only | — | engine_consult.go:handleCasualChat |
dialogue LLM |
conversation.decline |
暂缓建议 | prose-only | — | engine_stage.go:handleDeclineExpectation |
上下文 |
document.claim |
认领文档 | 假成功 | live(U11) | engine_docgov.go:250–277 |
主链仅改 Claimed 列表;计划→docgov |
document.review.submit |
提交审核 | 假成功 | live(U11) | engine_docgov.go:280–295 |
主链纯文案;计划→SubmitForReview |
document.review.approve |
审核通过 | pending-action | dry-run | engine_docgov.go:handleDocGovApprove |
docgov.ReviewApprove |
document.review.reject |
审核驳回 | confirm-card+pending | dry-run | engine_docgov.go:handleDocGovReject |
docgov.ReviewReject |
document.final.approve |
终审批准 | confirm-card+pending | dry-run | 同上 Approve 分支 | docgov.ApproverApprove |
document.final.reject |
终审驳回 | confirm-card+pending | dry-run | 同 reject | 同上 |
document.proposal.decide |
提案裁决 | confirm 分支真挂起 / 默认分支假成功 | dry-run | engine_docgov.go:298+ |
confirm_*→PendingAction |
regulation.query |
法规查询 | query-direct | QueryOwner | engine_query.go:handleQueryRegulations |
kb.Client + 模板兜底 |
case.query |
相似案例 | query-direct | QueryOwner | engine_query.go:handleQuerySimilarCases |
SearchSimilarCases + 硬编码案例 |
permission.query |
权责查询 | query-direct | — | engine_query.go:handleQueryUserRights |
UserDocs 上下文 |
document.reject_reason.query |
驳回原因 | query-direct | — | engine_query.go:handleQueryRejectReason |
黑板 + default 文案 |
card.confirm |
确认挂起期望 | confirm 元动作 | — | expectation 映射 | 路由至目标 intent |
project.stage.execute |
阶段执行确认 | 注册有、switch 无独立 case | — | 实际走 advance | 同 advance |
security.forbidden |
安全禁止 | prose-only | RejectPlan | engine_consult.go |
— |
workflow.switch |
切换激活工作流 | 假成功(确认后无执行) | dry-run | engine_workflow.go:12–59 |
边界上属结构治理 → 宜诚实拒绝/引导 UI |
workflow.run |
运行工作流 | 假成功(引导 UI) | live(U12) | engine_workflow.go:62–90 |
计划→CreateWorkflowRun |
workflow.status.query |
工作流状态 | query-direct | — | engine_workflow.go:93 |
UserProjectContext |
document.status.query |
文档状态 | query-direct(常空模板) | — | engine_workflow.go:117 |
模板/document_summary |
conversation.help |
能力帮助 | query-direct | — | engine_workflow.go:139 |
AvailableActions |
conversation.unsupported |
不支持 | prose-only | — | engine_workflow.go:159 |
— |
run.status.query |
运行状态 | query-direct | — | engine_run.go:handleRunStatusQuery |
WorkDir |
run.resume |
续跑 | confirm-card+pending | live(U12) | engine_run.go:handleRunResume |
taskrun |
run.restart |
重启 | confirm-card+pending | dry-run | engine_run.go:handleRunRestart |
taskrun.restart |
project.impact.analyze |
影响分析 | query-direct | — | impact_actions.go |
ImpactActions |
project.doc.revise_propose |
修订提案 | confirm-card+pending | — | impact_actions.go |
ProposeRevision |
1.1 假成功清单(主链路优先)
| # | Legacy / Key | 文件:行号 | 当前行为 | P0 建议 |
|---|---|---|---|---|
| 1 | DOCGOV_CLAIM / document.claim |
engine_docgov.go:250–277 |
仅 append UserDocs.Claimed,回复「已成功认领」,不调 docgov |
真执行 RecordDocumentViewed/claim API + 确认(若需) |
| 2 | DOCGOV_SUBMIT_REVIEW / document.review.submit |
engine_docgov.go:280–295 |
纯成功文案,无状态变更 | 真执行 Gov.SubmitForReview + 角色门禁 |
| 3 | DOCGOV_PROPOSAL_DECIDE 默认分支 |
engine_docgov.go:383–397 |
非 confirm_* 时按 proposal_action 返回采纳/拒绝文案,不写文档 | 默认分支诚实澄清或走确认卡;禁止假成功 |
| 4 | SWITCH_WORKFLOW / workflow.switch |
engine_workflow.go:12–59 |
设 NextExpectation 要求确认,确认后无写路径 | 诚实拒绝:属 UI 专属(PUT …/active-workflow);或确认后明确「请在设置面板操作」 |
| 5 | TRIGGER_WORKFLOW / workflow.run |
engine_workflow.go:62–90 |
「请在面板确认」话术,不创建 run | 确认卡 + CreateWorkflowRun(对齐 U12) |
附带(非计划 P0 五处,但同类):无 runner 时 ADVANCE_STAGE/TRIGGER_TASK 模拟成功;VIEW_DOC lifecycle 空模板。
1.2 intentflow 仍 dry-run 的键
DocGov(docGovActionKeys 7 − DocGovLiveActionKeys 2 = 5):
document.review.approvedocument.review.rejectdocument.final.approvedocument.final.rejectdocument.proposal.decide
Run-control(4 − live workflow.run/run.resume = 2):
workflow.switch(计划层 dry-run;产品边界建议永久不 live 写,改为拒绝)run.restart
见 internal/app/intentflow/expansion.go L195–216;dry-run 行为 DryRunAdapter.Execute → validated_only。
2. HTTP 169 路由 × 对话边界
统计口径:internal/server/server.go Routes() + document_revision_handlers.go registerDocumentRevisionRoutes() 中 mux.HandleFunc("METHOD path") = 169。不含中间件 OPTIONS、SPA 静态子路径。
| 类别 | 计数 | 含义 |
|---|---|---|
| A 对话可操作候选 | 46 | 读写副作用;对话须两步确认后经服务层落库 |
| B 只读查询候选 | 66 | GET + preview POST |
| C UI 专属 | 44 | 治理结构写 + admin 全域(含管理台只读) |
| 平台基线 | 13 | health/ready、认证、SPA、/me 自服务 |
| 合计 | 169 |
2.1 A — 对话可操作候选(46)
| 模块 | n | 代表路径 | 对话意图现状 |
|---|---|---|---|
| docgov | 11 | POST …/docgov/{claim,submit-review,review-decision,approver-decision,proposal,proposal/decide,comments,content,lease/*} |
批准/驳回已打通;claim/submit 主链假成功;comments 等偏 UI |
| docrevision | 2 | PATCH …/documents/{id}/content · POST …/agent-candidates/{id}/decision |
正文 PATCH 仅 HTTP;候选决策可对话扩展 |
| trace | 6 | POST …/trace/{index,analyze} · …/edges/{id}/decision · …/reopen · …/recheck/…/clear |
影响分析意图有;边裁决/重开仅 HTTP |
| 补充批次 | 1 | POST …/supplement-impacts/{batch_id}/decision |
补充意图有;批次确认可对话化 |
| 工作流运行(非结构) | 2 | POST …/workflows/{key}/run · …/stages/{stage}/advance |
run 主链假成功;advance 有意图 |
| 任务执行 | 6 | POST …/tasks/{run,run/stream,runs} · …/{cancel,resume} |
触发/续跑已打通 |
| 对话写 | 8 | POST …/chat* |
会话基础设施 |
| 意图计划 | 1 | POST …/intent-plans/{id}/decisions |
intentflow + HTTP 双通道 |
| 自由文档 | 6 | POST/PUT/DELETE …/freeform-documents* |
仅 HTTP → P3 候选 |
| 资产 | 2 | POST …/assets · …/reparse |
仅 HTTP → P3 |
| 通知 | 1 | PATCH …/notifications/{id} |
仅 HTTP → P3 |
| 用户偏好 | 1 | PUT …/context/user/preference |
低优先级 |
2.2 B — 只读查询候选(66)
项目/工作流/成员/设置 GET、termination/activation preview、chat 历史检索、docgov audit/comments GET、修订 ledger GET、资产 raw、通知列表、context/cases 等。
对话已覆盖:进展、文档/工作流/运行态、驳回原因、法规/案例/权限(案例与进展有硬编码兜底)。
仍偏 HTTP:职责现状、修订版本/diff、trace 图、终止预览、成员列表只读(允许对话只读引导,禁止代写)。
2.3 C — UI 专属红线(44,对话永久禁写)
| 模块 | 写操作(禁入) |
|---|---|
| 项目/成员 | POST /projects · `POST |
| 职责 | PATCH …/doc-tasks/{taskKey}/duties |
| 工作流结构/生命周期 | PUT …/workflow-plan · PUT …/active-workflow · POST …/workflow-instances/activate · POST …/terminate |
| Admin | 角色/用户/密码/工作流定义 publish·retire/模板/config/system settings/maintenance/workspaces cleanup |
对话侧应对命中措辞走 security.forbidden / conversation.unsupported,仅允许只读查询与引导(如读职责现状、termination-preview)。
澄清:
workflow.switch(改 active-workflow)落入 C;workflow.run(创建运行实例)落入 A。P0 对前者诚实拒绝,对后者真执行。
3. 查询硬编码兜底
| 场景 | 位置 | 问题 |
|---|---|---|
| 相似案例 | engine_query.go:420–426 |
无数据时硬编码 PRJ-2025-008 / PRJ-2024-019 |
| 驳回原因 | engine_query.go:260–276 + card_policy.go:defaultRejectReasonText |
黑板/事件捞取失败则默认文案 |
| 法规 | engine_query.go:382–388 |
KB 空则 GB/YY 模板 |
| 进展简报 | engine_query.go:83–164 |
默认项目名与长硬编码段落 |
| 文档状态 | engine_workflow.go:126–129 |
lifecycle 空 → 引导面板 |
4. 复用样板:doc-review 四道防线
参考合入/分支证据:feature/doc-review-lifecycle-2026-09-25 @ 09fe9723(批注/重开/积压/送审真执行)。
| 防线 | 符号 | 要点 |
|---|---|---|
| ① 识别分流 | recognizer_matchers_docgov.go:matchDocGovAction |
查询语气不误路由写动作 |
| ② 话语分类 | card_policy.go:ClassifyRejectUtterance(Web 对称) |
QUERY / EXECUTE / OTHER |
| ③ 角色×状态出卡 | ResolveRejectCard / buildRejectConfirmCard |
无权限不出危险按钮 |
| ④ 执行二次鉴权 | handleDocGovReject/Approve + chat/action_executor.go |
确认后调 GovernanceEngine |
后续写意图扩展必须复制该模式,禁止「话术成功、服务未写」。
5. 开放问题
project.stage.execute注册未接线:是否删除或显式映射到 advance(实施期决定)。- 自由文档/通知/资产对话化的产品优先级与确认文案(P3 开工前再确认)。
workflow.switch是否保留意图仅作「引导 UI」还是识别层直接unsupported(推荐后者,减少假确认)。
建议动作
见整改计划 P0–P3;本调研 status=done 仅表示盘点可审,不代表问题已修复。
状态与交接
- 产物:本文 + 整改计划
- 实施:另起
feature/dialogue-office-p0-…等任务;每期独立验证与验收 - CURRENT / MATRIX / gap-matrix:本轮不动
- catalog:
feature=dialogue-office,scope.doc/audit+.doc/remediation;与docgovfeature claim 硬冲突,故未占用docgov键