AGENTS.md
目标是让「兼容 PDD 不同商品详情页与规格面板形态」这件事能靠改 Admin 规则完成,而不是每次发 APK。当前有一个结构性障碍:项目把「识别用的文字」和「要点击的文字」当成同一类东西一起禁止了。
具体表现:
server/app/goauto/purchasecontract/contract.go:52-54
forbiddenTextFragments
支付
付款
免密
创建订单
提交订单
订单号
修改地址
收货地址
:160
textAliases
PddProductDetailCollector.kt
AGENTS.md:28
CLAUDE.md:35
CLAUDE.md
pay
AGENTS.md:28 改为按动作分级的表述,建议文本:
不执行付款。当前项目不实现任何自动支付动作、入口或测试;后续如需实现,必须先单独建单评估,并至少具备显式能力位、服务端开关、单笔金额上限与人工授权四项控制。支付、下单、订单相关文字允许作为只读识别信号出现在采集与采购规则中,用于判断页面形态;但任何规则都不得把它们配置为点击目标。
AGENTS.md:29 的采购门禁保持不变(采集与采购仍分离),仅补一句说明:采集规则可以描述订单确认面板的只读特征,这不构成「采购代码混入采集」。
AGENTS.md:29
CLAUDE.md:35 的「也不得实现支付」改为与上述一致的表述,避免模型将只读识别文案一并拒绝。
purchasecontract/contract.go
forbiddenClickFragments
forbiddenAlwaysFragments
collector.textAliases
contract.go:112
payment
purchasecontract/default_test.go
提交订单/确认订单/支付/付款
PddProductDetailCollector.kt:374
dangerousWords
支付方式
default_test.go
go test ./app/goauto/purchasecontract/... ./app/goauto/rulecontract/...
python dev_scripts/harness.py check --strict
Business-Rules-and-Glossary
docs/03-business-rules-and-glossary.md
Android-Agent-API-Contract
docs/08-agent-api-contract.md
sync
sync --check
待实施。
ValidateReadOnlyTextAliases
.\scripts\verify.ps1 -Component server
go test ./...
go build
git diff --check
26618d4312a1e7091f6b483111c31e67f70f26eb
3d6a43359e015d4d6eaeb896f63dc1920ca601f6
3619435 — refactor(#116): separate read-only aliases from actions,已推送到 origin/main。
3619435
refactor(#116): separate read-only aliases from actions
origin/main
工单保持打开,等待用户验收。
用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
No dependencies set.
The note is not visible to the blocked user.
所属与来源
AGENTS.md「Gitea 交互与工单最小读取」记录回退原因。问题陈述
目标是让「兼容 PDD 不同商品详情页与规格面板形态」这件事能靠改 Admin 规则完成,而不是每次发 APK。当前有一个结构性障碍:项目把「识别用的文字」和「要点击的文字」当成同一类东西一起禁止了。
具体表现:
server/app/goauto/purchasecontract/contract.go:52-54的forbiddenTextFragments(含支付、付款、免密、创建订单、提交订单、订单号、修改地址、收货地址)在:160处对动作的textAliases生效。这个设计对要点击的文字是正确的。PddProductDetailCollector.kt),PDD 一改版就得发版——正是本工单要消除的成本。AGENTS.md:28「不执行付款;任何自动支付实现、入口或测试都禁止进入本项目」与CLAUDE.md:35「也不得实现支付」是绝对句式,任何模型读到都会把「在规则里写『支付方式』作为识别信号」一并拒绝。目标
AGENTS.md/CLAUDE.md中会误伤只读识别文案的绝对句式,改为按动作分级的表述。非目标
pay动作、不新增支付能力位的执行路径、不接入任何支付界面或测试。修改地址/收货地址保持永久禁止点击,改错收货地址的破坏力高于其他项)。实施方案
一、仓库规则改写
AGENTS.md:28改为按动作分级的表述,建议文本:AGENTS.md:29的采购门禁保持不变(采集与采购仍分离),仅补一句说明:采集规则可以描述订单确认面板的只读特征,这不构成「采购代码混入采集」。CLAUDE.md:35的「也不得实现支付」改为与上述一致的表述,避免模型将只读识别文案一并拒绝。二、服务端校验分级
purchasecontract/contract.go将forbiddenTextFragments拆为两组,并明确各自的适用面:forbiddenClickFragments(作用于动作textAliases,即点击目标):保留现有全部词条,行为不变。forbiddenAlwaysFragments(无论何种用途都禁止):修改地址、收货地址。collector.textAliases与后续采购规则识别字段共用):允许支付、付款、提交订单、订单号等词,拒绝forbiddenAlwaysFragments,并沿用既有长度与数量上限。contract.go:112对pay/payment动作类型保持拒绝,但把错误信息从「包含永远禁止的支付动作」改为「支付动作尚未实现」,与新的规则口径一致,不产生「已放开」的误解。purchasecontract/default_test.go中「默认规则不得包含pay/支付」的断言需相应调整:默认规则仍不得包含支付动作,但不应因出现只读识别文案而失败。调整时保留对动作类型的断言强度。三、与 #115 的口径统一
提交订单/确认订单/支付/付款」。该条与 #113 已证实的订单确认面板识别需求直接冲突,须按本工单口径修正为:B 类只读识别字段允许这些词;禁止的是把它们用作点击目标(该禁令由 Agent 侧不可配置的拒绝清单保证)。本工单落地后需在 #115 同步该修正。安全边界
PddProductDetailCollector.kt:374的dangerousWords)保持在代码内且不接受规则覆盖;本工单不改动它。textAliases校验强度不降低。pay动作在校验层仍被拒绝。验收标准
AGENTS.md与CLAUDE.md的表述一致,且明确「只读识别文案允许配置、点击目标不允许」。支付/提交订单写进动作textAliases时仍被拒绝,错误信息不变。修改地址/收货地址写进任何字段(动作或只读识别)都被拒绝。提交订单、支付方式、订单号等词,并受长度与数量上限约束。pay/payment动作类型仍被拒绝,错误信息改为「尚未实现」。default_test.go调整后仍能拦住「默认规则包含支付动作」这一真实风险。验证方式
go test ./app/goauto/purchasecontract/... ./app/goauto/rulecontract/...python dev_scripts/harness.py check --strict(规则文档结构)。依赖、并行与风险
文档影响
AGENTS.md、CLAUDE.md属仓库规则文件,直接修改并提交。Business-Rules-and-Glossary(docs/03-business-rules-and-glossary.md):安全边界中关于付款与规则可配置范围的描述。Android-Agent-API-Contract(docs/08-agent-api-contract.md):现有「任何规则都不能执行付款」一句需按新口径改写,明确只读识别与点击目标的区别。sync与一轮sync --check,把页面与 revision 写回本工单。状态
待实施。
实施完成,待验收
实现
AGENTS.md与CLAUDE.md已按用途区分只读识别文字和可执行点击目标。pay/payment动作继续在服务端拒绝,错误口径改为“尚未实现”。textAliases的禁止清单强度不变:支付、付款、免密、创建/提交订单、订单号和地址文字仍不能成为点击目标,既有错误信息保持不变。ValidateReadOnlyTextAliases:允许“提交订单”“支付方式”“订单号”“付款说明”等页面证据;“修改地址”“收货地址”在任何可配置用途仍拒绝;数量、长度、空白和重复限制由调用契约明确传入。验证
go test ./app/goauto/purchasecontract/... ./app/goauto/rulecontract/...:通过。.\scripts\verify.ps1 -Component server:通过(go test ./...、go build)。python dev_scripts/harness.py check --strict:通过。git diff --check:通过。Wiki
26618d4312a1e7091f6b483111c31e67f70f26eb3d6a43359e015d4d6eaeb896f63dc1920ca601f6sync与一轮sync --check均通过。提交
3619435—refactor(#116): separate read-only aliases from actions,已推送到origin/main。工单保持打开,等待用户验收。
用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila referenced this issue2026-08-29 10:26:52 +08:00
ila referenced this issue2026-08-29 10:27:52 +08:00