Skip to content

完成 Agent 执行闭环:任务持久化/确定性 Planner+RAG 权限/脱敏/审计日志/Dashboard 增强,新增隐藏场景测试,…#26

Open
Aapolaris wants to merge 1 commit into
lights-think:masterfrom
Aapolaris:Codex/huangwenli
Open

完成 Agent 执行闭环:任务持久化/确定性 Planner+RAG 权限/脱敏/审计日志/Dashboard 增强,新增隐藏场景测试,…#26
Aapolaris wants to merge 1 commit into
lights-think:masterfrom
Aapolaris:Codex/huangwenli

Conversation

@Aapolaris

Copy link
Copy Markdown

完成能力点

  • 补全 Agent 任务执行闭环:任务从 queued/runningcompleted/failed,并持久化运行结果、错误、事件和 token 成本。
  • 实现确定性 Planner 与 Executor:支持 SKU 识别、业务意图判断,并按需执行 ERP、BI、知识库、供应商风险和 OA 审批草稿工具链。
  • 补全 RAG 检索:返回 answercitationsfiltered_doc_ids,并按用户权限过滤受限文档。
  • 实现权限与安全边界:加入工具级权限矩阵、OA 写权限校验、跨用户 run/event 可见性控制和提示词注入拒绝。
  • 实现脱敏机制:防止 vendor_secretunit_cost_usd、内部合同信息、调试字段和原始异常堆栈进入 API 响应、事件、审计日志或协作日志。
  • 完善审计日志与 Dashboard:记录 task/run/tool/approval/admin/read/deny 等关键动作,并补充平均耗时、最近失败、队列健康度和权限拒绝统计。
  • 更新 COLLABORATION_LOG.md:记录需求理解、环境问题、AGENTS.md 历史备注复核、根因分析、兼容影响、验证结果和剩余风险。

核心设计思路和重要取舍

  • 保持现有 FastAPI + SQLite + 本地 fixture 架构,不引入新框架、新数据库或任务队列。
  • 以 README、公开测试、源码契约和实际运行结果为准,拒绝 AGENTS.md 中过时的历史备注。
  • Planner 使用确定性规则解析 SKU 和意图,避免依赖不稳定 LLM 输出,也避免写死公开用户或公开 SKU。
  • Executor 在工具调用前校验权限,并在 OA 写权限不足时阻止或跳过受保护写操作,留下可审计证据。
  • 使用共享 redact() 函数统一处理工具输出、run result、run events、audit logs 和 API 响应中的敏感字段。
  • RAG 将知识库正文视为不可信数据,只用于普通文本检索和摘要,不允许文档内容改变系统策略或权限策略。

本地验证命令和结果

  • py scripts/self_check.py

    • 结果:失败
    • 原因:当前环境无 py launcher。
  • python scripts/self_check.py

    • 结果:失败
    • 原因:默认 python 为 Python 3.6,不满足项目要求。
  • D:\python3.11\python.exe -m venv .venv

    • 结果:通过
    • 说明:创建隔离虚拟环境。
  • .\.venv\Scripts\python.exe -m pip install -e ".[dev]"

    • 结果:通过
    • 说明:首次因沙箱网络限制失败,获得联网授权后安装成功。
  • .\.venv\Scripts\python.exe scripts\self_check.py

    • 结果:通过
    • 输出摘要:4 passed, 1 warning
  • .\.venv\Scripts\python.exe -m pytest -q

    • 结果:通过
    • 输出摘要:4 passed, 6 xpassed, 1 warning
  • 审查报告中的新增隐藏场景测试

    • 结果:通过
    • 输出摘要:公开测试 4 个通过,接受性测试 6 个 XPASS,隐藏场景测试 14 个通过,总计 24 个测试全部通过。

已知未完成项或风险

  • Planner 当前基于确定性文本规则识别 SKU 和业务意图;如果隐藏 prompt 完全不包含可识别 SKU,会进入可解释失败路径。
  • 未引入真实异步任务队列,仍沿用 FastAPI BackgroundTasks 和现有 SQLite 状态模型。
  • RAG 答案为轻量摘要生成,不调用真实 LLM;当前重点满足权限过滤、引用溯源和安全边界。
  • test_acceptance_guidance.py 仍保留原始 xfail 标记,因此完成后表现为 XPASS;这是测试标记问题,不影响功能。
  • Starlette/TestClient 存在 1 个弃用警告,不影响当前功能。

API、数据结构或测试兼容影响

  • API 路径和公开字段保持兼容,未删除或重命名 README 中声明的字段。
  • Run result 在原有结构基础上补全业务字段:skuwarehousestock_gapforecast_units_next_14dsupplier_riskcitationsrecommended_action、按条件返回 approval_draft_id
  • Run events 保持标准结构:seqtypetool_namepayloadcreated_at
  • Dashboard 保留必需字段,并兼容性新增 average_run_secondsrecent_failuresqueue_healthpermission_denial_count
  • 数据库 schema 未新增表或迁移,继续使用现有 tasksrunsrun_eventsaudit_logsknowledge_chunks
  • 新增测试如 tests/test_hidden_scenarios.py 可作为泛化能力验证;若仅作本地审查材料,可不纳入 PR。

协作者与 AI 使用披露

  • 主要完成者:Codex/GPT-5,分支名 Codex/huangwenli
  • Codex 负责阅读 README、AGENTS.md、公开测试和源码,完成实现、环境隔离、验证执行和协作日志更新。
  • Claude Code 负责执行测试,编写额外测试样例,并撰写项目测试与审查报告

COLLABORATION_LOG.md 关键结论摘要

  • README、公开测试、源码契约和实际运行结果优先于 AGENTS.md 中的历史维护者备注。
  • 已逐条拒绝过时建议:不跳过审计事件、不写死公开 SKU、不重命名 Dashboard 字段、不默认放行 OA 写入、不后置 citation/filter 信息、不吞掉工具异常。
  • 当前环境无 py launcher,默认 Python 为 3.6;最终使用 Python 3.11 创建 .venv 并完成验证。
  • 实现保持局部改动,不引入新框架或数据库;权限、安全、审计和脱敏均落在代码关键路径。

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.

1 participant