Memory Integration
Maintainer thường phản hồi trong vòng 2 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Start by reading the linked Hindsight best-practices guide and the issue’s notes on ambient store and recall, session IDs, and forks. Then trace ECA’s session lifecycle and rollback behavior, which the issue flags as important. Done means agreeing on the integration scope and implementing configurable memory storage and recall that accounts for those cases.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
To upvote this issue, give it a thumbs up. See this list for the most upvoted issues.
Memory
I think one of the biggest features missing from eca is memory integration. Hermes agent, for example, has a memory plugin system that allows adding different memory providers.
I think these are the most notable memory systems that are open source and can run locally:
Out of these, Hindsight stands out to me for these reasons:
- Hindsight is #1 on BEAM (a much more difficult benchmark than older ones like locomo and longmemeval)
- hindsight's website is mostly documentation and only has a small link to their cloud option vs. honcho where it's not even immediately obvious there is a non-paid option (also not clear to me if there is any functionality only in the paid option)
- hindsight is extremely easy to setup locally, just run
uvx hindsight-embed@latest(no complex installation or docker setup) - nice dashboard
Memory Best Practices (especially for Hindsight)
I don't have time at the moment to do this for myself (might eventually), but if someone else decides they want to add memory support, I can provide some information on best practices because hermes' implementation is currently flawed.
- Should support ambient store/recall and manual tools for store/recall (it should be configurable which are enabled)
- Ambient store should automatically store every turn in the memory system. Ideally it is configurable when the LLM will actually run (e.g. every n turns or only on session switch/close)
- Ambient recall should be ephemerally injected just before sending the user message to the LLM. It should be given the current turn's user message (up to some char limit). Hermes currently prefetches based on the previous turn's user message, but this can cause irrelevant memories to surface and potentially confuse the agent. Hindsight's recall is low latency compared to LLM API calls, so I do not believe there is a use case for this
- Forking and resuming are edge cases that need to be taken into account immediately. ECA's rollback might be something to consider how to interact with.
Hindsight specific:
- Hindsight has a best practices guide
- Most notable best practices:
- Don't pre-summarize
contextfield should be set to describe the nature and source of the content. The way I'm doing this in pi is by having a configurable prefix and a truncated session title, which will be the manually set title or part of the first message, e.g. "pi: research hindsight"- Sessions should use their stable session id as the
document_id. Hindsight now has anupdate_mode=appendthat can be used to add the latest turn to an existing document. timestamp- can be session start time
tags- used for filtering at recall time; For automatically retained information, I'm currently tagging withparent:<parent id>,session:<session id>,harness:pi(user configurable constants tag),cwd:<cwd>- Forking/resume can be handled if session id is unique for forks by only appending new turns to the document with that session id (if you retain full document of a fork, you will get duplicate information stored)
I have a pi plugin for hindsight that also:
- After every message queues to disk and then sends them as json strings to hindsight (currently hindsight doesn't have a way to delay processing; queueing to disk is also useful if hindsight is down, as can flush later)
- Allows pruning certain fields before sending into hindsight (may or may not be a good idea, but it reduces token usage)
- Allows upserting the entirety of old sessions to hindsight (to seed with existing memories instead of needing to start fresh; also allows changing pruning settings or reseed after changing retain mission)
The configuration for how to prune session messages currently looks like this:
{
"retainContent": {
"assistant": ["text", "thinking", "toolCall"],
"user": ["text"],
// remove all tool results and only include user messages and assistant reasoning
"toolResult": []
},
"strip": {
// assumes pi's /tree is not being used so messages are ordered and ids not relevant
"topLevel": ["type", "id", "parentId"],
"message": ["api", "provider", "model", "usage", "cost", "stopReason", "timestamp", "responseId"]
}
}
I'm not sure at this point whether or not it makes sense to include full code reads/edits. Hindsight has a "retain mission" which is a prompt you can use to determine what actually gets stored. Currently I am more interested in storing memories about architectural decisions, library/linter/testing preferences, etc. I'm just totally pruning tools for token savings. The alternative would be to just send everything and let the retain mission determine what it needs to extract.
- Ngôn ngữ chính
- Clojure
- Star
- 1k
- Fork
- 82
- Merge trung bình
- 3 ngày 39 phút
- Pull request đã merge (30 ngày)
- 15
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của editor-code-assistant/eca
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
editor-code-assistant/eca#655 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
editor-code-assistant/eca#652 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 12/100
editor-code-assistant/eca#648 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
editor-code-assistant/eca#644 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Add the ability to see what changed in the system promptCó thể đã có người làm @zikajk đã nhận 9 ngày trước. Đang mởenhancement
editor-code-assistant/eca#642 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của editor-code-assistant/eca
Issue tương tự
-
Usage analytics `v_tables` ignores table metadata set by users (`metabase_table_user_settings`)Đang mở.Needs Triage .Team/Graphy Priority:P3 Type:Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
metabase/metabase#84762 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
NoahTheDuke/splint#57 · 1 bình luận ·
-
IOP MCP
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
calcit-lang/calcit#2133 ·
Maintainer thường phản hồi trong vòng 1 ngày