Memory-off /v1 turns: memory_remember's answer can echo the user's name and stored memories

Đang mở
#547 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
42/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
ai, security

Hướng nghiên cứu

Start in sentient/memory/facts.py: FactStore.remember runs name_the_user before saving and _hold returns the existing fact's id and content on a SKIP, and both results reach the memory_remember tool. Check how Agent.memory_allowed is passed into that tool's context. The change is to return only a neutral status when ctx.memory_allowed is false, including for helpers. Done when tests/test_openai_api.py has a memory-off test asserting the response contains no renamed text and no stored id or content.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area: memory bug priority: P2 size: S

Found while testing #479 (OpenAI-compatible API) on a real engine.

What happens. In a /v1 turn with "Let connected apps use my memories" off (openai_api.allow_memory: false), the memory read tools are gone (as designed, Agent.memory_allowed, #529), but memory_remember stays so the app can still suggest facts for review. Its answer goes back to the model, and through the model to the app, and it can carry things the turn isn't supposed to see:

  1. The user's name. FactStore.remember runs name_the_user (#475) before saving, and the tool returns the rewritten text. In the real test, a helper started from a memory-off /v1 turn called memory_remember("The user works at a tech startup in Bangalore.") and got back {"action": "ADD", "content": "Maya works at a tech startup in Bangalore.", "status": "pending", ...}. The turn's prompt leaves the configured name out, so this is the only way the app learned it.
  2. An existing memory's text. _hold (sentient/memory/facts.py) answers a near-duplicate with {"action": "SKIP", "id": <existing id>, "content": <the existing fact's text>}. An app can guess a fact close to a stored one and read the stored wording back. The bar is memory.duplicate_similarity (0.98) plus same_subject, so it's a narrow oracle, but #339 shows short facts in one script can score that close with real embedding models.

Suggested fix. When ctx.memory_allowed is false, memory_remember answers without stored content: the fact as the app gave it (not renamed), and no id or text of another fact (for example {"saved": "for review", "status": "pending"}, or {"status": "skipped"} for a duplicate). Same for helpers the turn starts (they inherit the decision). A test in tests/test_openai_api.py next to the existing memory-off tests.

Not a blocker for #479: the memory switch is off by default and the key is made by the user for apps on their own computer, but the switch should mean what it says.

Ngôn ngữ chính
Python
Star
716
Fork
132
Merge trung bình
16 giờ 34 phút
Pull request đã merge (30 ngày)
215

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của existence-master/Sentient

Tất cả issue của existence-master/Sentient

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.