mcpField
U
user-profile-keeper

user-profile-keeper

github.com/dongshuyanAgent 工作流762197 次安装1 周前更新
代码仓库

关于 user-profile-keeper

user-profile-keeper 是用于维护本地用户档案的通用 Agent 技能,并要求档案更新附带证据且经过相应审核。它支持查看、更正、删除和导出档案数据。

主要功能

  1. 01本地存储用户档案
  2. 02记录带证据的档案断言
  3. 03敏感或推断信息转为待审提案
  4. 04查看和更正档案
  5. 05搜索、删除与导出

适用场景

  1. 01记录协作偏好以供后续辅助参考
  2. 02审核根据会话信息提出的更新
  3. 03更正或导出已存储的档案信息

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dongshuyan/compass-skills --skill user-profile-keeper

安装后在 Claude Code 中输入/user-profile-keeper确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
examples.md
privacy-boundary.md
profile-schema.md
questionnaire.md
task-clarifier-integration.md
update-policy.md
scripts/
onboarding_webui.py
profile_store.py
smoke_test_onboarding.py

详细介绍

用户档案管理器

语言政策

**所有面向用户的输出——档案摘要、提案、导出内容、问题和确认信息——都必须使用用户的语言。**根据用户的消息判断其语言。无法确定时,默认使用中文。技能说明使用英文编写;这不影响面向用户的输出语言。

角色

维护仅存储在本地的用户档案。默认用户为 default。只有当用户明确指定其他身份时,才创建或切换到其他用户。

可移植性

此技能不依赖特定 Agent。根据包含此 SKILL.md 的目录解析路径。使用主机上可用的 Python 命令(python3、python 或 py -3)。这些脚本适用于使用 Python 3 和标准库的 macOS、Windows 和 Linux。

核心约定

  • 仅当用户明确调用 $user-profile-keeper 时,才使用此技能。
  • 默认将档案数据存储在主机用户的本地个人主目录下的 .compass-skills/user-profiles/v1 中。使用 COMPASS_USER_PROFILE_HOME 设置其他本地目录。
  • 不得上传档案数据。不得读取浏览器 Cookie、令牌、密码、私钥、验证码或凭据。
  • 将存储内容视为本地明文。首次初始化前,告知用户:具有足够权限的本地进程、用户或备份均可读取本地文件。
  • 每条档案陈述都必须包含来源类型、置信度、敏感度、状态和证据。避免无法追溯的结论。
  • 对无冲突的低敏感度明确事实,可通过 --auto-apply-safe 提交;由脚本决定是否将其设为有效。推断得出的、私密的、敏感的、高影响的或有冲突的事实必须作为待处理提案。
  • 档案范围包括协作偏好、表达需求的习惯、能力边界、风险确认、隐私边界、防止信息茧房的规则、典型事件,以及用户提供的背景信息,例如年龄范围、教育程度、领域、角色、经验阶段和长期目标。
  • 默认将背景信息视为 private。只有当用户明确要求生成低敏感度摘要时,才采用其他处理方式。默认不在跨技能摘要中包含这些信息。
  • 随时允许用户查看、更正、撤回、删除和导出档案数据。
  • 仅在此技能内读取完整档案。其他技能只能读取低敏感度视图,例如 clarification_summary。
  • 当前会话指令、AGENTS 规则、代码库约束和技能操作规则会约束当前任务,但本身不会初始化持久化用户档案。
  • 如果用户要求填写入门问卷或使用首次运行 WebUI,请运行 scripts/onboarding_webui.py --user <id>。

上下文充分性门槛

使用以下判断规则:

  • 已存在有效档案:将任务视为增量更新。默认不建议填写问卷。
  • 不存在有效档案:建议填写入门问卷。如果用户提出要求,则运行 WebUI。如果用户拒绝,则继续当前任务,并将任何可能持久化的档案信息作为提案处理。

不要通过统计已覆盖的问卷模块来判断当前会话是否“足够”。不要根据操作指令初始化有效档案。

会话推断政策

  • source_type=inferred 始终作为待处理提案,绝不能通过 --auto-apply-safe 设为有效。
  • 用户明确自述的背景信息,包括年龄范围、教育程度、领域、角色、经验阶段和长期目标,默认作为待处理提案,且 sensitivity=private。
  • 仅使用推断来改进协作和后续提问。避免诊断、人格标签、价值判断以及限制用户选择。

工作流

  1. 识别用户。除非用户明确指定其他身份,否则使用 default。需要时,使用 scripts/profile_store.py init --user <id> 初始化。
  2. 使用 scripts/profile_store.py read --user <id> --view clarification_summary 读取当前状态。
  3. 执行 Context Adequacy Gate。对于首次运行的问卷请求,运行 scripts/onboarding_webui.py --user <id>。
  4. 从当前会话中提取候选更新。将持久的个人资料证据与任务本地指令、AGENTS 规则、仓库约束和技能操作规则区分开。
  5. 安全写入:
    • 对明确由用户自述、低敏感且无冲突的协作事实,使用 update-from-session --auto-apply-safe。脚本只会应用通过安全检查的候选项,其余内容会进入提案。
    • 对其他所有候选项,使用 proposal-create 或 update-from-session 创建提案,不依赖自动应用。
    • 报告已应用、已提议、已编辑、已跳过的内容,并说明原因。

阅读 references/update-policy.md,了解自动应用、待处理项、冲突、更正和首次运行规则。阅读 references/privacy-boundary.md,了解敏感度边界。

存储与工具

主存储由 scripts/profile_store.py 管理:

  • init:创建注册表、用户目录和 SQLite 数据库。
  • read:读取 clarification_summary、profile_overview、full 或 pending。
  • update-from-session:根据 Agent 提取的候选 JSON 进行更新或创建提案。
  • proposal-list / proposal-apply / proposal-reject:审核并应用待处理的更新。
  • assertion-add / correct / delete / search / export:手动执行 CRUD 和导出。
  • validate:只读检查已初始化存储的完整性、权限、WAL 模式和孤立证据引用。若个人资料缺失,会报告缺失情况,但不会初始化个人资料。

validate 不会更改个人资料数据或注册表。对于 WAL 模式的存储,SQLite 以只读方式打开数据库时,仍可能创建或更新临时的 -shm 协调文件。 在 POSIX 系统上,目录或数据库模式异常会导致验证失败;在 Windows 上,permission_ok 为 null,因为 POSIX 模式位在该系统上不是可靠的权限检查依据。

主要用法示例:

# Initialize (macOS / Linux)
python3 <skill-dir>/scripts/profile_store.py init --user default
# Windows
py -3 <skill-dir>\scripts\profile_store.py init --user default

# Read low-sensitivity summary for task-clarifier
python3 <skill-dir>/scripts/profile_store.py read --user default --view clarification_summary

# Submit a self-reported low-sensitivity candidate (auto-apply-safe path)
python3 <skill-dir>/scripts/profile_store.py update-from-session \
  --user default \
  --session-summary "User requires confirmation before high-impact actions." \
  --candidate-json '[{"category":"risk_boundary","claim":"confirm_high_impact_actions","value":{"summary":"Confirm before delete, overwrite, publish, or install."},"scope":"global","source_type":"self_report","confidence":0.95,"sensitivity":"low","evidence":{"summary":"User explicitly stated this.","context":"current session"}}]' \
  --auto-apply-safe

# Submit a private background or inferred candidate as proposal
python3 <skill-dir>/scripts/profile_store.py update-from-session \
  --user default \
  --session-summary "User filled background in onboarding." \
  --candidate-json '[{"category":"education_background","claim":"major_or_specialty","value":{"summary":"User self-reported a field or research direction."},"scope":"global","source_type":"self_report","confidence":0.9,"sensitivity":"private","evidence":{"summary":"Onboarding questionnaire.","context":"local onboarding"}}]' \
  --propose

# Review and apply proposals
python3 <skill-dir>/scripts/profile_store.py proposal-list --user default
python3 <skill-dir>/scripts/profile_store.py proposal-apply --user default --proposal-id <id>

# Start onboarding WebUI
python3 <skill-dir>/scripts/onboarding_webui.py --user default

阅读 references/profile-schema.md,了解数据结构和 JSON 输入格式。需要引导流程时,阅读 references/questionnaire.md。

读取视图

  • clarification_summary:低敏感、有效且与需求对齐相关的摘要,可供 $task-clarifier 等技能选择性使用。
  • profile_overview:供此技能使用的低敏感/私人有效摘要;不包含敏感、私密、秘密内容及原始证据文本。
  • full:完整个人资料,仅在用户明确调用此技能处理个人资料时使用。
  • pending:待处理提案;绝不可将其视为稳定的个人资料事实。

阅读 references/task-clarifier-integration.md,了解 $task-clarifier 的边界。阅读 references/examples.md,查看典型用法。

安全默认项

  • 不存储秘密、令牌、密码、私钥、验证码或凭证。
  • 将敏感经历、健康、宗教、政治、财务、身份、亲密关系史及类似内容发送至提案或编辑路径。
  • 用户当前的陈述优先于存储的个人资料数据。
  • 将个人资料视为协作支持和需求对齐证据。

评论

支持 Markdown