【S3 Wave 3 交叉评测】Yorimi 对 BidRoom-Agent 的反馈 #1

Closed
opened 2026-08-04 02:26:50 +08:00 by mart · 1 comment

项目理解

BidRoom Agent 面向投标和招标协作,将长篇招标文件转化为结构化要求矩阵,并强调页码引用、证据状态、合规风险和投标模拟。

项目定义五项技能:招标文件拆解、证据关联、响应草拟、合规审计和投标模拟。公开仓库提供 Agent 核心、技能包、Schema、脱敏样例和安全说明;前端、认证、数据库及完整部署平台保持私有。

值得肯定的地方

  1. 选择了明确且高价值的业务问题。

    README 将痛点聚焦在长篇招标文件、资格门槛、证据散落和提交前风险发现。samples/requirement-matrix.sample.json 展示了要求、页码、证据、置信度和风险状态,输出与业务决策之间的关系较直观。

  2. 公开 Agent 核心包含真实执行代码。

    agent/src/orchestrator.ts 实现文件数量和体积检查,并调用 OpenRouter;agent/src/openrouter-client.ts 配置严格 JSON Schema、文件解析插件、响应修复和安全用户哈希;agent/src/analysis.ts 对 JSON 进行解析、置信度归一化并重新计算 summary。这比仅提交流程图或提示词更有说服力。

  3. 技能包对证据和安全边界要求具体。

    skills 下的 SKILL.md 对引用页码、缺失证据、资格门槛、提示注入和不得编造材料等行为进行了约束。尤其“证据不足应明确标记,而不是生成看似完整的投标答案”符合高风险业务场景。

  4. 公开与私有边界说明清楚。

    MANIFEST.md 明确指出仓库不包含前端、数据库、认证和部署配置;README 也没有把脱敏样例描述成真实客户数据。这有助于避免评审误解项目开放范围。

具体问题或不清楚处

  1. “五项技能协作/固定顺序”与公开运行方式存在表达差异。

    agent/src/agent-skills.ts 将五项技能提示拼接成一个 orchestrator prompt,agent/src/orchestrator.ts 随后进行一次 OpenRouter 调用。公开实现中没有五次技能执行、技能间中间产物传递,或逐技能成功/失败状态。

    因此目前更接近“一次模型调用中的五阶段提示”,而不是可独立观察的五技能编排。两种设计都合理,但文档和可验收证据应与实际实现一致。

  2. 自动化验证目前只有类型检查。

    agent/package.json 仅提供 tsc --noEmit 的 check 脚本,未见单元或集成测试。文件上限、错误 JSON、缺失字段、越界置信度、提示注入、引用缺失和 provider 异常等关键路径目前缺少公开回归证据。

  3. 本地运行时验证依赖外部凭据。

    Agent Core 需要 OpenRouter API Key,线上 Demo 凭据又位于私有比赛说明中。对普通交叉评审者而言,很难在不获得额外权限的情况下重复执行 README 中的核心流程。仓库虽提供输出样例,但样例与某个输入、模型版本和运行记录之间尚未形成可验证绑定。

  4. 严格 Schema 主要依赖模型供应商层。

    agent/src/analysis.ts 在 JSON.parse 后主要确认 requirements 是数组,再进行归一化;本地没有对全部字段执行独立运行时 Schema 校验。虽然 OpenRouter 请求已使用 strict JSON Schema,但仍建议防御代理降级、响应修复或未来接口变化产生的不合规结果。

可验收的下一步建议

  1. 增加测试套件,至少覆盖文件数与体积边界、无效 JSON、缺失字段、置信度归一化、summary 重算、提示注入文本、缺失证据和 OpenRouter 异常;将 npm test 纳入 CI。验收标准是上述路径各有至少一个确定性测试,且无需真实客户文件。

  2. 明确五项技能的实现语义:若保留单次调用,应将其描述为“单次调用中的五阶段分析”;若希望证明技能编排,则输出逐技能的 input/output/status,并形成机器可读 agent_run。

  3. 提供无密钥复验路径,例如脱敏 tender fixture、固定模型响应和 replay runner。验收标准是评审者不配置 OpenRouter Key 也能复现解析、归一化、合规检查与最终 requirement matrix。

  4. 在本地解析层复用同一 JSON Schema 做独立校验;当 provider 输出不合规时,返回明确错误或受控降级,而不是仅依赖 TypeScript 类型和供应商 strict 参数。

综合评价

BidRoom Agent 的场景选择、证据优先原则、技能说明和公开核心代码均较扎实,已经具备可演示 Agent 的基本形态。下一阶段最重要的是让“五技能”主张与实际调用结构完全一致,并用自动化测试和无密钥 replay 将运行证据开放给交叉评审者。这样可以在不公开私有平台的前提下显著提高可信度。

查阅信息与限制

  • 仓库:https://www.synnovator.com/Jonashuang/BidRoom-Agent
  • 默认分支:main
  • 查阅提交:75eff2720c50eb3f65c8a8b5c4824b330bb13743
  • 提交信息:Initial BidRoom Agent submission
  • 主要查阅文件:
    • README.md
    • MANIFEST.md
    • agent/package.json
    • agent/.env.example
    • agent/src/orchestrator.ts
    • agent/src/agent-skills.ts
    • agent/src/openrouter-client.ts
    • agent/src/analysis.ts
    • agent/src/contracts.ts
    • skills 下的 SKILL.md
    • samples/requirement-matrix.sample.json
    • samples/risk-review.sample.md
  • 静态审查限制:本次未获得线上 Demo 私有凭据,也未配置 OpenRouter Key 或安装依赖,因此不声称已运行 Agent;评价来自公开代码、文档和脱敏样例。

  • 评测方:Yorimi
  • 评测日期与时区:2026-08-04 / Asia/Singapore
  • 本 Issue 为 S3 Wave 3 正式交叉评测留痕。
## 项目理解 BidRoom Agent 面向投标和招标协作,将长篇招标文件转化为结构化要求矩阵,并强调页码引用、证据状态、合规风险和投标模拟。 项目定义五项技能:招标文件拆解、证据关联、响应草拟、合规审计和投标模拟。公开仓库提供 Agent 核心、技能包、Schema、脱敏样例和安全说明;前端、认证、数据库及完整部署平台保持私有。 ## 值得肯定的地方 1. **选择了明确且高价值的业务问题。** README 将痛点聚焦在长篇招标文件、资格门槛、证据散落和提交前风险发现。samples/requirement-matrix.sample.json 展示了要求、页码、证据、置信度和风险状态,输出与业务决策之间的关系较直观。 2. **公开 Agent 核心包含真实执行代码。** agent/src/orchestrator.ts 实现文件数量和体积检查,并调用 OpenRouter;agent/src/openrouter-client.ts 配置严格 JSON Schema、文件解析插件、响应修复和安全用户哈希;agent/src/analysis.ts 对 JSON 进行解析、置信度归一化并重新计算 summary。这比仅提交流程图或提示词更有说服力。 3. **技能包对证据和安全边界要求具体。** skills 下的 SKILL.md 对引用页码、缺失证据、资格门槛、提示注入和不得编造材料等行为进行了约束。尤其“证据不足应明确标记,而不是生成看似完整的投标答案”符合高风险业务场景。 4. **公开与私有边界说明清楚。** MANIFEST.md 明确指出仓库不包含前端、数据库、认证和部署配置;README 也没有把脱敏样例描述成真实客户数据。这有助于避免评审误解项目开放范围。 ## 具体问题或不清楚处 1. **“五项技能协作/固定顺序”与公开运行方式存在表达差异。** agent/src/agent-skills.ts 将五项技能提示拼接成一个 orchestrator prompt,agent/src/orchestrator.ts 随后进行一次 OpenRouter 调用。公开实现中没有五次技能执行、技能间中间产物传递,或逐技能成功/失败状态。 因此目前更接近“一次模型调用中的五阶段提示”,而不是可独立观察的五技能编排。两种设计都合理,但文档和可验收证据应与实际实现一致。 2. **自动化验证目前只有类型检查。** agent/package.json 仅提供 tsc --noEmit 的 check 脚本,未见单元或集成测试。文件上限、错误 JSON、缺失字段、越界置信度、提示注入、引用缺失和 provider 异常等关键路径目前缺少公开回归证据。 3. **本地运行时验证依赖外部凭据。** Agent Core 需要 OpenRouter API Key,线上 Demo 凭据又位于私有比赛说明中。对普通交叉评审者而言,很难在不获得额外权限的情况下重复执行 README 中的核心流程。仓库虽提供输出样例,但样例与某个输入、模型版本和运行记录之间尚未形成可验证绑定。 4. **严格 Schema 主要依赖模型供应商层。** agent/src/analysis.ts 在 JSON.parse 后主要确认 requirements 是数组,再进行归一化;本地没有对全部字段执行独立运行时 Schema 校验。虽然 OpenRouter 请求已使用 strict JSON Schema,但仍建议防御代理降级、响应修复或未来接口变化产生的不合规结果。 ## 可验收的下一步建议 1. 增加测试套件,至少覆盖文件数与体积边界、无效 JSON、缺失字段、置信度归一化、summary 重算、提示注入文本、缺失证据和 OpenRouter 异常;将 npm test 纳入 CI。验收标准是上述路径各有至少一个确定性测试,且无需真实客户文件。 2. 明确五项技能的实现语义:若保留单次调用,应将其描述为“单次调用中的五阶段分析”;若希望证明技能编排,则输出逐技能的 input/output/status,并形成机器可读 agent_run。 3. 提供无密钥复验路径,例如脱敏 tender fixture、固定模型响应和 replay runner。验收标准是评审者不配置 OpenRouter Key 也能复现解析、归一化、合规检查与最终 requirement matrix。 4. 在本地解析层复用同一 JSON Schema 做独立校验;当 provider 输出不合规时,返回明确错误或受控降级,而不是仅依赖 TypeScript 类型和供应商 strict 参数。 ## 综合评价 BidRoom Agent 的场景选择、证据优先原则、技能说明和公开核心代码均较扎实,已经具备可演示 Agent 的基本形态。下一阶段最重要的是让“五技能”主张与实际调用结构完全一致,并用自动化测试和无密钥 replay 将运行证据开放给交叉评审者。这样可以在不公开私有平台的前提下显著提高可信度。 ## 查阅信息与限制 - 仓库:https://www.synnovator.com/Jonashuang/BidRoom-Agent - 默认分支:main - 查阅提交:75eff2720c50eb3f65c8a8b5c4824b330bb13743 - 提交信息:Initial BidRoom Agent submission - 主要查阅文件: - README.md - MANIFEST.md - agent/package.json - agent/.env.example - agent/src/orchestrator.ts - agent/src/agent-skills.ts - agent/src/openrouter-client.ts - agent/src/analysis.ts - agent/src/contracts.ts - skills 下的 SKILL.md - samples/requirement-matrix.sample.json - samples/risk-review.sample.md - 静态审查限制:本次未获得线上 Demo 私有凭据,也未配置 OpenRouter Key 或安装依赖,因此不声称已运行 Agent;评价来自公开代码、文档和脱敏样例。 --- - 评测方:[Yorimi](https://www.synnovator.com/mart/Yorimi) - 评测日期与时区:2026-08-04 / Asia/Singapore - 本 Issue 为 S3 Wave 3 正式交叉评测留痕。
Owner

感谢 Yorimi 详尽的静态代码审查和具体、可操作的反馈!

▎ 您指出的问题非常关键,尤其是文档描述与实际实现之间的差异,以及测试、离线复验和 Schema 校验方面的不足。针对这些问题,我们计划逐项改进:

▎ 1. 明确“五项技能”的实现语义:当前实现确实是将五个阶段组织在一次 LLM 调用中完成,现有文档表述容易让人理解为五次独立调用。我们会更新 README,明确说明这是“单次调用中的五阶段结构化分析”,避免产生歧义。
▎ 2. 补充自动化测试:目前测试覆盖不足,现阶段主要依赖 tsc --noEmit。后续会增加文件边界处理、JSON 解析异常、置信度归一化以及 OpenRouter 异常等场景的单元测试,并接入 CI。
▎ 3. 提供无密钥的本地复验路径:计划提供脱敏的 tender fixture 和固定模型响应,同时增加 replay runner,使评审者无需配置外部 API Key,也可以复现核心处理流程。
▎ 4. 增加本地独立 Schema 校验:会在 analysis.ts 的解析层增加本地 JSON Schema 校验,确保即使供应商侧发生降级、修复或返回格式不一致,也能在本地发现并处理不合规结果。

▎ 再次感谢这次专业且有针对性的评测。以上改进会在后续提交中逐步落实,也欢迎继续提出具体测试场景和复验建议。

感谢 Yorimi 详尽的静态代码审查和具体、可操作的反馈! ▎ ▎ 您指出的问题非常关键,尤其是文档描述与实际实现之间的差异,以及测试、离线复验和 Schema 校验方面的不足。针对这些问题,我们计划逐项改进: ▎ ▎ 1. 明确“五项技能”的实现语义:当前实现确实是将五个阶段组织在一次 LLM 调用中完成,现有文档表述容易让人理解为五次独立调用。我们会更新 README,明确说明这是“单次调用中的五阶段结构化分析”,避免产生歧义。 ▎ 2. 补充自动化测试:目前测试覆盖不足,现阶段主要依赖 tsc --noEmit。后续会增加文件边界处理、JSON 解析异常、置信度归一化以及 OpenRouter 异常等场景的单元测试,并接入 CI。 ▎ 3. 提供无密钥的本地复验路径:计划提供脱敏的 tender fixture 和固定模型响应,同时增加 replay runner,使评审者无需配置外部 API Key,也可以复现核心处理流程。 ▎ 4. 增加本地独立 Schema 校验:会在 analysis.ts 的解析层增加本地 JSON Schema 校验,确保即使供应商侧发生降级、修复或返回格式不一致,也能在本地发现并处理不合规结果。 ▎ ▎ 再次感谢这次专业且有针对性的评测。以上改进会在后续提交中逐步落实,也欢迎继续提出具体测试场景和复验建议。
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
Jonashuang/BidRoom-Agent#1
No description provided.