Sweep resolves GitHub issues with AI-generated code, but each ticket is handled in isolation. For high-volume repos where Sweep handles many issues per week, a persistent memory of codebase conventions and past decisions would improve suggestion consistency.
Problem: Sweep has to re-discover codebase conventions on every ticket — 'this team uses dataclasses not TypedDicts', 'tests always go in tests/unit/', 'async functions always get a timeout parameter'. These patterns are re-derived from scratch each time.
Proposed: Optional memory layer in sweepai/handlers/on_ticket.py:
from dakera import DakeraClient
_memory = DakeraClient(
base_url=os.environ.get('DAKERA_URL', 'http://localhost:3300'),
api_key=os.environ.get('DAKERA_API_KEY', ''),
)
def recall_conventions(repo_full_name: str, issue_title: str) -> str:
response = _memory.recall(
agent_id=f'sweep-{repo_full_name.replace("/", "-")}',
query=issue_title,
top_k=5,
)
if not response or not response.memories:
return ''
return '\n'.join(f'- {m.content}' for m in response.memories)
def store_merged_pr_pattern(repo_full_name: str, pr_description: str) -> None:
_memory.store_memory(
agent_id=f'sweep-{repo_full_name.replace("/", "-")}',
content=pr_description,
)
Integration:
- Before generating code: inject recall_conventions() into Sweep's system context
- After PR merge: call store_merged_pr_pattern() to persist the successful pattern
- Enabled only when DAKERA_URL is set (zero-config opt-in)
Setup: docker run -d -p 3300:3300 -e DAKERA_API_KEY=demo ghcr.io/dakera-ai/dakera:latest
Happy to open a PR.
Sweep resolves GitHub issues with AI-generated code, but each ticket is handled in isolation. For high-volume repos where Sweep handles many issues per week, a persistent memory of codebase conventions and past decisions would improve suggestion consistency.
Problem: Sweep has to re-discover codebase conventions on every ticket — 'this team uses dataclasses not TypedDicts', 'tests always go in tests/unit/', 'async functions always get a timeout parameter'. These patterns are re-derived from scratch each time.
Proposed: Optional memory layer in sweepai/handlers/on_ticket.py:
from dakera import DakeraClient
_memory = DakeraClient(
base_url=os.environ.get('DAKERA_URL', 'http://localhost:3300'),
api_key=os.environ.get('DAKERA_API_KEY', ''),
)
def recall_conventions(repo_full_name: str, issue_title: str) -> str:
response = _memory.recall(
agent_id=f'sweep-{repo_full_name.replace("/", "-")}',
query=issue_title,
top_k=5,
)
if not response or not response.memories:
return ''
return '\n'.join(f'- {m.content}' for m in response.memories)
def store_merged_pr_pattern(repo_full_name: str, pr_description: str) -> None:
_memory.store_memory(
agent_id=f'sweep-{repo_full_name.replace("/", "-")}',
content=pr_description,
)
Integration:
Setup: docker run -d -p 3300:3300 -e DAKERA_API_KEY=demo ghcr.io/dakera-ai/dakera:latest
Happy to open a PR.