[bug] recall: recall quality and adoption never reach the agent's session
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 38/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- cli, developer-experience, tooling
Research direction
Start with src/utils/session-id.ts and src/contribute-check.ts, then trace the recall cache path from src/recall.ts:639. Review src/transcript-parser.ts:62 and proposal #884 for the adoption path. Done means the listed agent session variables resolve the same id for recall and contribute-check, and adoption is detected across the supported agent workflows.
Written by the indexing model from the issue text.
Description
Two recall feedback signals don't work today. Both fail silently.
1. Recall quality never reaches contribute-check (every agent)
teamai recall "<query>" run by the agent's shell tool
recordRecallQuality(deriveSessionId({})) src/recall.ts:639
payload session_id / sessionId → {} is empty in the CLI
process.env.CLAUDE_SESSION_ID → not set by Claude Code
pid-<ppid> → a new shell per Bash call
→ ~/.teamai/sessions/pid-<n>-recall-cache.json, one orphan file per recall
Stop hook → contribute-check
readRecallQuality(<hook session_id>) src/contribute-check.ts:317
→ never finds the cache, so the knowledge-gap bonus never applies
src/utils/session-id.ts:32-34readsCLAUDE_SESSION_ID. Claude Code setsCLAUDE_CODE_SESSION_IDin Bash, hooks and MCP servers, equal to the hooksession_id(env vars).${CLAUDE_SESSION_ID}is only a text placeholder in skill bodies. Checked live in Claude Code 2.1.283:CLAUDE_CODE_SESSION_IDis set,CLAUDE_SESSION_IDis not.- The other agents expose their session id under their own names, and teamai reads none of them.
Fix (small, can ship on its own). Read each agent's variable, after the payload and before the pid fallback:
// src/utils/session-id.ts
const AGENT_SESSION_ENV = [
'CLAUDE_CODE_SESSION_ID', // Claude Code
'CODEX_SESSION_ID', // Codex ≥ 0.148, the root session (equals hook session_id)
'CODEBUDDY_SESSION_ID', // CodeBuddy: before CLAUDE_SESSION_ID, which it also sets
'COPILOT_AGENT_SESSION_ID', // Copilot CLI ≥ 1.0.29
'CURSOR_CONVERSATION_ID', // Cursor
'PI_SESSION_ID', // Pi
'CLAUDE_SESSION_ID', // kept for CodeBuddy and older setups
] as const;
| Agent | Variable | Equals hook session_id |
|---|---|---|
| Claude Code | CLAUDE_CODE_SESSION_ID |
yes (docs, and seen live) |
| Codex | CODEX_SESSION_ID |
yes; CODEX_THREAD_ID is the subagent's own id |
| CodeBuddy | CODEBUDDY_SESSION_ID |
yes for the main agent; subagents get their own id |
| Copilot CLI | COPILOT_AGENT_SESSION_ID |
yes since 1.0.29; not rechecked on 1.0.88 |
| Cursor | CURSOR_CONVERSATION_ID |
yes by source reading; not seen at runtime |
| Pi | PI_SESSION_ID |
yes |
| OpenCode, OMP | none | the generated bridges send no session id either (see the proposal) |
Tests: one per variable, and one that recall and contribute-check resolve the same id when the hook payload's session_id equals the env value. Real-CLI check: teamai recall from Claude Code and from Codex writes ~/.teamai/sessions/<session id>-recall-cache.json.
Known limit: when one agent runs another (Claude runs codex exec), the inner shell also sees the outer agent's variable, and a fixed order can pick the outer one. The proposal resolves that through the PostToolUse hook.
2. Adoption is about zero, even on Claude
main agent → teamai-recall subagent → teamai recall
│
└─ turns written to <session>/subagents/agent-*.jsonl (Claude Code 2.1.283)
main transcript only the subagent's summary
<!-- teamai:recalled-doc-ids: [redis-timeout] --> ids, no paths
main agent Read /…/learnings/redis-timeout.md
Stop → parseTranscriptForVotes src/transcript-parser.ts:62
recalled: [redis-timeout] from the comment (428-437)
paths: none the region with File: lines is in the subagent file (462-507)
adopted: [] the Read can't be matched
- Reproduced with a copy of
src/transcript-parser.tson a transcript with an Agent result carrying the comment, then aReadof the same path:recalledDocIds: ["redis-timeout"], adoptedDocIds: []. - Adoption only works when the main agent runs
teamai recallitself. The recommended subagent path gets no upvotes, except through the opt-inTEAMAI_UPVOTE_JUDGE. - Other agents never had adoption: the parser reads only Claude's JSONL. Codex rollouts and CodeBuddy's
index.jsonare passed in but not understood, and Copilot and OpenCode send no transcript path. - Impact: upvotes feed KB Health and promotion, which needs at least 5 upvotes (
docs/usage-guide.md:1287).
Fix. Not a small patch. The proposal in #884 detects adoption from the PostToolUse hook, which sees both the recall output and the later file read in the same session, for every agent.
- Dominant language
- TypeScript
- Stars
- 5k
- Forks
- 376
- Avg merge
- 13h 50m
- Merged PRs (30d)
- 306
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Tencent/teamai-cli
-
[feat] contribute --namespace, to file a learning under one of the namespaces a directory readsOpenenhancement
Difficulty 4/5 3-5 days Newbie friendliness 52/100
Tencent/teamai-cli#916 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 52/100
Tencent/teamai-cli#915 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
Tencent/teamai-cli#913 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 52/100
Tencent/teamai-cli#912 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 78/100
Tencent/teamai-cli#911 ·
Maintainers usually reply within 1 day
All issues in Tencent/teamai-cli
Similar issues
-
needs:triage
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
ai-discovered
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
jessepollak/home#1627 ·
Maintainers usually reply within 1 day
-
agent-canvas bug llm priority:low ready-for-dev
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
OpenHands/OpenHands#17806 · 3 comments ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
radius-project/ai-extensions#923 ·
Maintainers usually reply within 1 day