Files
yixiong-claude-marketplace/plugins/huanxi/skills/huanxi-org/references/resolve-ids.md
T
SkyJourneyandClaude Opus 4.7 38beecb2d0 feat(huanxi+memcore): 全量修正 huanxi 技能描述漂移 + memcore 七项优化
- huanxi: 更新 MCP URL 至 huanxi.office.yixiong-tech.com
- huanxi: 修正所有技能与后端 docstring 漂移
  · report items 字段表(补 module_id 必填、progress→progress_update、去除虚构 status)
  · weekly_report_save week→week_number
  · task end_date(非 due_date)、critical(非 urgent)、not_started(非 todo)
  · 用户/模块 ID 字段名统一为 id(非 user_id)
  · 所有 references 顶部声明"参数细节以 MCP docstring 为准"
- memcore: 新增 memcore-shared 共享层(路径锁定 + 全局常量 + PROJECT_DIR 跨平台解析)
- memcore: lint_report 增量保活(NEED-HUMAN 稳定 ID + resolved 跳过)
- memcore: synonyms.md 自动登记入索引
- memcore: SYNTHESIS_THRESHOLD / LINT_STALE_*_DAYS / MULTI_HOST_WARN_DAYS 常量化
- memcore: update Phase 1 增加 Base commit 兜底,防锚点丢失雪崩
- memcore: Phase 3C 引用快扫脚本改用 grep -F + -- 兼容中文/空格 title

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-12 19:13:21 +08:00

3.0 KiB
Raw Blame History

名字 → ID 解析

⚠️ 参数细节以 MCP module_list / user_list / user_get_me 的 docstring 为准,本文档仅做工作流引导。

本文件详细说明如何将模块名、人员名解析为系统 ID,所有步骤均缓存优先

字段名约定:用户/模块的系统内部 ID 字段名统一为 id(与后端返回结构一致),不要写成 user_id/module_id 作为 JSON 字段名。module_id/user_id 仅在传入 MCP 工具参数时使用。


模块名 → 模块 ID

1. Read ~/.claude/huanxi-cache/modules.json
   → 检查 cached_at,若 age < 24h → 进入匹配逻辑
   → 过期或不存在 → 调用 mcp__huanxi__module_list() 并写入缓存

2. 匹配逻辑:
   a. 精确匹配 name == 输入 → 返回 id
   b. 精确匹配失败 → 模糊匹配(name.includes(输入) 或 输入.includes(name)
   c. 模糊匹配唯一命中 → 确认并返回 id
   d. 多个候选 → 列出候选项,让用户选择
   e. 零命中 → 告知用户,建议运行 +sync 刷新缓存

示例:

  • 用户说"前端模块" → 从缓存匹配到 { id: "mod_001", name: "前端开发" } → 返回 mod_001
  • 用户说"API" → 匹配到 后端API → 返回 mod_002
  • 匹配到多个 → 展示候选列表

人员名 → 用户 ID

1. Read ~/.claude/huanxi-cache/users.json
   → 检查 cached_at,若 age < 24h → 在 data 数组中查找

2. 查找逻辑:
   a. name 精确匹配 → 返回 user.id
   b. name 包含输入 → 列出候选
   c. 未找到 → 执行 Step 3

3. 缓存未命中时:
   a. 调用 mcp__huanxi__user_list(name=<输入>)
   b. 将结果追加(合并去重)写入 users.json(不覆盖已有缓存)
   c. 重新执行 Step 2 匹配逻辑

4. 仍未找到 → 告知用户姓名不存在,建议确认拼写或运行 +sync

特别注意:

  • 用户的系统内部 ID 字段名是 id(后端 user_list 返回结构),≠ feishu_user_id(飞书 open_id
  • 设置任务执行人时,MCP 工具的参数名叫 assignee_ids,传入的值就是 user.id 列表
  • 飞书消息通知用 feishu_user_id(MCP 内部会自动处理,无需手动区分)

自动 ID 解析流程(综合示例)

当用户说"创建任务,负责人是李四,模块是前端开发"时:

1. 解析模块 → read modules.json → 匹配"前端开发" → mod_001
2. 解析人员 → read users.json → 匹配"李四" → id: 456
3. 若任一缓存未命中:先拉 MCP,写缓存,再继续
4. 两个 ID 都拿到后 → 调用 task_create(module_id="mod_001", ...)
5. 创建完成后 → task_set_assignees(task_id, ["456"])

常见错误处理

情况 处理
多个同名用户 展示完整名单(含部门/角色),让用户指定
模块名拼写不完整 模糊匹配,确认后继续
缓存文件损坏(JSON 解析失败) 忽略缓存,直接调 MCP,重建文件
MCP 返回空列表 告知用户,建议检查 Token 权限或联系管理员