Skip to content

codex/黄超健#25

Open
MRX1205 wants to merge 1 commit into
lights-think:masterfrom
MRX1205:codex/黄超健

Hidden character warning

The head ref may contain hidden characters: "codex/\u9ec4\u8d85\u5065"
Open

codex/黄超健#25
MRX1205 wants to merge 1 commit into
lights-think:masterfrom
MRX1205:codex/黄超健

Conversation

@MRX1205
Copy link
Copy Markdown

@MRX1205 MRX1205 commented Jun 3, 2026

完成能力点

  • 完成 P0 Agent 执行闭环:Planner 确定性识别 SKU 和业务意图,Executor 按计划调用 ERP、BI、知识库、供应商风险和可选 OA 工具,Worker 持久化运行状态、业务结果、错误、成本和有序事件。
  • 完成 P1 权限与安全边界:RAG 返回 citation 和权限过滤结果;提示词注入在任务创建阶段拒绝;run/events 按请求人、任务创建人或 admin 控制可见性;OA 写操作校验 oa:approval:write,缺权限时跳过并审计。
  • 完成 P1 脱敏与审计:工具返回、run result、run events 和 audit logs 通过统一 sanitization 处理;标准工具调用、审批草稿、权限拒绝、任务拒绝和读取行为均留下审计记录。
  • 完成 P2 管理后台:Dashboard 返回任务/运行数量、完成/失败、失败率、累计成本、平均耗时、工具调用统计、最近失败、队列健康度和权限拒绝线索。

核心设计思想和重要取舍

  • 使用确定性 Planner 和本地工具编排,而不是引入真实 LLM、外部队列、向量库或新框架,以保持评测仓库的固定技术栈和可回归性。
  • RAG 使用轻量 token 相似度排序、权限过滤和 citation 生成;知识库正文只作为不可信文本,不允许改变系统策略、权限策略或工具计划。
  • OA 写操作放在 Executor 关键路径校验,确保“只分析/建议文本/缺写权限”不会创建草稿,同时保留可解释事件和审计证据。
  • 脱敏做成共享工具,并接入工具返回、事件、审计和最终结果路径,降低单点遗漏风险。

本地验证命令和结果

  • python scripts/self_check.py:通过,公开自检完成。
  • python -m pytest -q:通过,10 passed, 1 warning
  • Targeted API/security probe:通过,覆盖 alice 标准工具链、bob 缺写权限跳过 OA、敏感内容不出响应/事件/审计、隐藏样式 SKU 解析、供应商瞬时失败重试成功。

已知未完成事项或风险

  • 意图识别为确定性规则,覆盖 README 和公开验收中的主要表达,但不能等同完整自然语言理解。
  • RAG 是轻量词元检索,不是语义向量检索;隐藏知识库表达差异很大时召回质量可能有限。
  • 后台执行仍使用 FastAPI BackgroundTasks 和 sqlite,没有引入真实分布式队列;这是为了保持与起始仓库约束一致。

兼容影响

  • API 路径和公开字段保持兼容;只新增 dashboard 扩展字段与更完整的事件/审计 payload,没有删除或重命名 README 指定字段。
  • 数据库 schema 未新增表或迁移,继续使用既有 tasks、runs、run_events、audit_logs、knowledge_chunks 表。
  • 权限语义更严格:任务创建、运行读取、事件读取和 OA 写操作都在关键路径校验;缺权限返回稳定错误或跳过受保护写操作并审计。
  • 测试扩展:tests/test_acceptance_guidance.py 从 xfail 指导测试转为普通回归测试,用于校准业务闭环、权限、RAG、脱敏和可见性。

协作者和分工

  • Primary AI software/model:Codex / GPT-5,负责阅读 README/测试/源码、实现代码、运行验证并填写协作记录。
  • Human candidate:黄超健,作为候选人进行规划、最终审阅和提交确认。
  • Other tools:本地 pytest、GitHub CLI、公开 README、公开测试和源码。

COLLABORATION_LOG.md 关键结论摘要

  • 明确目标是补全企业 Agent 后端闭环,非目标是不引入外部数据库、真实队列、真实 LLM、向量库或新框架。
  • 记录了关键歧义:补货审批建议何时等同创建 OA 草稿、bob 缺写权限时如何处理、RAG 是否需要真实生成式回答、工具失败是否重试。
  • 逐条复核并拒绝 AGENTS.md 中过时建议,例如只满足公开测试、按公开 SKU 写固定分支、默认允许 OA 写入、延后 citation 和过滤文档列表等。
  • 记录了根因和修复:Worker 占位失败、Planner 占位步骤、RAG 无 citation、敏感工具字段外泄风险、run/events 可见性不一致。
  • 记录了兼容影响、验证命令、额外 targeted probe 和剩余风险。

Copilot AI review requested due to automatic review settings June 3, 2026 08:37
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Implements the previously placeholder “enterprise agent” execution loop end-to-end, adding deterministic planning, tool execution with auditing/events, RAG retrieval, and systematic sensitive-data redaction.

Changes:

  • Replace placeholder worker with Planner → Executor → ToolRegistry execution, persisting run/task status, results, events, audit logs, and token cost.
  • Add security protections: prompt-injection detection on task creation and centralized sanitization applied to tool outputs, run events, audit logs, and stored results.
  • Enhance RAG and admin metrics: permission-aware search + citations/filtered docs, and dashboard fields for duration, recent failures, and queue health.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
tests/test_acceptance_guidance.py Removes xfail so acceptance guidance now runs as normal tests.
agentops_assessment/security.py Adds centralized sanitize() for redacting sensitive keys/text.
agentops_assessment/rag/security.py Tightens prompt injection detection patterns and simplifies docstring.
agentops_assessment/rag/search.py Implements permission-aware retrieval, scoring, citations, and answer stub.
agentops_assessment/backend/worker.py Implements full background execution flow and persists run/task updates.
agentops_assessment/backend/database.py Sanitizes run event and audit log payloads before persisting.
agentops_assessment/backend/auth.py Adds audit logging for permission denials in require_permissions.
agentops_assessment/backend/app.py Adds prompt-injection rejection + audit; enforces run ownership/admin access.
agentops_assessment/agent/tools.py Sanitizes tool outputs at the registry boundary.
agentops_assessment/agent/planner.py Adds deterministic plan creation incl. SKU extraction and optional OA step.
agentops_assessment/agent/executor.py Implements step execution, arg rendering, events/audits, and final result assembly.
agentops_assessment/admin/metrics.py Adds average duration, recent failures, and queue health metrics.
COLLABORATION_LOG.md Documents decisions, assumptions, verification results, and remaining risks.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +36 to +38
lowered = key.lower()
if key in SENSITIVE_KEYS or any(marker in lowered for marker in SENSITIVE_KEYS):
continue
Comment on lines +45 to +46
for marker in SENSITIVE_TEXT:
cleaned = cleaned.replace(marker, "[redacted]")
Comment on lines +219 to +220
has_stock_risk = current_stock < safety_stock or forecast_units > available_stock
return bool(has_stock_risk and (stock_gap >= 30 or sales_impact > 5000 or forecast_units > available_stock))
Comment on lines +229 to +231
with database.connect() as conn:
database.init_db(conn)
database.insert_run_event(conn, run_id, event_type, payload, tool_name=tool_name)
Comment on lines +241 to +243
with database.connect() as conn:
database.init_db(conn)
database.insert_audit_log(conn, actor_id, action, resource, payload, decision=decision)
Comment on lines +86 to +88
def _needs_approval_draft(prompt: str) -> bool:
markers = ["创建", "审批草稿", "审批建议", "补货审批", "生成补货"]
return any(marker in prompt for marker in markers)
]


def sanitize(value: Any) -> Any:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants