【S3W3 交叉评测】Printf:便携 Agent 的需求兑现、策略门禁与 Skill 契约一致性建议 #20

Open
opened 2026-08-06 12:41:13 +08:00 by Michael · 1 comment

1. 项目理解

我理解本项目由三个相互独立的产品组成:

  • printf:把自然语言需求转成静态网站并发布到独立 URL;
  • lprintf:把已有完整 HTTP 应用发布为受控 HTTPS 服务;
  • lprintf Hub:负责产品登记、人工审核、发现和连接。

三个产品没有被虚构成运行时强耦合关系。当前仓库还提供了一个可离线运行的 Printf Wave 3 Agent,用四个 Skill 将需求处理为 HTML、发布计划、Hub 登记草稿和执行轨迹。

本次代码验证主要针对该便携 Agent;线上 printf、lprintf 和 Hub 的后端源码不在当前公开仓库中,因此只依据文档和截图理解其产品能力。

2. 项目亮点

  • 三个产品的职责、URL 和故障边界描述比较清楚,没有把 printf 静态站点错误描述成 lprintf mapping。
  • 便携 Agent 无需第三方依赖和模型密钥,可以直接离线运行。
  • 正常请求会生成 index.html、release-plan.json、hub-listing.json 和 trace.json。
  • 发布计划明确标记为 planned 和 requires_confirmation,没有把计划 URL 冒充成已发布结果。
  • 项目明确禁止 SSH、root、任意端口、隧道、代理、任意 Dockerfile 等基础设施能力。
  • 用户反馈材料对用户名和头像进行了遮盖,并明确将其限定为早期质性证据。
  • 当前公开测试可直接执行,4 项单元测试均通过。

3. 当前问题和疑点

3.1 策略门禁与文档及验收标准不一致

文档明确要求“平台不提供 SSH”这类安全边界说明能够通过,但实际请求:

“制作一个页面,说明平台不提供 SSH、root 和端口映射”

会被直接拒绝。

另一方面,以下文档明确禁止的请求却会通过:

  • FRP 和 WireGuard;
  • VPS 和独立公网 IP;
  • 反向代理并开放 8080 端口;
  • 挖矿推广;
  • 群发垃圾邮件服务。

当前实现主要依赖有限关键词包含判断,与 agent.json 中的 default_deny 描述不一致。

建议采用能力分类和语义判断,并为文档中的全部禁止能力建立参数化测试,同时增加“安全说明应放行”的测试。

3.2 生成页面没有真正落实用户需求

官方示例要求生成包含“议程、嘉宾和报名入口”的活动落地页。

实际生成的页面没有对应区块或报名入口,只在页面顶部重复了原始需求,主体仍然是固定的“从一句话开始、受控生成、可体验结果”三张卡片。

建议让确定性 fallback 至少根据需求生成对应区块,并在生成后输出 requested_sections、generated_sections 和 missing_sections,避免文件生成成功但用户任务没有完成。

3.3 便携 Agent 没有按声明的 Skill 工作流执行

文档流程包含:

  • 生成前策略检查;
  • 生成文件策略检查;
  • 隔离预览;
  • 用户请求发布;
  • 发布前策略检查;
  • 发布计划。

实际便携 Agent只执行一次意图检查,没有 create_preview、生成文件检查或发布前检查,并在同一轮直接创建发布计划。

建议让便携 Agent遵守公开 Skill 前置条件;或者明确标注其只是更小的演示切片,不把缺失步骤列为已执行 trace。

3.4 Skill manifest 与实际工具输入输出不一致

当前 load_contracts 只核对工具名称,不验证 JSON Schema。

例如:

  • policy-check manifest 没有 request 输入字段,实际函数却要求 request;
  • release-controller 文档声明返回 release_plan 对象,实际字段直接位于顶层;
  • site-builder manifest 声明返回 status、template、style 和 files,实际实现只返回 HTML 字符串。

建议在运行时使用 JSON Schema 验证每次工具调用的输入和输出,并为契约不匹配增加失败测试。

3.5 发布基础地址需要限制

便携 Agent允许通过 --public-base 写入任意地址,包括 HTTP localhost 或私网地址。

这与受控 HTTPS 域名和禁止私网目标的产品边界不一致。建议正式模式只允许 gp-pilot.lprintf.com,测试地址必须通过显式 test mode 启用,并在产物中标记为非发布 URL。

3.6 建议区分公开测试和线上系统测试

当前公开仓库实际可运行的是 4 项便携 Agent测试;评测文档列出的身份隔离、运行时、异步任务和 token 审计等测试并未包含在仓库中。

建议在 README 中分别列出:

  • 当前仓库可复现的测试;
  • 线上产品内部测试结果;
  • 需要通过 Demo 验证的能力;
  • 当前无法公开复现的部分。

4. 优先改进建议

建议优先处理:

  1. 修复策略门禁的误拒绝和漏检,并补齐全部边界测试。
  2. 让生成页面真正包含用户要求的核心内容和行动入口。
  3. 对齐 Skill manifest、实际函数和工作流,并加入运行时 Schema 验证。
  4. 补上生成文件检查、预览和发布计划前置条件。
  5. 限制 public-base,并明确测试 URL 与正式发布 URL。
  6. 将便携 Agent证据与线上产品证据分开说明。

5. 综合评价

项目的产品矩阵、发布边界和真实用户验证思路具有较强完整性,三个产品的解耦关系也比上一版材料更清楚。

当前主要问题集中在公开的便携 Agent:它可以稳定生成文件,但需求理解和页面生成仍较浅;策略检查与公开规则不一致;Skill contract 目前更多是说明文件,还没有成为实际运行时约束。

修复需求兑现、策略语义和契约执行后,便携 Agent才能更有力地证明线上产品所强调的“受控创作与发布”能力。

## 1. 项目理解 我理解本项目由三个相互独立的产品组成: - printf:把自然语言需求转成静态网站并发布到独立 URL; - lprintf:把已有完整 HTTP 应用发布为受控 HTTPS 服务; - lprintf Hub:负责产品登记、人工审核、发现和连接。 三个产品没有被虚构成运行时强耦合关系。当前仓库还提供了一个可离线运行的 Printf Wave 3 Agent,用四个 Skill 将需求处理为 HTML、发布计划、Hub 登记草稿和执行轨迹。 本次代码验证主要针对该便携 Agent;线上 printf、lprintf 和 Hub 的后端源码不在当前公开仓库中,因此只依据文档和截图理解其产品能力。 ## 2. 项目亮点 - 三个产品的职责、URL 和故障边界描述比较清楚,没有把 printf 静态站点错误描述成 lprintf mapping。 - 便携 Agent 无需第三方依赖和模型密钥,可以直接离线运行。 - 正常请求会生成 index.html、release-plan.json、hub-listing.json 和 trace.json。 - 发布计划明确标记为 planned 和 requires_confirmation,没有把计划 URL 冒充成已发布结果。 - 项目明确禁止 SSH、root、任意端口、隧道、代理、任意 Dockerfile 等基础设施能力。 - 用户反馈材料对用户名和头像进行了遮盖,并明确将其限定为早期质性证据。 - 当前公开测试可直接执行,4 项单元测试均通过。 ## 3. 当前问题和疑点 ### 3.1 策略门禁与文档及验收标准不一致 文档明确要求“平台不提供 SSH”这类安全边界说明能够通过,但实际请求: “制作一个页面,说明平台不提供 SSH、root 和端口映射” 会被直接拒绝。 另一方面,以下文档明确禁止的请求却会通过: - FRP 和 WireGuard; - VPS 和独立公网 IP; - 反向代理并开放 8080 端口; - 挖矿推广; - 群发垃圾邮件服务。 当前实现主要依赖有限关键词包含判断,与 agent.json 中的 default_deny 描述不一致。 建议采用能力分类和语义判断,并为文档中的全部禁止能力建立参数化测试,同时增加“安全说明应放行”的测试。 ### 3.2 生成页面没有真正落实用户需求 官方示例要求生成包含“议程、嘉宾和报名入口”的活动落地页。 实际生成的页面没有对应区块或报名入口,只在页面顶部重复了原始需求,主体仍然是固定的“从一句话开始、受控生成、可体验结果”三张卡片。 建议让确定性 fallback 至少根据需求生成对应区块,并在生成后输出 requested_sections、generated_sections 和 missing_sections,避免文件生成成功但用户任务没有完成。 ### 3.3 便携 Agent 没有按声明的 Skill 工作流执行 文档流程包含: - 生成前策略检查; - 生成文件策略检查; - 隔离预览; - 用户请求发布; - 发布前策略检查; - 发布计划。 实际便携 Agent只执行一次意图检查,没有 create_preview、生成文件检查或发布前检查,并在同一轮直接创建发布计划。 建议让便携 Agent遵守公开 Skill 前置条件;或者明确标注其只是更小的演示切片,不把缺失步骤列为已执行 trace。 ### 3.4 Skill manifest 与实际工具输入输出不一致 当前 load_contracts 只核对工具名称,不验证 JSON Schema。 例如: - policy-check manifest 没有 request 输入字段,实际函数却要求 request; - release-controller 文档声明返回 release_plan 对象,实际字段直接位于顶层; - site-builder manifest 声明返回 status、template、style 和 files,实际实现只返回 HTML 字符串。 建议在运行时使用 JSON Schema 验证每次工具调用的输入和输出,并为契约不匹配增加失败测试。 ### 3.5 发布基础地址需要限制 便携 Agent允许通过 --public-base 写入任意地址,包括 HTTP localhost 或私网地址。 这与受控 HTTPS 域名和禁止私网目标的产品边界不一致。建议正式模式只允许 gp-pilot.lprintf.com,测试地址必须通过显式 test mode 启用,并在产物中标记为非发布 URL。 ### 3.6 建议区分公开测试和线上系统测试 当前公开仓库实际可运行的是 4 项便携 Agent测试;评测文档列出的身份隔离、运行时、异步任务和 token 审计等测试并未包含在仓库中。 建议在 README 中分别列出: - 当前仓库可复现的测试; - 线上产品内部测试结果; - 需要通过 Demo 验证的能力; - 当前无法公开复现的部分。 ## 4. 优先改进建议 建议优先处理: 1. 修复策略门禁的误拒绝和漏检,并补齐全部边界测试。 2. 让生成页面真正包含用户要求的核心内容和行动入口。 3. 对齐 Skill manifest、实际函数和工作流,并加入运行时 Schema 验证。 4. 补上生成文件检查、预览和发布计划前置条件。 5. 限制 public-base,并明确测试 URL 与正式发布 URL。 6. 将便携 Agent证据与线上产品证据分开说明。 ## 5. 综合评价 项目的产品矩阵、发布边界和真实用户验证思路具有较强完整性,三个产品的解耦关系也比上一版材料更清楚。 当前主要问题集中在公开的便携 Agent:它可以稳定生成文件,但需求理解和页面生成仍较浅;策略检查与公开规则不一致;Skill contract 目前更多是说明文件,还没有成为实际运行时约束。 修复需求兑现、策略语义和契约执行后,便携 Agent才能更有力地证明线上产品所强调的“受控创作与发布”能力。
Owner

已提交草稿 PR #21:#21

其中专门澄清:--public-base 只控制便携 Printf Agent 写入 release-plan.json 的计划 URL,不是 lprintf Client mapping target,也不限制 lprintf 将任意 Client 可达的内网/公网 HTTP 服务发布为公网 HTTPS。对正式模式限制它,是为了防止测试地址被误读为 printf 正式发布证据。

本 PR 同时接受策略误拒/漏检、需求未兑现、预览与发布前门禁缺失、Skill 契约未校验等问题,但只提交文档澄清,不会关闭 #20;代码项将在实现与测试合并后逐项处理。

已提交草稿 PR #21:https://www.synnovator.com/lprintf/printf/pulls/21 其中专门澄清:`--public-base` 只控制便携 Printf Agent 写入 `release-plan.json` 的计划 URL,不是 lprintf Client mapping target,也不限制 lprintf 将任意 Client 可达的内网/公网 HTTP 服务发布为公网 HTTPS。对正式模式限制它,是为了防止测试地址被误读为 printf 正式发布证据。 本 PR 同时接受策略误拒/漏检、需求未兑现、预览与发布前门禁缺失、Skill 契约未校验等问题,但只提交文档澄清,不会关闭 #20;代码项将在实现与测试合并后逐项处理。
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lprintf/printf#20
No description provided.