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>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
4bf58796cf
commit
38beecb2d0
@@ -104,13 +104,15 @@ Step 3: 告知用户:缓存已刷新(模块 N 个,用户 M 人)
|
||||
{
|
||||
"cached_at": "2026-04-13T09:00:00+08:00",
|
||||
"data": {
|
||||
"user_id": "123",
|
||||
"id": "123",
|
||||
"name": "张三",
|
||||
"feishu_user_id": "ou_xxx"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> ⚠️ 用户身份的系统内部 ID 字段名是 `id`(与后端 `user_get_me` / `user_list` 返回结构一致),不是 `user_id`。
|
||||
|
||||
**modules.json:**
|
||||
```json
|
||||
{
|
||||
@@ -127,7 +129,7 @@ Step 3: 告知用户:缓存已刷新(模块 N 个,用户 M 人)
|
||||
{
|
||||
"cached_at": "2026-04-13T09:00:00+08:00",
|
||||
"data": [
|
||||
{ "user_id": "456", "name": "李四", "feishu_user_id": "ou_yyy" }
|
||||
{ "id": "456", "name": "李四", "feishu_user_id": "ou_yyy" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
# 名字 → ID 解析
|
||||
|
||||
> ⚠️ 参数细节以 MCP `module_list` / `user_list` / `user_get_me` 的 docstring 为准,本文档仅做工作流引导。
|
||||
|
||||
本文件详细说明如何将模块名、人员名解析为系统 ID,所有步骤均**缓存优先**。
|
||||
|
||||
**字段名约定**:用户/模块的系统内部 ID 字段名统一为 `id`(与后端返回结构一致),不要写成 `user_id`/`module_id` 作为 JSON 字段名。`module_id`/`user_id` 仅在传入 MCP 工具参数时使用。
|
||||
|
||||
---
|
||||
|
||||
## 模块名 → 模块 ID {#modules}
|
||||
@@ -33,7 +37,7 @@
|
||||
→ 检查 cached_at,若 age < 24h → 在 data 数组中查找
|
||||
|
||||
2. 查找逻辑:
|
||||
a. name 精确匹配 → 返回 user_id
|
||||
a. name 精确匹配 → 返回 user.id
|
||||
b. name 包含输入 → 列出候选
|
||||
c. 未找到 → 执行 Step 3
|
||||
|
||||
@@ -46,8 +50,8 @@
|
||||
```
|
||||
|
||||
**特别注意:**
|
||||
- `user_id`(系统内部 ID)≠ `feishu_user_id`(飞书 open_id)
|
||||
- 设置任务执行人用 `user_id`
|
||||
- 用户的系统内部 ID 字段名是 `id`(后端 `user_list` 返回结构),`≠ feishu_user_id`(飞书 open_id)
|
||||
- 设置任务执行人时,MCP 工具的参数名叫 `assignee_ids`,传入的值就是 user.id 列表
|
||||
- 飞书消息通知用 `feishu_user_id`(MCP 内部会自动处理,无需手动区分)
|
||||
|
||||
---
|
||||
@@ -58,7 +62,7 @@
|
||||
|
||||
```
|
||||
1. 解析模块 → read modules.json → 匹配"前端开发" → mod_001
|
||||
2. 解析人员 → read users.json → 匹配"李四" → user_id: 456
|
||||
2. 解析人员 → read users.json → 匹配"李四" → id: 456
|
||||
3. 若任一缓存未命中:先拉 MCP,写缓存,再继续
|
||||
4. 两个 ID 都拿到后 → 调用 task_create(module_id="mod_001", ...)
|
||||
5. 创建完成后 → task_set_assignees(task_id, ["456"])
|
||||
|
||||
Reference in New Issue
Block a user