Self-hosted team memory for AI coding agents — fuses Claude Code/Codex sessions, GitHub code state, and team docs into one git truth store, queryable from your editor over MCP.
8 tools with complete schemas and descriptions, but descriptions are verbose (200-400+ chars, well above the 50-200 char LLM-optimized baseline) and written in Chinese with domain-specific jargon that may confuse LLMs. All tools are read-only (good for safety), but parameter descriptions lack actionable constraints (enums, ranges, formats). No error handling guidance or recovery paths documented. Tool names are descriptive but not verb-noun action-oriented (grep, find, read, ls are commands, not actions like search_logs, locate_files). Output schemas are partially documented in code comments but not formally exposed in the tool registration.
在真相库里按文件名 glob 找文件(像 find / ls -R):grep 搜内容、find 搜文件名,互补。name 支持 * ?(如 *.jsonl、user2-*、*.md);path 限定某 space/子目录。返回相对 path 列表,可直接喂给 read。
用 git grep 在真相库做正则全文搜(带上下文行):支持【或 融资|finance】、标识符、代码符号、词边界。默认搜全部 .md——session 全文对话 + feishu/·notion/·google/ 人写文档镜像(飞书/Notion/Google Docs:战略/PRD/笔记)都在内;raw=true 才连 .jsonl 原始结构一起搜(更全更吵)。可按 space 收窄。返回 path:line: 形式——把 path 抄给 read 即可深挖。有具体词就先用它定位,是第一选择。
看真相库 git 历史 = 全队入库活动流(每条 session 入库一条 commit)。⚠️ 这里的时间是【入库/commit 时间】,不是干活时间——批量回填会把一批旧 session 全压在同一入库时刻,`since` 过滤的也是入库时间。问『某人某段时间【干了什么】』要用 `sessions`(按工作时间);log 适合『最近真相库【收进了什么】/ 谁在持续提交』。坐标已归一到现位置(owner 搬家也能直接 read)。可按 space / author / since / grep 收窄。注:author 这里匹配 git 提交者名(如 username1),与 producer-id(user1)可能不同 → 按人查优先用 sessions。
列结构,用于先搞清「有哪些 space / 这个项目对应哪个 space / 某 space 有哪些分支、几条 session」。不给 path → 列所有 space(github__owner__repo 团队仓 / local__<人> 个人桶);给 path(如 spaces/<key>/sessions)→ 往里看;path=feishu|notion|google → 看有哪些人写文档库/文档(飞书 wiki / Notion / Google Docs 镜像)。目录附子项计数。不确定项目对应哪个 space 时,先 ls 再 grep/find 收窄。
读真相库里某个文件——把 grep / find / ls 命中的 path 直接抄进来,别手编。.md = 这条 session 的【全文可读对话】(深挖首选);.jsonl = 原始结构(一般不需要)。大文件用 offset/limit 翻页,别一次硬读超长文件。
Descriptions are 200-400+ characters, 2-4x the LLM-optimized baseline (50-200 chars). Verbose descriptions with domain jargon (space_key, producer-id, feishu, .jsonl) waste tokens and may confuse LLMs unfamiliar with the domain. Example: grep description is 380+ chars with embedded examples and syntax rules.
Parameter descriptions lack actionable constraints. 'q' in grep accepts regex but no pattern/format declared; 'limit' in find/log/sessions/stats has no min/max bounds (defaults to 200 but no upper limit stated); 'by' in stats should be an enum (day|week|person|space|tool) but is free-form string. LLMs cannot validate inputs without explicit constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
出网看代码现状 / 现拉文件(代码本体不入库、grep 搜不到)。
按【人 + 工作时间】检索 session(author 给 user1/username1 等价;since/until 是真实干活时间)。问「某人某段时间干了什么」首选这个。
全队【聚合统计】:按 day/person/space/tool 维度汇总 token 用量 / session 数 / 对话轮次(按工作时间)。问「每天每人多少 token / 哪个项目活跃 / 谁用得多」用它。
Tool names are command-style (grep, find, read, ls) rather than action-verb style (search_sessions, locate_files, retrieve_content, list_spaces). LLMs infer intent from names, 'grep' is Unix jargon, not a clear action. Rename to search_*, list_*, read_* for clarity.
No error handling guidance. Tools return structured data on success but no documented error cases, recovery paths, or actionable error messages. E.g., if grep finds nothing, does it return empty array or error? If read_github fails due to auth, what should the LLM do next?
Output schemas are documented in code comments (renderStats, fmtAgg) but not formally exposed in tool registration. LLMs cannot see what fields to expect from responses, forcing them to guess or make follow-up calls. Formal schema documentation is missing.