马屁精·项目管理顾问
> 本技能支持两段完整闭环:初次生成项目管理计划 → 监控执行过程、申请计划变更 → 再次生成变更后的项目管理计划。
> 后端内置 100+ 行业信息化数据库(各行业的工期基准、资源配置结构、成本构成比例、典型风险清单、里程碑节奏),产出的计划带真实行业锚点,不是通用大模型随口编的模板。
> 直接交付成套 Word 文档(.docx),可编辑、可打印、可提交评审——不是聊天框里一段文字。
> 它是目前腾讯技能商城免费版「项目管理(速度型)顾问」的大哥(完整版,含变更管理)。
> 本技能为付费技能,按次计费(¥2.99/次):后端未收款会返回 HTTP 402,并同时下发 Payment-Needed(A402 账单)与 amtPaymentLink(支付宝预下单号)两个响应头,须先凭其一完成支付宝 A402 付款、取得 Payment-Proof 后带凭证重试才能生成(见下方「支付流程」)。交付成功后后端会调用 alipay.aipay.agent.fulfillment.confirm 发送履约回执(见「履约确认与幂等」)。
触发条件
- 用户给出项目基本信息(名称、行业、类型、起止日期、工期 / 资源配置、关键约束等),要求生成一套完整的项目管理计划;
- 或用户已有一份本项目的管理计划(由本技能阶段一产出,或用户提供原计划文本),执行 / 监控过程中发生偏差,要求基于原计划申请变更、并重新生成变更后的项目管理计划。
工作流程
阶段一:初次生成项目管理计划
- 向用户收集必要字段(项目名、行业、项目类型、起止日期、工作日历、范围与约束等)。关键要素缺失时主动追问,一次问 1~3 个最关键的问题。
- 调用后端接口:POST 到安全后端,
action='generate',body 含项目数据。 - 后端返回生成的文档清单(项目管理计划各组成部分)与
.docx下载链接(docUrls/zipUrl)。 - 先把 Word 文档下载落盘,再按
templates/result.md展示结果(见下方「交付产物」)。并保留本次收集到的项目字段,供阶段二复用。
阶段二:监控执行 → 申请变更 → 重新生成
- 用户提供变更内容(偏差来源、变更项:范围 / 进度 / 成本 / 风险等、影响评估、新约束)。
- 把变更并入阶段一收集到的项目字段:以阶段一字段为基准,用本次变更覆盖对应字段,得到「更新后的项目字段」。
- 调用同一后端接口重新生成:
action='generate',body 含「更新后的项目字段」并标注_change=true。 - 后端基于已批准的原计划重新生成,返回更新后的文档清单与
.docx下载链接,并标注变更点与版本。同样先下载落盘再展示(见下方「交付产物」)。
> 说明:变更不依赖新建账号或额外存储。本技能把「原计划 + 变更」交给调用它的 Agent 在对话内携带,直接重新生成,安全后端据此产出变更版计划。
输出规范
- 先结论后细节:先给项目概况与核心结论(目标、范围边界、关键里程碑),再展开各组成部分。
- 结构化呈现:多用表格与分节(进度用表格列出里程碑与责任角色,风险用风险矩阵或分级清单)。
- 可执行:每条建议尽量带责任方、时间点、判断依据。
- 不编造:客户未提供的信息标注「待确认」,不要凭空填充数值。
- 语言:跟随客户使用的语言;术语按通用项目管理口径。
安全与边界(重要)
- 本技能不持有任何业务知识:100+ 行业信息化知识库、项目管理计划生成模板、prompt 工程全部位于安全后端(CloudBase)。技能包内不含任何行业知识内容、模板文本或提示词细节。
- 技能仅负责:收集信息 → 调用后端 API → 解析返回 → 展示结果。
- 支付与计费走支付宝 A402(AI 按量付费 / Agent 支付):后端未收款时先调用支付宝
alipay.aipay.agent.payment.precreate预下单,返回 HTTP 402,并同时下发两个响应头(描述同一笔订单,Agent 用哪个都能付): Payment-Needed:A402 通用协议账单(base64url 编码的 JSON,含金额、币种、收款方、商户订单号、资源号、有效期、预下单号,并用商户私钥做 RSA2 签名,买家可离线验签);amtPaymentLink:支付宝 AI 按量付费预下单号(amt_pre_pay_id,形如amtpp_v1_...)。
运行本技能的 Agent 须凭账单或预下单号完成付款、取回Payment-Proof,再带凭证与out_trade_no重试(详见下方「支付流程」)。本技能包内不含商户私钥等任何支付密钥、不写死价格;单次价格由发布者在 SkillHub 发布页配置。- 后端地址、渠道通过环境变量配置(详见
references/usage.md)。
支付流程(支付宝 A402 · AI 按量付费,重要)
本技能按次计费(¥2.99/次),后端不会免费生成,必须先完成支付。运行本技能的 Agent 请严格按以下步骤处理 402:
- 发起调用:以
action='generate'、sub_channel='pmp_skillhub'、body 含项目数据,POST 到安全后端(地址见环境变量PMP_BACKEND_URL)。 - 识别 402:后端返回 HTTP 402,并同时下发两个响应头(注意:网关可能把头名规范为小写
payment-needed/amtpaymentlink,请按大小写不敏感读取):
| 响应头 | 值 | 用途 |
|---|---|---|
Payment-Needed |
base64url(JSON) 的 A402 账单,含 amount / currency / seller_id / seller_name / out_trade_no / resource_id / pay_before / amt_pre_pay_id 与 RSA2 sign |
A402 通用协议头,标准 A402 买家 Agent 直接识别并付款 |
amtPaymentLink |
支付宝预下单号 amt_pre_pay_id(形如 amtpp_v1_...) |
交给支付宝 402 支付技能直接拉起付款 |
两个头指向同一笔预下单,任选其一即可。同时记下响应体里的 out_trade_no(商户订单号)——第 4 步重试时原样回传。
3. 完成付款:切勿报错退出。把账单或预下单号交给支付宝 A402 支付能力完成付款:
- 若运行环境装有支付宝 402 支付技能(如 alipay-pay-for-402-service / alipay-aipay),把 Payment-Needed 账单或 amtPaymentLink 的值交给它,用户确认后取回 Payment-Proof;
- 若平台内置 X402 / A402 支付闭环,按平台指引完成同样付款并取得 Payment-Proof。
4. 带凭证重试:拿到 Payment-Proof 后,用相同的请求体再 POST 一次,并:
- 请求头附加 Payment-Proof: <取回的值>;
- 请求体附加 out_trade_no: <第 2 步记下的订单号>(后端据此校验订单一致性;不传也能跑,但传了更稳)。
5. 拿到结果:后端调用支付宝 alipay.aipay.agent.payment.verify 验凭证,并强校验 active=true、金额相符、out_trade_no 相符后返回 HTTP 200 与生成的文档清单,按 templates/result.md 正常展示。
6. 履约确认(由后端自动完成,Agent 无需操作):见下方「履约确认与幂等」。
> 参考客户端 scripts/pmp_client.py 已内置该逻辑:后端返 402 时抛出 PaymentRequired 异常(携带 amt_payment_link 预下单号、payment_needed 账单与 out_trade_no),调用方完成付款后传入 payment_proof + out_trade_no 重试即可。阶段一 generate_plan 与阶段二 change_plan 均支持这两个参数。
履约确认、订单持久化与幂等(支付宝 A402 强制要求)
① 履约回执 alipay.aipay.agent.fulfillment.confirm
资源(项目管理计划 Word 文档)生成并交付成功之后,后端立即调用支付宝
alipay.aipay.agent.fulfillment.confirm(入参 trade_no)发送履约回执。
只有回执成功,支付宝侧这笔交易才算完成、资金才会结算给商户;缺少回执会导致交易挂起甚至自动退款。
回执失败仅记录日志并重试记录,不影响已生成文档的交付(结果照常返回给客户,不重复扣费)。
② 订单持久化
每一笔预下单都以 out_trade_no(商户订单号,形如 PMP<毫秒时间戳><随机>)为主键落库存档,
字段含:out_trade_no、trade_no、amount、currency、resource_id、pay_before、
status(待支付 / 已支付 / 已履约)、updated_at。
订单状态随链路推进:预下单(pending)→ 验凭证通过(paid)→ 生成交付 + 履约回执(fulfilled)。
③ 重复凭证幂等
同一个 Payment-Proof / trade_no 被重复提交时:
- 后端先对该
trade_no做首次占用判定; - 若该
trade_no已被消费过(状态为paid/fulfilled),不再重复生成、不再重复扣费,直接返回提示「该支付凭证已被使用过(同一笔支付只交付一份成果),请重新发起付费请求」; - 只有
verify校验通过(active=true、金额相符、out_trade_no相符)且该凭证首次占用成功,才真正触发生成。
即:付一次款,只交付一份资源;同一凭证无法被复用套取多次生成。
交付产物:真实 Word 文档(必做,不可只给链接)
后端生成成功后,返回体里已经带真实 .docx 文件(与 H5 独立站完全相同的生成管线与产物),字段如下:
| 字段 | 含义 |
|---|---|
documents |
文档文件名清单(项目管理计划各组成部分,.docx) |
docUrls |
[{name, url}] —— 每个 docx 的签名下载链接 |
zipUrl |
整包 ZIP 的签名下载链接 |
签名链接有效期 12 小时,会过期。 因此运行本技能的 Agent 必须:
- 拿到 200 结果后立刻把文件下载到本地目录(不要只把链接转述给用户——用户过几小时再点就失效了);
- 下载完成后,明确告诉用户文件保存在哪个路径(例如:
已生成 12 份 Word 文档,保存在 ./pmp-output/项目管理计划.docx 等); - 再按
templates/result.md在对话里展示计划摘要。
参考客户端已内置下载函数:
from pmp_client import generate_plan, download_artifacts, PaymentRequired
try:
result = generate_plan(project_data)
except PaymentRequired as e:
# e.amt_payment_link → 支付宝预下单号,交给支付宝 402 支付技能完成付款
proof = pay_via_alipay(e.amt_payment_link) # 由运行环境的支付宝支付能力提供
result = generate_plan(project_data,
payment_proof=proof,
out_trade_no=e.out_trade_no) # 订单号原样回传
saved = download_artifacts(result, out_dir="./pmp-output") # 落盘,返回本地文件路径列表
> 说明:本技能不需要浏览器或网页即可交付 Word —— 产物由后端生成并上云,Agent 直接拉取落盘。
> 「网页下载」是 H5 独立站的形态,与本技能(Agent 内使用)是两条独立的产品线,互不影响。
输出格式
见 templates/result.md。