居家管家
家庭物品全生命周期管理技能。当用户使用以下指令时触发: 查物品、看物品(搜索/查看详情)、 录物品、拍物品(文字录入/拍照录入)、 改物品、移物品、补物品、减物品、标物品、废物品、借物品、修物品(更新类)、 盘物品、盘全部(盘点)、 穿什么(穿搭推荐)、 带物品、归物品(旅游归位)、 统物品、查高频、查低频(频率统计)、 查过期(过期检查)、 看标签、合标签(标签管理)、 查快递(快递查询)、 查购买记录、查上月购买、查今年花费、查退货窗口、登记购买记录(购买记录管理)、 查保修状态、登记保修、记录维修、设置保养周期、执行保养(保修与保养)、 查证件到期、登记证件、证件归档、更新证件(证件管理)、 查账号、存账号、改账号、看密码(账号密码·脱敏)、 批量录入、补录(批量/历史录入)、 紧急定位、筛选浏览、拍照找物品、查重复(查找进阶)、 数量变更、状态变更、合并物品、撤销操作、物品关联(更新进阶)、 管标签、管分类、整理建议(标签分类管理)、 查看照片、管照片、照片墙(照片档案)、 盘点记录、差异处理、搬家盘点(盘点进阶)、 历史(物品历史)、 借用、家人档案(家庭协作)、 查闲置(闲置检测)、盘点统计(盘点统计与建议)、 联动总览、记到卡路里、记到记账(跨技能联动)、 首次使用(初始化工作流)、备份导出(数据资产)、导入恢复(迁移)、 查异常(数据健康检查)。 所有操作通过 Python CLI 执行数据库读写,AI 负责解析自然语言和交互确认;录物品/拍物品流程在写入前生成 HTML 预览供用户确认。
- License 许可
- MIT
- 最近更新
- 2026-09-12
- Stars
- ★ 6
- Forks
- 1
01 前言 Front Matter
- name
- 居家管家
- metadata
- { "openclaw": { "emoji": "🏠", "requires": { "pip": [ "cryptography" ], "python": ">=3.7" } }, "help_wake_word": "居家管家 帮助" }
- description
- 家庭物品全生命周期管理技能。当用户使用以下指令时触发: 查物品、看物品(搜索/查看详情)、 录物品、拍物品(文字录入/拍照录入)、 改物品、移物品、补物品、减物品、标物品、废物品、借物品、修物品(更新类)、 盘物品、盘全部(盘点)、 穿什么(穿搭推荐)、 带物品、归物品(旅游归位)、 统物品、查高频、查低频(频率统计)、 查过期(过期检查)、 看标签、合标签(标签管理)、 查快递(快递查询)、 查购买记录、查上月购买、查今年花费、查退货窗口、登记购买记录(购买记录管理)、 查保修状态、登记保修、记录维修、设置保养周期、执行保养(保修与保养)、 查证件到期、登记证件、证件归档、更新证件(证件管理)、 查账号、存账号、改账号、看密码(账号密码·脱敏)、 批量录入、补录(批量/历史录入)、 紧急定位、筛选浏览、拍照找物品、查重复(查找进阶)、 数量变更、状态变更、合并物品、撤销操作、物品关联(更新进阶)、 管标签、管分类、整理建议(标签分类管理)、 查看照片、管照片、照片墙(照片档案)、 盘点记录、差异处理、搬家盘点(盘点进阶)、 历史(物品历史)、 借用、家人档案(家庭协作)、 查闲置(闲置检测)、盘点统计(盘点统计与建议)、 联动总览、记到卡路里、记到记账(跨技能联动)、 首次使用(初始化工作流)、备份导出(数据资产)、导入恢复(迁移)、 查异常(数据健康检查)。 所有操作通过 Python CLI 执行数据库读写,AI 负责解析自然语言和交互确认;录物品/拍物品流程在写入前生成 HTML 预览供用户确认。
02 资源文件 300
- 参考文档_grilling/grilling-round-1_2026-07-28.html35.9 KB
- 参考文档_meta.json386 B
- 其他.gitignore773 B
- 参考文档.notes/audit-2026-07-27.html24.2 KB
- 参考文档.notes/diffs/patch-P0-1.md4.2 KB
- 参考文档.notes/diffs/patch-P0-2.md487 B
- 参考文档.notes/diffs/patch-P0-3.md2.8 KB
- 参考文档.notes/diffs/patch-P0-4.md2.8 KB
- 参考文档.notes/diffs/patch-P0-6.md845 B
- 参考文档.notes/diffs/patch-P0-7.md256 B
- 参考文档.notes/diffs/patch-P1-10.md1.0 KB
- 参考文档.notes/diffs/patch-P1-3-4-5.md937 B
- 参考文档.notes/diffs/patch-P1-6.md1.1 KB
- 参考文档.notes/diffs/patch-P1-7.md885 B
- 参考文档.notes/diffs/patch-P1-9a.md757 B
- 参考文档.notes/diffs/patch-P1-9c-fix-2.md2.7 KB
- 参考文档.notes/diffs/patch-P1-9c-fix.md1.4 KB
- 参考文档.notes/diffs/patch-P1-9c.md2.0 KB
- 参考文档.notes/HELP_demo_FINAL.html17.3 KB
- 参考文档.notes/HELP_demo.html17.2 KB
- 参考文档.notes/HELP_fixed.html18.0 KB
- 脚本.notes/HELP_playwright_test.py10.6 KB
- 资产文件.notes/HELP_shots/00_full_page.png221.6 KB
- 资产文件.notes/HELP_shots/01_initial.png72.4 KB
- 资产文件.notes/HELP_shots/02_after_toggle.png109.6 KB
- 资产文件.notes/HELP_shots/03_after_toc_jump.png109.6 KB
- 资产文件.notes/HELP_shots/04_after_copy.png221.6 KB
- 资产文件.notes/HELP_shots/05_mobile.png197.1 KB
- 资产文件.notes/HELP_shots/07_prompt_empty.png1.9 KB
- 参考文档.notes/HELP_shots/REPORT.md966 B
- 参考文档.notes/HELP-audit-2.html7.6 KB
- 参考文档.notes/HELP-audit-3.html5.2 KB
- 参考文档.notes/HELP-audit-4.html6.6 KB
- 参考文档.notes/HELP-audit.html7.3 KB
- 参考文档.notes/PLAN-A-final.html6.9 KB
- 参考文档.notes/PLAN-grouping-collapse.html7.0 KB
- 参考文档.notes/PLAN-html-unify.html7.2 KB
- 参考文档.notes/PLAN-label-options.html6.1 KB
- 参考文档.notes/PLAN-RESTRUCTURE.html6.6 KB
- 参考文档.notes/q-N.html9.8 KB
- 参考文档.notes/q-P0-3.html5.5 KB
- 参考文档.notes/q-plan-stop.html4.1 KB
- 参考文档.notes/q-sync-auto.html4.5 KB
- 参考文档.out-of-scope/README.md1.3 KB
- 参考文档.scratch/html-output-naming/issues/01-env-chain-and-12a-naming-tracer.md3.1 KB
- 参考文档.scratch/html-output-naming/issues/02-template-mapping-and-12b-help-naming.md2.7 KB
- 参考文档.scratch/html-output-naming/issues/03-skill-md-output-section-and-cleanup.md2.8 KB
- 参考文档.scratch/html-output-naming/spec.md13.9 KB
- 参考文档.scratch/skill-spec-alignment/issues/01-context-skill-identifier-and-term-reference.md1.1 KB
- 参考文档.scratch/skill-spec-alignment/issues/02-adr-0001-expand-combine-overwrite-deviation.md1.3 KB
- 参考文档.scratch/skill-spec-alignment/issues/03-skill-md-html-first-section.md1.3 KB
- 参考文档.scratch/skill-spec-alignment/issues/04-skill-md-frontmatter-help-wake-word-and-route-first-row.md1.4 KB
- 参考文档.scratch/skill-spec-alignment/issues/05-scenarios-yaml-variants-with-tests-tdd.md2.4 KB
- 参考文档.scratch/skill-spec-alignment/issues/06-skill-md-fat-protocol-and-tested-by-tiers.md1.8 KB
- 参考文档.scratch/skill-spec-alignment/spec.md18.0 KB
- 参考文档AGENTS.md373 B
- 脚本config-home-manager.ts27.6 KB
- 参考文档CONTEXT.md3.8 KB
- 参考文档docs/adr/0001-local-time-over-utc-for-html-filenames.md2.5 KB
- 参考文档docs/adr/0002-copy-button-contract-v2.md3.4 KB
- 参考文档docs/agents/domain.md862 B
- 参考文档docs/agents/issue-tracker.md1.3 KB
- 参考文档docs/agents/triage-labels.md1.1 KB
- 参考文档docs/reviews/103-D1对账-起点盲区澄清.html15.7 KB
- 参考文档docs/reviews/103-D1收编-执行交付.html9.9 KB
- 参考文档docs/reviews/103-D1收编-拍板确认.html5.6 KB
- 参考文档docs/reviews/103-D1收编-收尾完成.html4.0 KB
- 参考文档docs/reviews/103-D1收编-补对抗审查.html8.2 KB
- 参考文档docs/reviews/118-SM4统计总览域验收报告.html11.9 KB
- 参考文档docs/reviews/121-SM5快递购物域验收报告.html7.4 KB
- 参考文档docs/reviews/122-SM2空间与位置域验收报告.html4.8 KB
- 参考文档docs/reviews/123-场景234prompt格式248对齐.html7.6 KB
- 参考文档docs/reviews/123-场景234现状汇报.html7.4 KB
- 参考文档docs/reviews/123-复制prompt参数化意图分析.html8.6 KB
- 参考文档docs/reviews/123-审查报告.html9.3 KB
- 参考文档docs/reviews/123-新手首次使用全流程.html9.7 KB
- 参考文档docs/reviews/123-首次使用流程对抗式审查.html12.2 KB
- 参考文档docs/reviews/123-首次使用环境变量设计分析.html7.9 KB
- 参考文档docs/reviews/126-SM1物品管理域验收报告.html7.1 KB
- 参考文档docs/reviews/243-HELP箭头-修复交付.html7.1 KB
- 参考文档docs/reviews/243-HELP箭头-执行偏离拍板.html6.6 KB
- 参考文档docs/reviews/243-HELP箭头-收尾完成.html3.0 KB
- 参考文档docs/reviews/243-HELP箭头-起点盲区澄清.html9.2 KB
- 参考文档docs/reviews/244-HELP点击高亮-implement结论.html6.0 KB
- 参考文档docs/reviews/250-18场景拆分方案.html8.6 KB
- 参考文档docs/reviews/250-18场景演示/01-查购买记录.html28.3 KB
- 参考文档docs/reviews/250-18场景演示/02-查上月购买.html27.2 KB
- 参考文档docs/reviews/250-18场景演示/03-查今年花费.html28.2 KB
- 参考文档docs/reviews/250-18场景演示/04-查退货窗口.html27.2 KB
- 参考文档docs/reviews/250-18场景演示/05-登记购买记录.html28.6 KB
- 参考文档docs/reviews/250-18场景演示/06-查保修状态.html21.7 KB
- 参考文档docs/reviews/250-18场景演示/07-登记保修.html21.7 KB
- 参考文档docs/reviews/250-18场景演示/08-记录维修.html21.7 KB
- 参考文档docs/reviews/250-18场景演示/09-设置保养周期.html22.2 KB
- 参考文档docs/reviews/250-18场景演示/10-执行保养.html22.2 KB
- 参考文档docs/reviews/250-18场景演示/11-查证件到期.html20.2 KB
- 参考文档docs/reviews/250-18场景演示/12-登记证件.html20.2 KB
- 参考文档docs/reviews/250-18场景演示/13-证件归档.html20.7 KB
- 参考文档docs/reviews/250-18场景演示/14-更新证件.html20.7 KB
- 参考文档docs/reviews/250-18场景演示/15-查账号.html18.7 KB
- 参考文档docs/reviews/250-18场景演示/16-存账号.html18.7 KB
- 参考文档docs/reviews/250-18场景演示/17-改账号.html18.7 KB
- 参考文档docs/reviews/250-253-交付完成.html6.8 KB
- 参考文档docs/reviews/250-253-收尾完成.html3.6 KB
- 参考文档docs/reviews/250-253-起点盲区澄清.html9.7 KB
- 参考文档docs/reviews/250-票据凭证域现状盘点.html8.3 KB
- 参考文档docs/reviews/handoff-居家管家-SM2-20260810.md3.6 KB
- 参考文档docs/reviews/handoff-居家管家-SM4-20260810.md3.7 KB
- 参考文档docs/reviews/handoff-居家管家-SM5-20260810.md2.9 KB
- 参考文档docs/reviews/triage-243-253-完成.html3.9 KB
- 参考文档docs/reviews/triage-243-253-推荐.html7.4 KB
- 参考文档docs/reviews/交付完整性审计-20260811.html7.4 KB
- 参考文档features/add.md16.0 KB
- 参考文档features/fashion.md1.0 KB
- 参考文档features/inventory.md908 B
- 参考文档features/search.md2.5 KB
- 参考文档features/stats.md3.7 KB
- 参考文档features/tags.md593 B
- 参考文档features/travel.md751 B
- 参考文档features/update.md5.9 KB
- 参考文档features/位置.md3.0 KB
- 参考文档features/穿搭.md2.9 KB
- 参考文档features/联动.md4.3 KB
- 其他pytest.ini76 B
- 参考文档references/categories.md13.3 KB
- 参考文档references/commands.md9.4 KB
- 参考文档references/database.md2.2 KB
- 参考文档references/scenarios.yaml43.9 KB
- 参考文档references/seed_categories.yaml4.5 KB
- 参考文档references/statuses.md1.6 KB
- 参考文档scenes/SM1.yaml7.4 KB
- 参考文档scenes/SM2.yaml2.3 KB
- 参考文档scenes/SM3.yaml2.3 KB
- 参考文档scenes/SM5.yaml3.1 KB
- 参考文档scenes/SM6.yaml10.8 KB
- 参考文档scenes/SM8.yaml3.1 KB
- 脚本scripts/_add_sam_items.py2.4 KB
- 脚本scripts/_check_1026_1027.py1.1 KB
- 脚本scripts/_check_kitchen_freezer.py926 B
- 脚本scripts/_final_self_audit.py2.6 KB
- 脚本scripts/_finalize_water_jia.py5.3 KB
- 脚本scripts/_fix_remarks_v2.py10.6 KB
- 脚本scripts/_process_water_jia_and_fix_remarks.py4.7 KB
- 脚本scripts/_update_egg_to_fridge.py830 B
- 脚本scripts/_update_jimmy_dean_back.py1.3 KB
- 脚本scripts/_update_jimmy_dean.py717 B
- 脚本scripts/accounts.py10.9 KB
- 脚本scripts/build_manual.py1.5 KB
- 脚本scripts/category_manager.py15.2 KB
- 脚本scripts/cleanup_test_items.py1.9 KB
- 脚本scripts/help_center.py4.7 KB
- 脚本scripts/home_manager.py337 B
- 脚本scripts/home_manager/__init__.py315 B
- 脚本scripts/home_manager/db.py16.8 KB
- 脚本scripts/home_manager/home_manager.py38.4 KB
- 脚本scripts/home_manager/inventory_ops.py27.9 KB
- 脚本scripts/home_manager/item_ops.py37.4 KB
- 脚本scripts/home_manager/location_ops.py9.4 KB
- 脚本scripts/home_manager/models.py1.0 KB
- 脚本scripts/home_manager/outfit_ops.py22.9 KB
- 脚本scripts/home_manager/tag_ops.py2.7 KB
- 脚本scripts/home_manager/validators.py2.2 KB
- 脚本scripts/install_hooks.sh1.4 KB
- 脚本scripts/refactor_prompts.py4.5 KB
- 脚本scripts/render_位置.py4.3 KB
- 脚本scripts/render_开始使用.py7.5 KB
- 脚本scripts/render_快递购物.py4.0 KB
- 脚本scripts/render_物品.py4.2 KB
- 脚本scripts/render_票据凭证.py1.4 KB
- 脚本scripts/render_穿搭.py4.0 KB
- 脚本scripts/render_联动.py4.1 KB
- 脚本scripts/render/__init__.py9.4 KB
- 脚本scripts/render/_shared.py14.6 KB
- 脚本scripts/routing.py3.4 KB
- 脚本scripts/stats/__init__.py4.4 KB
- 脚本scripts/stats/expiring.py4.8 KB
- 脚本scripts/stats/idle.py6.6 KB
- 脚本scripts/stats/inventory_stat.py6.0 KB
- 脚本scripts/stats/overview.py8.7 KB
- 脚本scripts/位置/__init__.py747 B
- 脚本scripts/位置/cli.py14.7 KB
- 脚本scripts/位置/ops.py28.6 KB
- 脚本scripts/位置/scenes.py1.4 KB
- 脚本scripts/位置/schema.py3.1 KB
- 脚本scripts/位置/seed.py2.0 KB
- 脚本scripts/位置/tree.py7.0 KB
- 脚本scripts/场景合并.py3.2 KB
- 脚本scripts/家庭协作/__init__.py71 B
- 脚本scripts/家庭协作/family_ops.py15.5 KB
- 脚本scripts/开始使用/__init__.py403 B
- 脚本scripts/开始使用/cli.py4.8 KB
- 脚本scripts/开始使用/ops.py30.6 KB
- 脚本scripts/快递购物/__init__.py270 B
- 脚本scripts/快递购物/cli.py12.8 KB
- 脚本scripts/快递购物/ops.py18.8 KB
- 脚本scripts/快递购物/schema.py3.1 KB
- 脚本scripts/物品/__init__.py453 B
- 脚本scripts/物品/cli.py36.5 KB
- 脚本scripts/物品/events.py19.8 KB
- 脚本scripts/物品/ops.py67.1 KB
- 脚本scripts/物品/validators.py5.0 KB
- 脚本scripts/票据凭证/__init__.py217 B
- 脚本scripts/票据凭证/account_ops.py3.4 KB
- 脚本scripts/票据凭证/cli.py21.9 KB
- 脚本scripts/票据凭证/db.py4.8 KB
- 脚本scripts/票据凭证/ops.py11.8 KB
- 脚本scripts/票据凭证/payloads.py9.8 KB
- 脚本scripts/穿搭/cli.py6.0 KB
- 脚本scripts/联动/__init__.py460 B
- 脚本scripts/联动/cli.py4.7 KB
- 脚本scripts/联动/ops.py14.0 KB
- 参考文档templates/add_preview.html7.6 KB
- 参考文档templates/delivery_check.html8.0 KB
- 参考文档templates/expiring_alert.html8.3 KB
- 参考文档templates/family_borrow.html10.9 KB
- 参考文档templates/family_members.html9.3 KB
- 参考文档templates/help_center.html25.0 KB
- 参考文档templates/inventory_check.html8.6 KB
- 参考文档templates/item_detail.html5.2 KB
- 参考文档templates/list_overview.html6.3 KB
- 参考文档templates/outfit_picker.html8.0 KB
- 参考文档templates/search_results.html4.5 KB
- 参考文档templates/stats/expiring.html13.3 KB
- 参考文档templates/stats/idle.html13.0 KB
- 参考文档templates/stats/inventory_stat.html10.0 KB
- 参考文档templates/stats/overview.html14.5 KB
- 参考文档templates/travel_trip.html9.0 KB
- 参考文档templates/位置/confirm.html11.0 KB
- 参考文档templates/位置/error.html8.8 KB
- 参考文档templates/位置/fixed_spot.html13.5 KB
- 参考文档templates/位置/location_manage.html16.7 KB
- 参考文档templates/位置/receipt.html9.6 KB
- 参考文档templates/位置/space_view.html14.7 KB
- 参考文档templates/位置/suggest_storage.html13.7 KB
- 参考文档templates/开始使用/backup_receipt.html12.5 KB
- 参考文档templates/开始使用/error_receipt.html7.8 KB
- 参考文档templates/开始使用/first_use_wizard.html16.5 KB
- 参考文档templates/开始使用/health_report.html11.1 KB
- 参考文档templates/开始使用/import_restore.html13.2 KB
- 参考文档templates/快递购物/error.html3.7 KB
- 参考文档templates/快递购物/express.html7.0 KB
- 参考文档templates/快递购物/list.html7.6 KB
- 参考文档templates/快递购物/missing.html7.1 KB
- 参考文档templates/快递购物/stock.html7.6 KB
- 参考文档templates/物品/add_form.html12.5 KB
- 参考文档templates/物品/browse.html5.6 KB
- 参考文档templates/物品/category_manage.html8.7 KB
- 参考文档templates/物品/confirm.html4.7 KB
- 参考文档templates/物品/detail.html8.1 KB
- 参考文档templates/物品/duplicates.html5.7 KB
- 参考文档templates/物品/error.html4.1 KB
- 参考文档templates/物品/history.html5.7 KB
- 参考文档templates/物品/inventory_diff.html8.1 KB
- 参考文档templates/物品/inventory_records.html5.1 KB
- 参考文档templates/物品/inventory_round.html9.7 KB
- 参考文档templates/物品/locate.html4.9 KB
- 参考文档templates/物品/move_checklist.html8.6 KB
- 参考文档templates/物品/photo_wall.html5.5 KB
- 参考文档templates/物品/photos.html6.3 KB
- 参考文档templates/物品/receipt.html7.2 KB
- 参考文档templates/物品/relations.html4.1 KB
- 参考文档templates/物品/search_list.html7.2 KB
- 参考文档templates/物品/tag_manage.html5.6 KB
- 参考文档templates/物品/undo_select.html4.4 KB
- 参考文档templates/票据凭证/accounts.html8.7 KB
- 参考文档templates/票据凭证/certificates.html9.9 KB
- 参考文档templates/票据凭证/purchase_records.html12.1 KB
- 参考文档templates/票据凭证/warranty.html11.3 KB
- 参考文档templates/穿搭/error.html3.9 KB
- 参考文档templates/穿搭/outfit_picker.html18.6 KB
- 参考文档templates/穿搭/travel_trip.html8.2 KB
- 参考文档templates/穿搭/trip_outfit_plan.html8.5 KB
- 参考文档templates/穿搭/wardrobe_analyze.html8.1 KB
- 参考文档templates/穿搭/wardrobe_season.html7.3 KB
- 参考文档templates/联动/error.html3.6 KB
- 参考文档templates/联动/link_food.html6.8 KB
- 参考文档templates/联动/link_overview.html6.2 KB
- 参考文档templates/联动/link_price.html7.0 KB
- 脚本tests/conftest.py2.9 KB
- 脚本tests/test_cli_entry.py2.9 KB
- 脚本tests/test_cli_write.py3.4 KB
- 脚本tests/test_db_schema.py12.9 KB
- 脚本tests/test_help_center.py15.3 KB
- 脚本tests/test_manual_sync.py2.4 KB
- 脚本tests/test_outfit.py13.1 KB
- 脚本tests/test_payloads.py3.1 KB
- 脚本tests/test_render.py14.4 KB
- 脚本tests/test_routing.py3.8 KB
- 脚本tests/test_sm2.py20.6 KB
- 脚本tests/test_sm4.py15.3 KB
- 脚本tests/test_sm7.py13.7 KB
- 脚本tests/test_validators.py2.5 KB
- 脚本tests/test_variants.py5.1 KB
- 脚本tests/test_开始使用.py24.6 KB
- 脚本tests/test_快递购物.py16.7 KB
- 脚本tests/test_物品.py25.0 KB
- 脚本tests/test_票据凭证.py15.2 KB
- 脚本tests/test_联动.py10.3 KB
- 脚本tmp_read_acct.py381 B
- 参考文档居家管家.html82.1 KB
03 SKILL.md 正文
📘 关于 居家管家.html(总纲 04 §原则 4 · 镜像)
本 HTML 文件就是 python3 scripts/home_manager.py help 输出的精确副本。
- 修改唤醒词/场景 → 改
references/scenarios.yaml→ 跑python3 scripts/build_manual.py同步。 - 不要手动编辑
居家管家.html(脚本会覆盖)。 - 测试
tests/test_manual_sync.py用 SHA256 哈希断言字节一致,若有人忘了同步,测试失败报警(不阻断 commit,只报警)。 - 同步脚本自动注入
HELP_FIXED_TIMESTAMP="0000-00-00 00:00 (快照)",确保可重现生成(不被datetime.now()干扰)。
总纲 04 §原则 4(本 skill 改造版,2026-07-27): 每个技能目录都需要有
{技能名}.html文件,该文件就是技能 HELP HTML 最新版本的复制品。
🔗 联动提示: 完成本技能主操作后,检查技能路由器(图片路由/SKILL.md)的联动规则,判断是否需要联动其他技能(如用户提到物品价格→询问是否记录支出;物品是食品/饮料→询问是否记录卡路里)。详见路由器的联动规则表。
⚠️ HTML 同步规范(最高优先级)
此规范优先级高于本文件中所有其他规定。
- 全量同步:该技能的所有优化和变动、脚本的所有变动都必须体现在
居家管家.html上。任何功能模块的新增、修改、删除,任何唤醒词的调整,任何 CLI 命令的变化,任何脚本逻辑的改动——都必须同步更新 HTML 页面中对应的内容。 - 最高优先级:本条规定在所有规范中优先级最高。当其他流程或习惯与本条冲突时,以本条为准。
- 逐行确认:对该技能的所有文件、脚本的任何一行修改,都需要明确得到用户的 1 次确认后方可执行。不得批量静默修改,不得跳过确认步骤。
⚠️ Commit 硬规则(强制)
优先级与"HTML 同步规范"平级,所有写代码的 AI / 协作者必须遵守。
- 禁止
git commit --no-verify—— 会跳过 pre-commit hook 测试 - 禁止 使用 git 库(
gitpython/simple-git/libgit2等)直接 API 调用 —— 绕过 shell,hook 不触发 - 必须 通过 pre-commit hook 的 71 个 pytest 测试才能 commit
- 新机器首次使用本 skill 前,必须执行
bash scripts/install_hooks.sh配置本地 hook
hook 工作机制(SKILLS/ 是单 git 仓库,多 skill 子目录):
- git 仓库根:
SKILLS/.githooks/pre-commit - 改动路径含
居家管家/*→ 自动跑居家管家/tests/下的 71 个 pytest - 改动路径含
卡路里/*→ 跑卡路里/tests/ - 其他改动(文档/HTML 手册/架构规范)→ 跳过测试
为什么需要这层约束:本地 .githooks/pre-commit 跑 pytest 是 CI 的本地替代方案。详见 git-hooks-security-analysis.html(已归档于 opencode output 目录)。
⚠️ 操作规范(强制)
本技能所有数据操作必须通过 CLI,禁止直连数据库。
⚠️ 分类命名规范(强制)
所有写入 categories 表的 name 字段必须满足以下规则。违规会被 category_manager.py 拒收,不入库。
规则
| # | 规则 | 违规示例 | 原因 |
|---|---|---|---|
| 1 | 非空,strip 后 1-30 字 | "" / " " |
占位/空白无意义 |
| 2 | 禁数字前缀 | 3. 家居 / 2 衣物 / [1]数码 / (2)图书 |
DB id 137/138/205-210 已是天然编号,name 再加 = 双重编号 = 装饰 |
| 3 | 禁 emoji | 🎉 食物 |
装饰,破坏纯文本 |
| 4 | 同 parent 下 name 唯一 | 两个同名二级 | 防止 merge 漏掉产生歧义 |
第一性
- 数字编号是 DB id 的事,name 负责语义
- 8 顶级 name 统一不带前缀:
食物与饮品/衣物与穿戴/家居与陈设/工具与器材/数码与电子/健康与医药/文体与娱乐/资产与凭证 - 跨次加节点时,先看现有 name 风格,跟齐
实现位置
scripts/category_manager.py 的 _validate_name(name, parent_name, conn) 函数,被 cmd_import / 未来 cmd_add 调用。
路由表
AI 收到用户输入后,按以下表匹配唤醒词,命中即加载对应功能。
| # | 唤醒词 | 功能 | 加载文件 | 需要物品名? |
|---|---|---|---|---|
| 1 | 居家管家 帮助 | 技能速查(HELP) | python3 scripts/home_manager.py help(生成 HELP HTML) |
否 |
| 2 | 查物品 | 物品搜索 | features/search.md | 可选(无则列全部) |
| 3 | 看物品 | 物品详情 | features/search.md → detail | 是(多件时让用户选) |
| 4 | 录物品 | 文字录入 | features/add.md | 否(AI 解析描述) |
| 5 | 拍物品 | 拍照录入 | features/add.md → 图片子流程 | 否(从图片提取) |
| 6 | 改物品 | 通用更新 | features/update.md | 是 |
| 7 | 移物品 | 位置移动 | features/update.md → 位置移动 | 是 |
| 8 | 补物品 | 数量增加 | features/update.md → 数量变更 | 是 |
| 9 | 减物品 | 数量减少 | features/update.md → 数量变更 | 是 |
| 10 | 标物品 | 标签更新 | features/update.md → 标签更新 | 是 |
| 11 | 废物品 | 标记废弃 | features/update.md → 状态变更 | 是 |
| 12 | 借物品 | 标记借出 | features/update.md → 状态变更 | 是 |
| 13 | 修物品 | 标记维修 | features/update.md → 状态变更 | 是 |
| 14 | 盘物品 | 按位置盘点 | features/inventory.md | 是(位置) |
| 15 | 盘全部 | 全屋盘点 | features/inventory.md | 否 |
| 16 | 穿什么 | 穿搭推荐 | python3 scripts/home_manager.py sm3-outfit [--temperature N] [--occasion X] [--limit N] → 穿搭/outfit_picker.html(拼贴卡相册风) |
否 |
| 17 | 带物品 | 出门标记 | python3 scripts/home_manager.py sm3-trip [--trip-type X] [--days N] [--plan-type X] [--exercises X] → 穿搭/travel_trip.html(行程规则/健身联动/出发核对) |
否 |
| 18 | 归物品 | 回家归位 | python3 scripts/home_manager.py sm3-trip --mode return → 穿搭/travel_trip.html(旅游中清单逐个确认归位) |
否(查所有旅游中) |
| 19 | 统物品 | 总体统计 | features/stats.md → summary | 否 |
| 20 | 查高频 | 高频物品(并入物品总览) | features/stats.md → summary(T5 裁决:并入总览高频 TOP 区块) | 否 |
| 21 | 查低频 | 低频物品(并入闲置检测) | features/stats.md → idle(T5 裁决:语义由查闲置承接) | 否 |
| 22 | 查过期 | 过期检查 | features/stats.md → expiring | 否 |
| 23 | 看标签 | 列出标签 | features/tags.md → 列表 | 否 |
| 24 | 合标签 | 合并标签 | features/tags.md → 合并 | 是(from/to) |
| 25 | 查快递 | 快递跟踪(查/超时/收货确认) | python3 scripts/快递购物/cli.py express [--timeout-days 7] → 快递购物/express.html |
否 |
| 26 | 推位置 | 位置推荐 | features/add.md → Step 2.5 | 是(category-id 整数) |
| 27 | 找位置 | 参考锚定 | features/add.md → Step 2.6 | 是(reference) |
| 28 | 查账号 | 查看账号(密码脱敏·类型组织) | python3 scripts/票据凭证/cli.py account list / show --platform "XX" --master-key "XX" → 票据凭证/accounts.html |
是(平台名,无则列全部) |
| 29 | 存账号 | 新增账号(密码加密存储) | python3 scripts/票据凭证/cli.py account add --platform "XX" --user "XX" --pass "XX" --master-key "XX" [--type 购物|银行|社交|其他] |
是 |
| 30 | 改账号 | 更新账号(重新录入语义) | python3 scripts/票据凭证/cli.py account update --platform "XX" --master-key "XX" [--user] [--pass] [--type] |
是(平台名) |
| 31 | 看密码 | 查看密码(敏感回显·仅对话) | python3 scripts/票据凭证/cli.py account show --platform "XX" --master-key "XX" → 回执 JSON(仅对话回显,不进 HTML) |
是(平台名+主密钥) |
| 32 | 查异常 | 数据健康检查 | python3 scripts/开始使用/cli.py lint → 开始使用/health_report.html |
否 |
| 33 | 查物品(HTML) | 物品搜索(默认输出 HTML) | features/search.md → Step 4 | 可选(无则列全部) |
| 34 | 看物品(HTML) | 物品详情(默认输出 HTML) | features/search.md → Step 4 | 是(多件时先选) |
| 35 | 统物品(HTML) | 总体统计(默认输出 HTML) | features/search.md → Step 4 | 否 |
| 36 | 借用 | 借用管理(借出/借入/归还/催还) | python3 scripts/home_manager.py family --action borrow-list → family_borrow.html |
否(登记时选/填) |
| 37 | 家人档案 | 家人档案(成员/物品归属标记) | python3 scripts/home_manager.py family --action member-list → family_members.html |
否 |
| 38 | 管位置 | 位置管理(查看/新建/改名/合并) | features/位置.md → 管位置 | 否(操作+详情) |
| 39 | 固定位 | 设置固定位(常用件锚定) | features/位置.md → 固定位 | 是(物品) |
| 40 | 收纳建议 | 收纳位置建议(AI 推荐) | features/位置.md → 收纳建议 | 否(可多件/批量) |
| 41 | 空间视图 | 空间视图浏览(位置树下钻) | features/位置.md → 空间视图 | 否(位置可选) |
| 42 | 查闲置 | 闲置物品检测 | `python3 scripts/home_manager.py stats --type idle [--days 90 | 180 |
| 43 | 盘点统计 | 盘点统计与建议 | python3 scripts/home_manager.py stats --type inventory-stat --output → stats/inventory_stat.html |
否 |
| 44 | 首次使用 | 首次使用初始化(6 步向导,幂等可重试) | python3 scripts/开始使用/cli.py check / init / init-status → 开始使用/first_use_wizard.html |
是(路径确认,默认即确认) |
| 45 | 备份导出 | 备份与导出(数据资产) | python3 scripts/开始使用/cli.py backup / backup-list / export --format json|csv → 开始使用/backup_receipt.html |
是(操作/格式) |
| 46 | 导入恢复 | 导入与恢复(迁移,预告式文件) | python3 scripts/开始使用/cli.py import-preview --file X / import --file X [--mode skip|overwrite] → 开始使用/import_restore.html |
是(文件预告式) |
| 47 | 批量录入 | 批量录入多件物品(清单/照片) | python3 scripts/home_manager.py sm1-add-batch --json-file X [--commit] → 物品/add_form.html |
否 |
| 48 | 补录 | 补录历史物品(指定日期) | python3 scripts/home_manager.py sm1-add --backfill-date YYYY-MM-DD → 物品/add_form.html |
否(AI 解析描述) |
| 49 | 紧急定位 | 紧急查找物品位置(一屏直达) | python3 scripts/home_manager.py sm1-locate --name X → 物品/locate.html |
是(名称/描述) |
| 50 | 筛选浏览 | 按条件筛选浏览物品(分组/排序) | python3 scripts/home_manager.py sm1-browse [--group-by] [--location] [--tag] → 物品/browse.html |
否 |
| 51 | 拍照找物品 | 拍照反向查找物品(图搜) | python3 scripts/home_manager.py sm1-search --name X(AI 图搜 → 关键词)→ 物品/search_list.html |
否(照片) |
| 52 | 查重复 | 检查重复物品 | python3 scripts/home_manager.py sm1-duplicates → 物品/duplicates.html |
否 |
| 53 | 合并物品 | 合并重复物品(保留主条/数量相加) | python3 scripts/home_manager.py sm1-merge --target N --sources 1,2 → 物品/receipt.html |
是(target/源) |
| 54 | 撤销操作 | 撤销最近操作(一次性回滚) | python3 scripts/home_manager.py sm1-undo-list / sm1-undo --event-id N → 物品/undo_select.html |
否 |
| 55 | 物品关联 | 设置/解除物品关联(配件等) | python3 scripts/home_manager.py sm1-relate --id N --related M [--action unlink] → 物品/relations.html |
是 |
| 56 | 管标签 | 标签管理(总览/改名/合并/清理) | python3 scripts/home_manager.py sm1-tag-overview / tag-merge → 物品/tag_manage.html |
否 |
| 57 | 管分类 | 分类管理(树/新建/改名/合并) | python3 scripts/home_manager.py sm1-category [--action add|rename|merge] → 物品/category_manage.html |
否 |
| 58 | 整理建议 | 标签分类整理建议(AI 检测相近) | python3 scripts/home_manager.py sm1-similar-tags → 物品/tag_manage.html |
否 |
| 59 | 查看照片 | 查看物品照片(含类型筛选) | python3 scripts/home_manager.py sm1-photos --id N → 物品/photos.html |
是 |
| 60 | 管照片 | 管理物品照片(排序/主图/类型) | python3 scripts/home_manager.py sm1-photo-update --id N --json-file X → 物品/photos.html |
是 |
| 61 | 照片墙 | 照片墙浏览(分类/位置/类型) | python3 scripts/home_manager.py sm1-photo-wall [--group-by] [--type] → 物品/photo_wall.html |
否 |
| 62 | 盘点记录 | 查看盘点记录(含复查入口) | python3 scripts/home_manager.py sm1-inventory-records → 物品/inventory_records.html |
否 |
| 63 | 差异处理 | 处理盘点差异(缺/多/异/待确认) | python3 scripts/home_manager.py sm1-inventory-diff [--record-id N] / sm1-inventory-resolve → 物品/inventory_diff.html |
否(记录级) |
| 64 | 搬家盘点 | 搬家打包盘点(带走/不带走) | python3 scripts/home_manager.py sm1-move-checklist / sm1-move-commit → 物品/move_checklist.html |
否 |
| 65 | 历史 | 查看物品历史(时间线/轨迹) | python3 scripts/home_manager.py sm1-history --id N → 物品/history.html |
是 |
| 66 | 数量变更 | 变更物品数量(补充/消耗/用完) | python3 scripts/home_manager.py sm1-qty --id N [--plus|--minus|--set] → 物品/receipt.html |
是 |
| 67 | 状态变更 | 变更物品状态(废弃/借出/维修/恢复,状态机守卫) | python3 scripts/home_manager.py sm1-status --id N --status X → 物品/receipt.html |
是 |
| 68 | 盘点 | 盘点核对(按位置/分类/全屋,产生差异集) | python3 scripts/home_manager.py sm1-inventory-round [--scope location|category|all] → 物品/inventory_round.html |
否(可指定范围) |
| 69 | 购物清单 | 购物清单(组织/例行/采购闭环) | python3 scripts/快递购物/cli.py list → 快递购物/list.html |
否(可带条目) |
| 70 | 缺货检测 | 缺货检测(自动进清单) | python3 scripts/快递购物/cli.py missing [--category-id N] → 快递购物/missing.html |
否(可选范围) |
| 71 | 囤货盘点 | 囤货盘点(库存/阈值/不足检测) | python3 scripts/快递购物/cli.py stock → 快递购物/stock.html |
否 |
| 72 | 联动总览 | 跨技能联动能力索引 + 偏好设置 | python3 scripts/联动/cli.py sm9-overview → 联动/link_overview.html(或 home_manager.py sm9-overview,T2 注册后) |
否 |
| 73 | 记到卡路里 | 食品联动(记到今日饮食/查热量) | features/联动.md → 食品联动 | 是(先查物品确认) |
| 74 | 记到记账 | 价格联动(记支出/记收入) | features/联动.md → 价格联动 | 是(先查物品确认) |
| 75 | 查购买记录 | 查购买记录(全量/按物品/按时间) | python3 scripts/票据凭证/cli.py purchase list [--item-id N] [--year YYYY] [--month MM] [--scene SM6-1] → 票据凭证/purchase_records.html |
否(物品/时间可选) |
| 76 | 查上月购买 | 查上月购买(时间预填·零填写) | python3 scripts/票据凭证/cli.py purchase list --year YYYY --month MM --scene SM6-2 → 票据凭证/purchase_records.html |
否 |
| 77 | 查今年花费 | 查今年花费(年度消费统计) | python3 scripts/票据凭证/cli.py purchase stats --year YYYY --scene SM6-3 → 票据凭证/purchase_records.html |
否 |
| 78 | 查退货窗口 | 查退货窗口(物品必填·退货截止日) | python3 scripts/票据凭证/cli.py purchase list --item-id N --scene SM6-4 → 票据凭证/purchase_records.html |
是(物品) |
| 79 | 登记购买记录 | 登记购买记录(录入) | python3 scripts/票据凭证/cli.py purchase add --item-id N --date D [--price] [--channel] [--scene SM6-5] → 回执 JSON |
是(物品+日期) |
| 80 | 查保修状态 | 查保修状态(在保/将到期/已过) | python3 scripts/票据凭证/cli.py warranty list [--status 在保|即将到期|已过|全部] [--scene SM6-6] → 票据凭证/warranty.html |
否 |
| 81 | 登记保修 | 登记保修(录入保修期) | python3 scripts/票据凭证/cli.py warranty register --item-id N --kind 保修 --start-date D --duration-days N [--scene SM6-7] → 回执 JSON |
是(物品+起始日+时长) |
| 82 | 记录维修 | 记录维修(维修历史) | python3 scripts/票据凭证/cli.py warranty repair --warranty-id N --date D [--cost] [--scene SM6-8] → 回执 JSON |
是(保修ID+日期) |
| 83 | 设置保养周期 | 设置保养周期(定期保养) | python3 scripts/票据凭证/cli.py warranty register --item-id N --kind 保养 --start-date D --duration-days N [--scene SM6-9] → 回执 JSON |
是(物品+周期) |
| 84 | 执行保养 | 执行保养(刷新下次日) | python3 scripts/票据凭证/cli.py warranty maintain --warranty-id N --date D [--scene SM6-10] → 回执 JSON |
是(保养ID+日期) |
| 85 | 查证件到期 | 查证件到期(按到期排序·脱敏) | python3 scripts/票据凭证/cli.py cert list [--scene SM6-11] → 票据凭证/certificates.html |
否 |
| 86 | 登记证件 | 登记证件(录入) | python3 scripts/票据凭证/cli.py cert add --type 护照|身份证|驾照|签证|保险单|其他 --expires-at D [--scene SM6-12] → 回执 JSON |
是(类型+到期日) |
| 87 | 证件归档 | 证件归档(照片) | python3 scripts/票据凭证/cli.py cert add --photo P [--scene SM6-13] → 回执 JSON |
否(照片必附) |
| 88 | 更新证件 | 更新证件(改到期/持有人/号码) | python3 scripts/票据凭证/cli.py cert add --scene SM6-14(重登记语义·只改填写字段) → 回执 JSON |
是(证件ID) |
| 89 | 查账号 | 查账号(密码脱敏) | python3 scripts/票据凭证/cli.py account list [--scene SM6-15] → 票据凭证/accounts.html(密码 ******;复制数据默认不含密码) |
否 |
| 90 | 存账号 | 存账号(加密存储) | python3 scripts/票据凭证/cli.py account add --platform P --user U --pass X --master-key M [--scene SM6-16] → 回执 JSON |
是(平台+用户名+密码+主密钥) |
| 91 | 改账号 | 改账号(更新录入) | python3 scripts/票据凭证/cli.py account update --platform P --master-key M [--scene SM6-17] → 回执 JSON |
是(平台+主密钥) |
| 92 | 看密码 | 看密码(敏感回显) | python3 scripts/票据凭证/cli.py account show --platform P --master-key M [--scene SM6-18] → 回执 JSON(仅对话回显) |
是(平台+主密钥) |
| 93 | 衣橱分析 | 衣橱闲置分析(结构诊断/断舍离) | python3 scripts/home_manager.py sm3-wardrobe → 穿搭/wardrobe_analyze.html |
否 |
| 94 | 换季 | 换季收纳(季节衣物批量收纳/拿出) | python3 scripts/home_manager.py sm3-season [--season 夏季|冬季|春秋] [--action 收纳|拿出] → 穿搭/wardrobe_season.html |
否 |
| 95 | 旅行穿搭 | 旅行穿搭计划(天数+天气·每日组合) | python3 scripts/home_manager.py sm3-trip-plan [--days N] [--destination X] [--temps N,N] → 穿搭/trip_outfit_plan.html |
否 |
匹配规则
-
精确匹配:用户输入包含表中唤醒词即命中
-
最长匹配:同时命中多个时,取最长的(如"查高频"优先于"查")
-
物品名提取:唤醒词前后的文字作为物品名/参数
-
缺失物品名:需要物品名但用户未提供时,追问
-
变体匹配(v0.1 · 语料储备,行为待激活):用户输入若包含
references/scenarios.yaml中某 scenario 的variants[].phrase,视为命中该 scenario 的wake_word,走对应 CLI 命令- 当前状态(2026-07-28):变体语料已入库(TOP 5 核心词 × 每词 6 变体),但匹配行为尚未在 AI 路由层生效——AI 读取本规则后应自觉执行变体匹配,但无代码强制。
tests/test_variants.py只锁数据结构(direction/phrase/非空/无禁用字符),不锁匹配行为。 - 激活路径:未来若加代码层硬执行(改 home_manager.py 路由层读 variants 字段做匹配),本规则从"语料储备"升级为"硬规则"。
- 示例:用户说"帮我找找" → 匹配
查物品scenario 的variants[direction=口语].phrase="帮我找找"→ 视为命中查物品→ 走search --name "XX"等 - 变体方向(总纲 §钩子 3 · 3 方向):
同义— 正式唤醒词的等价表达(如"搜索物品" → 查物品)口语— 自然口语化(如"帮我找找" → 查物品)模糊— 意图模糊但可推断(如"那个啥在哪" → 查物品)
- 歧义处理:若变体同时匹配多个唤醒词(如"看看"可能匹配
看物品或查物品),AI 必须询问用户确认,不得私自选择(沿用规则 4)
FAT 暴露的边界 case 处理(v0.1 · 2026-07-28 fresh agent 跑后补):
-
容错规则(规则 5a):变体匹配默认精确子串包含(
prompt.includes(phrase))。不支持近似/同义词替换——如"那件东西的信息"不能自动匹配变体"那个东西的信息"(一字之差)。若用户输入与变体仅一字之差但语义同,AI 可主动建议该变体("您是想看物品详情吗?"),但不算命中,需用户确认。这避免误匹配,代价是 fresh agent 对一字之差无法自洽——这是有意的,防止"差不多就路由"导致误操作。 -
混合输入处理(规则 5b):当 prompt = 变体短语 + 解释性从句时(如"那个啥在哪,就是我上次买的蓝牙耳机"),AI 应:
- 先用变体短语("那个啥在哪")判定命中
查物品 - 再从解释性从句("就是我上次买的蓝牙耳机")提取有效参数("蓝牙耳机" 作为物品名)
- 若从句无法提取明确参数,走规则 4(缺失物品名 → 追问)
- 先用变体短语("那个啥在哪")判定命中
-
未命中变体但语义近似(规则 5c):若 prompt 未匹配任何变体短语,但语义上明显属于某唤醒词的范畴(如"统计一下"未在变体清单但语义近
统物品的"统计物品"),AI 不得自动路由(防止误匹配),应追问用户:"您是想看家里物品总览(统物品)吗?"——这比规则 4 的"缺失物品名追问"更具体,是变体未覆盖时的兜底。未来扩充变体语料时,这类近义项应正式登记为新变体。 -
变体覆盖不足的 fail mode:若同一核心词的近义项反复出现(如"统计一下""整体看下""总览一下"都未在
统物品变体清单),说明变体语料不足,应扩充scenarios.yaml的 variants 字段(加新 phrase),而非依赖规则 5c 的追问兜底。这是变体管理的反馈循环——FAT 暴露覆盖缺口 → 扩充语料 → 下次 FAT 验证。
- 当前状态(2026-07-28):变体语料已入库(TOP 5 核心词 × 每词 6 变体),但匹配行为尚未在 AI 路由层生效——AI 读取本规则后应自觉执行变体匹配,但无代码强制。
⚠️ 变体匹配的 fail mode:若 AI 读了本规则但仍只用精确匹配(忽略 variants),视为 §⛓ HTML-First 协议的 silent failure(用户口语化 prompt 无法命中唤醒词 = 行为 fail mode)。commit 前自检清单的
html-first-n/a不适用本场景——变体匹配是路由层行为,不是 HTML 层。
唤醒词 CLI 映射
| 唤醒词 | CLI 命令 |
|---|---|
| 居家管家 帮助 | python3 scripts/home_manager.py help(生成 HELP HTML) |
| 查物品 | search --name "XX" 或 search --location "XX" 或 search --tag "XX" |
| 看物品 | detail --id {ID} |
| 录物品 | add --name "XX" --category-id N --location "XX" (category-id 必填,从 categories 表查) |
| 拍物品 | 先看图并保存到 HOME_PHOTOS_DIR → add --name "XX" --category-id N --location "XX" --tags "...≥10" --remark "..." --photo "XX" 一次写入 |
| 改物品 | update --id {ID} + 对应参数 |
| 移物品 | update --id {ID} --new-location "新位置" --location "原位置" |
| 补物品 | update --id {ID} --plus N |
| 减物品 | update --id {ID} --minus N |
| 标物品 | update --id {ID} --tags "新标签" |
| 废物品 | update --id {ID} --location-status "已废弃" |
| 借物品 | update --id {ID} --location-status "借用中" |
| 修物品 | update --id {ID} --location-status "维修中" |
| 盘物品 | inventory --location "位置" [--output PATH] (--output 走 inventory_check.html) |
| 盘全部 | list(无筛选条件) |
| 穿什么 | sm3-outfit [--temperature N] [--occasion X] [--limit N] → 穿搭/outfit_picker.html |
| 带物品 | sm3-trip [--trip-type X] [--days N] [--plan-type X] [--exercises X] → 穿搭/travel_trip.html |
| 归物品 | sm3-trip --mode return → 穿搭/travel_trip.html |
| 统物品 | stats --type overview --output(物品总览 HTML,含状态/分类/位置/价值TOP/高频TOP/趋势) |
| 查高频 | stats --type overview --output(T5 裁决:并入物品总览高频 TOP 区块) |
| 查低频 | stats --type idle [--days 90] --output(T5 裁决:语义由闲置检测承接) |
| 查闲置 | `stats --type idle [--days 90 |
| 查过期 | stats --type expiring [--days 30] [--expired-only] [--category-id N] [--output PATH] (--output 走 stats/expiring.html) |
| 盘点统计 | stats --type inventory-stat [--output PATH] (--output 走 stats/inventory_stat.html) |
| 看标签 | tag-list |
| 合标签 | tag-merge --from "旧" --to "新" |
| 查快递 | python3 scripts/快递购物/cli.py express [--timeout-days 7] [--output PATH] → 快递购物/express.html(含超时提醒/收货确认闭环) |
| 购物清单 | python3 scripts/快递购物/cli.py list(HTML 视图)| list-add --name "XX" --quantity N [--routine 每周|每月] | list-check --ids 1,2 |
| 缺货检测 | python3 scripts/快递购物/cli.py missing [--category-id N](HTML 视图)| missing-to-list --ids 1,2 |
| 囤货盘点 | python3 scripts/快递购物/cli.py stock(HTML 视图)| stock-set-threshold --id N --threshold M | stock-fix --id N --quantity M |
| 推位置 | suggest-locations --category-id N [--with-examples] |
| 找位置 | find-location --reference "XX" |
| 查账号 | python3 scripts/票据凭证/cli.py account list [--scene SM6-15](清单 HTML·密码脱敏)或 account show --platform "XX" --master-key "XX" [--scene SM6-18](敏感回显) |
| 存账号 | python3 scripts/票据凭证/cli.py account add --platform "XX" --user "XX" --pass "XX" --master-key "XX" [--type 购物|银行|社交|其他] [--scene SM6-16](加密存储) |
| 改账号 | python3 scripts/票据凭证/cli.py account update --platform "XX" --master-key "XX" [--user] [--pass] [--type] [--scene SM6-17](重新录入语义) |
| 查异常 | python3 scripts/开始使用/cli.py lint (数据检查 8 项, 走 开始使用/health_report.html) |
| 首次使用 | python3 scripts/开始使用/cli.py check → init(建库+种子 60 节点)→ init-status(幂等) |
| 备份导出 | python3 scripts/开始使用/cli.py backup / backup-list / export --format json|csv |
| 导入恢复 | python3 scripts/开始使用/cli.py import-preview --file X → import --file X [--mode skip|overwrite] |
| 查物品 | search --name "XX" 默认输出 HTML |
| 看物品 | detail --id {ID} 默认输出 HTML |
| 统物品 | list 默认输出 HTML |
| 管位置 | sm2-manage --action view(查看)· --action create --path "XX"(新建)· --action rename --old "XX" --new "YY"(改名)· --action merge --src "XX" --tgt "YY"(合并)· --action delete --path "XX"(删除)· --action similar(相似检测) |
| 固定位 | sm2-fixed --action list(清单)· --action set --item-id N --location "XX"(设置)· --action clear --item-id N(解除) |
| 收纳建议 | sm2-suggest --item-id N(单件)· --item-ids "1,2"(指定多件)· --batch [--limit N](批量:没固定位的常用件) |
| 空间视图 | sm2-view [--path "XX"](缺省=顶层) |
| 联动总览 | python3 scripts/联动/cli.py sm9-overview(能力索引+偏好 HTML;sm9-prefs --key food|price --value ask|remember|off 设偏好) |
| 记到卡路里 | python3 scripts/联动/cli.py sm9-food --item-id N [--action log|query](log=记到今日饮食, query=查热量) |
| 记到记账 | python3 scripts/联动/cli.py sm9-price --item-id N [--direction expense|income](expense=支出, income=收入/退货退款) |
| 借用 | family --action borrow-list [--output PATH](清单 HTML·双向区隔/超期/催还) · --action borrow-add --direction 借出|借入 --item-id N 或 --item-name "XX" --object "XX" [--borrowed-at D] [--due-date D](登记·借出自动改状态借用中) · --action borrow-return --borrow-id N(归还·状态回在家) · --action borrow-remind --borrow-id N(催还文案纯文本) |
| 家人档案 | family --action member-list [--output PATH](成员 HTML·归属统计) · --action member-add --name "XX" [--relation "XX"] [--note "XX"](添加) · --action member-remove --name "XX"(移除·归属回使用者) · --action member-assign --name "XX" --item-ids "1,2,3"(批量标记归属) |
| 查购买记录 | python3 scripts/票据凭证/cli.py purchase list [--item-id N] [--year YYYY] [--month MM] [--scene SM6-1](清单 HTML·退货窗口计算)· purchase add --item-id N --date D [--price X] [--channel] [--scene SM6-5](登记·票据照片预告式)· purchase stats [--year YYYY] [--scene SM6-3](消费统计) |
| 查上月购买 | python3 scripts/票据凭证/cli.py purchase list --year YYYY --month MM [--scene SM6-2](时间预填·零填写) |
| 查今年花费 | python3 scripts/票据凭证/cli.py purchase stats --year YYYY [--scene SM6-3](年度统计) |
| 查退货窗口 | python3 scripts/票据凭证/cli.py purchase list --item-id N [--scene SM6-4](物品必填·退货截止日) |
| 登记购买记录 | python3 scripts/票据凭证/cli.py purchase add --item-id N --date D [--price X] [--channel] [--scene SM6-5](登记·票据照片预告式) |
| 查保修状态 | python3 scripts/票据凭证/cli.py warranty list [--status 在保|即将到期|已过|到期未做|全部] [--scene SM6-6](清单 HTML·状态徽章·维修记录) |
| 登记保修 | python3 scripts/票据凭证/cli.py warranty register --item-id N --kind 保修 --start-date D --duration-days N [--scene SM6-7](登记保修期) |
| 记录维修 | python3 scripts/票据凭证/cli.py warranty repair --warranty-id N --date D [--cost X] [--scene SM6-8](维修记录) |
| 设置保养周期 | python3 scripts/票据凭证/cli.py warranty register --item-id N --kind 保养 --start-date D --duration-days N [--scene SM6-9](设置保养周期) |
| 执行保养 | python3 scripts/票据凭证/cli.py warranty maintain --warranty-id N --date D [--scene SM6-10](保养执行·刷新下次日) |
| 查证件到期 | python3 scripts/票据凭证/cli.py cert list [--scene SM6-11](清单 HTML·号码 ****后4位·按到期排序) |
| 登记证件 | python3 scripts/票据凭证/cli.py cert add --type 护照|身份证|驾照|签证|保险单|其他 --expires-at D [--holder] [--number] [--scene SM6-12](登记·脱敏存储) |
| 证件归档 | python3 scripts/票据凭证/cli.py cert add --photo P [--scene SM6-13](照片归档) |
| 更新证件 | python3 scripts/票据凭证/cli.py cert add [--scene SM6-14](重登记语义·只改填写字段) |
| 账号 | python3 scripts/票据凭证/cli.py account list [--scene SM6-15](清单 HTML·密码 ******·类型分组)· account init-master --master-key M(首设主密钥)· account add(加密存储)· account show(敏感回显)· account update(修改)· account set-master(换密钥) |
🧩 变体管理(总纲 §钩子 3 · 变体)
引用 SKILL 开发总纲 §钩子 3:每个核心唤醒词配 2-3 个自然语言等价表达,覆盖 3 方向(同义 / 口语 / 模糊)。SKILL.md 只标方向,不写具体话(避免硬编码语料);具体话术在
references/scenarios.yaml的variants字段。
TOP 5 核心唤醒词变体方向
按 audit 使用频率(grilling Q7=audit),TOP 5 核心词均已配齐 3 方向变体:
| 唤醒词 | 变体方向 | 变体示例(完整见 scenarios.yaml) |
|---|---|---|
| 查物品 | 同义 + 口语 + 模糊 | 搜索物品 / 帮我找找 / 那个啥在哪 |
| 看物品 | 同义 + 口语 + 模糊 | 查看物品 / 给我看看这个 / 那个东西的信息 |
| 录物品 | 同义 + 口语 + 模糊 | 登记物品 / 帮我记一下 / 这个收进来 |
| 盘物品 | 同义 + 口语 + 模糊 | 清点物品 / 数数这里 / 看看齐不齐 |
| 统物品 | 同义 + 口语 + 模糊 | 统计物品 / 家里都有啥 / 一共多少件 |
变体数量说明:总纲 §CONTEXT.md
变体定义为"配 2-3 个自然语言等价表达,覆盖 3 方向"。本 Skill 在 scenarios.yaml 中每 TOP 5 唤醒词存 6 变体(每方向 2 个)作为语料储备,SKILL.md 上表只展示每方向 1 个代表。tests/test_variants.py锁下限(≥ 2 direction)不锁上限,允许语料扩充。
单一事实源
变体清单的唯一事实源是 references/scenarios.yaml 的 variants 字段(每个 variant = {direction: str, phrase: str})。tests/test_variants.py 用 5 个测试锁住结构契约(direction ∈ {同义,口语,模糊} / 每 TOP 5 ≥ 2 direction / phrase 非空 / 无禁用字符)。
⚠️ Risk B:新增 TOP 核心词需同步标注变体方向
新增 TOP 核心词时,必须同步在 scenarios.yaml 加 variants 字段,否则视为 incomplete scenario——因为缺变体的核心词无法匹配口语化 prompt,违反钩子 3。tests/test_variants.py 的 TOP5 列表当前是硬编码,新增 TOP 核心词时需同步更新该列表。
安装与配置
依赖:Python 3.x
环境变量(可选):
SKILLS_DB_PATH:数据库目录HOME_PHOTOS_DIR:照片目录
网页版:SkillBoard - 通过浏览器使用本系统,支持电脑和手机。使用时选择 home.db 文件即可。
一键安装:复制以下 prompt 给 AI:
帮我安装"居家管家"技能:
1. 检查 Python 环境
2. 引导我配置环境变量
3. 显示当前环境变量配置
4. 告诉我如何更改数据目录
📌 输出位置
本 Skill 的 HTML 输出遵循 SKILL 开发总纲 §原则 12(HTML 输出路径约定),分类标 12.A(数据/过程)和 12.B(HELP)。
路径根与子目录
路径根按 env 链解析(总纲 12.X 优先级):
$SKILLS_DATA_DIR > $SKILLS_DB_PATH > Skill 自带 fallback (Windows: D:\.db\ / WSL: /mnt/d/.db/)
所有 HTML 输出落在 <根>/home_manager_html/ 子目录下(Skill 标识 = home_manager,与 Python 包名一致)。
12.A 数据/过程 HTML
命名形态:<根>/home_manager_html/<command_cn>_<YYYYMMDD>_<HHMMSS>.html
command_cn 中文前缀来自 render 层的 template → command_cn 静态映射表(继承 SKILL §触发词速览表字面):
| template | command_cn |
|---|---|
search_results.html |
查物品 |
delivery_check.html |
查快递 |
add_preview.html |
录物品 |
item_detail.html |
看物品 |
list_overview.html |
统物品(v1,保留给盘全部) |
inventory_check.html |
盘物品 |
expiring_alert.html |
查过期(v1,已迁移至 stats/expiring.html) |
outfit_picker.html |
穿什么 |
travel_trip.html |
出行清单(涵盖带物品 pack + 归物品 return) |
位置/space_view.html |
空间视图 |
位置/location_manage.html |
管位置 |
位置/fixed_spot.html |
固定位 |
位置/suggest_storage.html |
收纳建议 |
stats/overview.html |
统物品(v2 物品总览,T5) |
stats/idle.html |
查闲置(T5) |
stats/expiring.html |
查过期(v2,T5) |
stats/inventory_stat.html |
盘点统计(T5) |
票据凭证/purchase_records.html |
购买记录域 5 场景(查购买记录/查上月购买/查今年花费/查退货窗口/登记购买记录 · #250) |
票据凭证/warranty.html |
保修域 5 场景(查保修状态/登记保修/记录维修/设置保养周期/执行保养 · #250) |
票据凭证/certificates.html |
证件域 4 场景(查证件到期/登记证件/证件归档/更新证件 · #250) |
票据凭证/accounts.html |
账号域 4 场景(查账号/存账号/改账号/看密码 · #250) |
例子:home_manager_html/查物品_20260728_171500.html
12.B HELP HTML
命名形态:<根>/home_manager_html/居家管家_HELP_<YYYYMMDD>_<HHMMSS>.html
以 _HELP_ 为保留字(中段,可被 grep 一抓出来)。<skill 中文名> 前缀 = 居家管家(SKILL.md frontmatter 声明)。
例子:home_manager_html/居家管家_HELP_20260728_171500.html
显式 override
--output <path> 仍可绕过自动命名,直接写到指定路径(不强制走 home_manager_html/ 子目录)。
⚠️ 与总纲 12.X 的偏离
本 Skill 在以下两项与总纲 12.X 显式偏离,详见 ADR-0001(单一真相,Q4=A 决策):
- 本地时间(非 UTC):用户看文件名时间戳期望与钟表一致
- 直接覆盖(无
_N后缀):本场景无保留历史输出需求,运行产物已.gitignore
本节不重复 ADR 细节,如需修改偏离请改 ADR-0001 并保持 SKILL.md 引用指向。
🧪 FAT 协议(总纲 §钩子 6 · Fresh Agent 黑盒测试)
引用 SKILL 开发总纲 §05 工程仪式 · FAT 协议 + §钩子 6:commit 前的商用级关卡。由零上下文 agent 执行唤醒词(3-5 个核心 × 每个 ≥ 3 个人类 prompt),对比预期工作流。fail → 改 SKILL.md 不改代码,循环 ≤ 3 次。
分级 Tested-By 规则
commit message 必含 Tested-By: 字段,分级如下:
| 改动类型 | Tested-By 取值 | 门槛 |
|---|---|---|
| 改代码 / 数据 / CLI | pytest-pass-YYYY-MM-DD |
python -m pytest 全 PASS 即可 commit |
| 改 SKILL.md(触发词 / 路由表 / 说明 / frontmatter / 行为契约) | fresh-agent-v1 |
必须 fresh agent 实际跑过 FAT 9 步 |
| 豁免(typo / 格式调整 / 注释) | exempt + 豁免依据 |
1 行说明为何豁免 |
分级理由(Q2=yes):接受分级而非 strict-only,因 SKILL.md 改动多属文档契约,pytest 测不到;但代码改动用 pytest 足够。分级子规则防止 SKILL.md 退化(改 SKILL.md 必 fresh agent,不能拿 pytest 充数)。
FAT 9 步协议(引用总纲 §05)
完整 9 步协议见 总纲 §05 工程仪式 · FAT 9 步协议。摘要:
- 选 3-5 个核心唤醒词(高频 + 复杂 + 易错)
- 准备 fresh context(新会话,不保留开发记忆)
- 最小化加载(只给 SKILL.md + 必要 scripts)
- 每核心词 ≥ 3 个人类 prompt(含口语化/略错,非 AI 风格)
- 捕获执行证据(命令/数据/输出)
- 对比预期工作流 vs 实际
- 判定 pass/fail(工作流一致 + 输出一致 + 无副作用 = PASS)
- fail → 改 SKILL.md 不改代码,再循环(≤ 3 次)
- 人工抽查 ≥ 1 个测试结果(防 AI 自评漏)
循环上限:SKILL.md 改 3 次仍未通过 → 暂停,人工介入(可能 SKILL 设计问题 / 测试选择不当 / 代码 bug)。
⚠️ Risk C:Tested-By 流于形式
**Tested-By 字段缺失 / 错误标签 / 与 commit 内容不符 = 总纲 02-5层骨架.md §8 反模式 #4 静默失败(except: pass 风格的协议级沉默),需立即补全或 revert。例:
- 改了 SKILL.md 触发词却标
pytest-pass-2026-07-28(应fresh-agent-v1)→ silent failure - 改了代码却标
fresh-agent-v1(应pytest-pass)→ 标签错配 - 完全不标 Tested-By → 协议不完整,等同豁免依据缺失
引用总纲 §8 反模式 #4 静默失败让 AI 有 external 压力,不流于形式。
HTML 渲染器(Phase 7 重构)
所有 HTML 模板的注入渲染由 scripts/render/ 包提供,与 home_manager 数据/操作层解耦:
| 模板 | 触发命令 | 交互 |
|---|---|---|
add_preview.html |
add --preview |
静态预览 + 复制 CLI |
search_results.html |
search |
只读卡片 |
delivery_check.html |
search --status "快递中" |
已收到/废弃/维修 + 回执 |
item_detail.html |
detail |
只读详情 |
list_overview.html |
list |
只读统计(含状态/分类分布) |
inventory_check.html |
inventory --output |
状态/数量变更 + 回执 |
expiring_alert.html |
stats --type expiring --output |
已处理/废弃 + 回执 |
stats/overview.html |
stats --type overview --output |
物品总览(指标/分布图表/价值TOP/高频TOP/趋势下钻)+ 复制数据/日志 |
stats/idle.html |
stats --type idle --output |
闲置勾选处理(废弃/送人/先不处理)+ 复制数据/日志 |
stats/expiring.html |
stats --type expiring --output |
过期勾选处理(用完/废弃/忽略)+ 复制数据/日志 |
stats/inventory_stat.html |
stats --type inventory-stat --output |
盘点统计(趋势/差异/建议复查)+ 复制数据/日志 |
架构:渲染器在 scripts/render/__init__.py(独立包);home_manager 包不再反向依赖。详见 scripts/render/__init__.py 文档字符串。
硬规则(与《预置HTML并注入数据指导手册》v2 对齐):
- 模板必须包含恰好 1 个
<!--INJECT-DATA-->占位符 - 注入前校验
payload.status === 'ok',非 ok 拒收 - 模板 JS 守门
validate(payload),渲染前再校验一次
功能概述
- 物品录入:自然语言描述物品,AI 解析后写入数据库
- 物品查找:按名称/位置/标签/分类/状态搜索
- 物品更新:位置变动、状态变更、数量调整、标签修改
- 物品盘点:按需盘点指定位置的所有物品
- 穿搭推荐:根据天气+标签推荐今日穿搭
- 旅游归位:出门带物+回家归位的完整流程
- 频率统计:区分高频/低频物品,识别长期未用物品
- 标签管理:合并相似标签
- 照片管理:支持配置照片存储路径(环境变量
HOME_PHOTOS_DIR,默认为技能目录/photos) - 购买记录:购买日期/价格/渠道/商家客服/退货窗口计算/票据照片归档 + 消费统计(按年/分类聚合)
- 保修与保养:保修期登记与状态计算(在保/即将到期/已过)+ 维修记录 + 保养周期与执行状态
- 证件管理:证件登记(护照/身份证/驾照/签证/保险单)按到期排序,号码脱敏显示,照片归档
- 账号密码:主密钥 Fernet 加密存储,类型组织(购物/银行/社交/其他),密码全脱敏,复制数据默认不含密码
- 🖼 单图架构:一件物品 = 一张照片(
item.photo是单字段)。- 多图录入:用户发多张图时,第 1 张 = DB 主图(必须存 photos 目录),后续图 = 只读不复制(信息整合到
tags+remark,不再重复存档到文件系统) - 套装共享:多件商品共用 1 张图时,每件复制一份并分别命名,各自 DB 存 1 个主图
- 命名规范:
YYYYMMDD_{ID}_{中文描述}.jpg,无'/://等 Windows 非法字符;add --photo会在内部拿到 ID 后复制为该规范名并写入item.photo
- 多图录入:用户发多张图时,第 1 张 = DB 主图(必须存 photos 目录),后续图 = 只读不复制(信息整合到
快速导航
| 唤醒词 | 功能 | 参考文档 |
|---|---|---|
| 查物品 | 物品搜索 | features/search.md |
| 看物品 | 物品详情 | features/search.md |
| 录物品 | 物品录入 | features/add.md |
| 拍物品 | 拍照录入 | features/add.md |
| 改物品 | 通用更新 | features/update.md |
| 移物品 | 位置移动 | features/update.md |
| 补物品 | 数量增加 | features/update.md |
| 减物品 | 数量减少 | features/update.md |
| 标物品 | 标签更新 | features/update.md |
| 废物品 | 标记废弃 | features/update.md |
| 借物品 | 标记借出 | features/update.md |
| 修物品 | 标记维修 | features/update.md |
| 盘物品 | 按位置盘点 | features/inventory.md |
| 盘全部 | 全屋盘点 | features/inventory.md |
| 穿什么 | 穿搭推荐 | features/穿搭.md(拼贴卡相册风) |
| 带物品 | 出门标记 | features/穿搭.md → 出行清单 |
| 归物品 | 回家归位 | features/穿搭.md → 归位 |
| 衣橱分析 | 衣橱闲置分析 | features/穿搭.md → 衣橱分析 |
| 换季 | 换季收纳 | features/穿搭.md → 换季 |
| 旅行穿搭 | 旅行穿搭计划 | features/穿搭.md → 旅行穿搭 |
| 统物品 | 总体统计 | features/stats.md |
| 查高频 | 高频物品 | features/stats.md |
| 查低频 | 低频物品 | features/stats.md |
| 查过期 | 过期检查 | features/stats.md |
| 看标签 | 列出标签 | features/tags.md |
| 合标签 | 合并标签 | features/tags.md |
| 查快递 | 快递跟踪 | scripts/快递购物/cli.py |
| 购物清单 | 购物清单管理 | scripts/快递购物/cli.py |
| 缺货检测 | 缺货自动进清单 | scripts/快递购物/cli.py |
| 囤货盘点 | 库存阈值管理 | scripts/快递购物/cli.py |
| 推位置 | 位置推荐 | features/add.md |
| 找位置 | 参考锚定 | features/add.md |
| 查账号 | 查看账号(密码脱敏) | scripts/票据凭证/cli.py |
| 存账号 | 新增账号(加密存储) | scripts/票据凭证/cli.py |
| 改账号 | 更新账号(重新录入) | scripts/票据凭证/cli.py |
| 看密码 | 查看密码(敏感回显) | scripts/票据凭证/cli.py |
| 查购买记录 | 购买记录全量查询 | scripts/票据凭证/cli.py |
| 查上月购买 | 上月购买(时间预填) | scripts/票据凭证/cli.py |
| 查今年花费 | 年度消费统计 | scripts/票据凭证/cli.py |
| 查退货窗口 | 退货截止日查询 | scripts/票据凭证/cli.py |
| 登记购买记录 | 登记购买(录入) | scripts/票据凭证/cli.py |
| 查保修状态 | 保修状态(在保/将到期/已过) | scripts/票据凭证/cli.py |
| 登记保修 | 登记保修期 | scripts/票据凭证/cli.py |
| 记录维修 | 维修记录 | scripts/票据凭证/cli.py |
| 设置保养周期 | 定期保养周期 | scripts/票据凭证/cli.py |
| 执行保养 | 执行保养 | scripts/票据凭证/cli.py |
| 查证件到期 | 证件到期查询(脱敏) | scripts/票据凭证/cli.py |
| 登记证件 | 证件登记(录入) | scripts/票据凭证/cli.py |
| 证件归档 | 证件照片归档 | scripts/票据凭证/cli.py |
| 更新证件 | 证件更新(重登记) | scripts/票据凭证/cli.py |
| 查异常 | 数据健康检查 | SKILL.md(Lint 检查) |
| 查物品 | 物品搜索→HTML | features/search.md |
| 看物品 | 物品详情→HTML | features/search.md |
| 统物品 | 总体统计→HTML | features/search.md |
| 管位置 | 位置管理→HTML | features/位置.md |
| 固定位 | 固定位清单→HTML | features/位置.md |
| 收纳建议 | 收纳建议→HTML | features/位置.md |
| 空间视图 | 空间视图→HTML | features/位置.md |
⚠️ 核心使用原则
- 任何写操作前必须交互确认:AI 先展示将要执行的操作,用户说"对"才执行
- 多物品冲突时让用户选:搜到多个同名物品,列出来让用户选,不默认选任何一个
- 物品只增不删,可修改:物品不会物理删除。item_locations 中 quantity=0 时自动删除该位置记录;位置状态为"已用完"或"已废弃"时需用户明确表态
- AI 不得自行推断:当用户意图存在多种可能时,AI 必须询问确认,不得私自选择
- 库存补充必须问:搜索到名称相同的"已用完"或"已废弃"物品时,AI 必须询问用户是"补充到现有记录"还是"新建记录",用户确认前不得写入数据库
⛓ HTML-First 行为契约(总纲 §原则 11 · 强约定)
引用 SKILL 开发总纲 §原则 11:唤醒词命中 SKILL 后,若 SKILL 声明有 HTML 输出路径,默认行为 = invoke HTML 工作流。文字答是 fail mode,不是 fallback。与 §原则 10 互补(10 管出向 · 复制 prompt,11 管入向 · 默认 HTML)。
必须 invoke HTML 的唤醒词(16 个)
命中下列唤醒词后,必须 invoke HTML 工作流,文字答视为 fail mode:
| 类别 | 唤醒词 |
|---|---|
| 查看类 | 查物品 / 看物品 |
| 盘点类 | 盘物品 / 盘全部 |
| 统计类 | 统物品 / 查高频 / 查低频 / 查过期 |
| 出行类 | 查快递 / 穿什么 / 带物品 / 归物品 / 衣橱分析 / 换季 / 旅行穿搭 |
| 空间类 | 管位置 / 固定位 / 收纳建议 / 空间视图 |
| 票据凭证类 | 购买记录 / 保修 / 证件 / 账号(SM6 域 CLI 默认输出 HTML) |
这些唤醒词的 HTML 输出路径见 §📌 输出位置 的 template → command_cn 映射表。
优雅降级
若 HTML 生成失败(磁盘满 / 模板错 / 渲染异常),fallback 到结构化文本 + 错误回执,不要直接报错中断。结构化文本应包含:操作名 / 关键数据 / 失败原因 / 建议下一步。用户看到错误回执后可手动重试或反馈。
fail mode 判定:
查物品命中后只回一行文字"找到 3 件物品:..."而不生成 HTML = fail mode,需立即补 invoke HTML。
fail mode 自检清单(commit 前必跑)
本清单是软规则 §HTML-First 的硬执行替代——没有代码强制,但 AI 在每次涉及 12 唤醒词的 commit 前必须自检,未过自检不得 commit。这是对抗式审查后补的(P1-3),解决"强约定无硬执行"的空壳问题。
自检步骤(AI 在 commit message 的 Tested-By 字段记录结果):
-
本轮是否触发了 12 唤醒词中的任意一个?
- 否 → 本清单不适用,跳过
- 是 → 继续
-
每个被触发的唤醒词,本轮是否 invoke 了 HTML 工作流?
- 是 → PASS,记录
html-first-pass - 否 → 进入 fail mode 处理
- 是 → PASS,记录
-
fail mode 处理(命中但未 invoke HTML):
- 检查是否有 HTML 生成失败(磁盘满 / 模板错 / 渲染异常)
- 失败 → 走优雅降级(结构化文本 + 错误回执),记录
html-first-fallback + 原因 - 未失败但没 invoke → silent failure,不得 commit,先补 invoke HTML
Tested-By 字段标法(与 §🧪 FAT 协议 分级规则互补):
html-first-pass— 12 唤醒词命中后都 invoke 了 HTMLhtml-first-fallback + 原因— HTML 失败走了优雅降级html-first-n/a— 本轮未触发 12 唤醒词(纯文档 / 纯测试改动)- 不标 → 视为 silent failure,等同 §8 反模式 #4
示例:
- 改 SKILL.md §HTML-First 章节(commit 4):
Tested-By: html-first-n/a (纯文档,未触发 12 唤醒词) - 改 search 命令的 HTML 模板:
Tested-By: html-first-pass (查物品 命中后 invoke search_results.html) - 查物品 命中但只回文字:
Tested-By: html-first-fail (silent failure,不得 commit)
联动说明(SM9 联动功能域 · 双入口单实现)
联动逻辑已集中到技能路由器(图片路由/SKILL.md),本技能不再单独维护联动规则。完成主操作后请检查路由器的联动规则表。
SM9 场景(3 个,流程详见 features/联动.md):
| 唤醒词 | 场景 | CLI | 说明 |
|---|---|---|---|
| 联动总览 | 联动功能总览 | sm9-overview |
能力索引(食品→卡路里/价格→饼干记账/健身→出行清单)+ 偏好频控 |
| 记到卡路里 | 食品联动 | sm9-food --item-id N [--action log|query] |
物品确认 → 动作选择 → 复制 prompt 到卡路里(单工闭环) |
| 记到记账 | 价格联动 | sm9-price --item-id N [--direction expense|income] |
物品确认(含价格)→ 方向选择 → 复制 prompt 到饼干记账 |
双入口顺路建议(G6 第 3 层 · 规格硬要求):
- 独立触发:用户直接说「记到卡路里 / 记到记账 / 联动总览」→ 按上表路由
- 录入顺路建议:完成「录物品/拍物品」(1-1/1-2)回执后,AI 检查联动偏好(
sm9-prefs设置,存$SKILLS_DB_PATH/link_prefs.json):ask(每次询问)→ 始终在回执顺路提醒区给出联动建议remember(记住上次选择)→ 按上次用户是否接受联动决定off(关闭)→ 不打扰,不回执建议- 食品/饮品物品 → 建议「记到卡路里」(查热量或记一餐);有价格物品 → 建议「记到记账」(记支出/收入)
- 建议内容 = 调用
sm9-food / sm9-price生成的 prompt,附在回执 HTML 顺路提醒区
执行边界:联动执行 = 复制 prompt 到对应技能(卡路里/饼干记账),居家管家不直接调用对方 CLI(跨技能物理隔离,单工闭环)。
Lint 检查(数据健康检查 · SM8 开始使用域)
唤醒词:查异常
执行方式(SM8 实施后 · 2026-08-05)
python3 scripts/开始使用/cli.py lint → 结构化 JSON → 渲染 templates/开始使用/health_report.html(查看+选择)。
输出 = 环境信息头部 + 8 检查项(问题/涉及数/严重度)+ 勾选复制修复引导。
检查项(8 项 · v2.0)
- 无标签物品 — item_tags 无记录 → 修复引导:改物品补标签
- 无位置物品 — 无 item_locations 行(盘点会漏)→ 修复引导:改物品补位置
- 状态长期未更新 — 快递中>7 天 / 旅游中>30 天 / 维修中>30 天 / 借用中>30 天
- 单级位置 — 位置路径不含
/(如只有"客厅")→ 修复引导:移物品规范化 - 无照片物品 — photo 为空 → 修复引导:拍物品补拍(预告式)
- 未录价格 — purchase_price 为空 → 修复引导:改物品补价格(联动 SM4 价格覆盖率)
- 无购买/过期日期 — item_locations 无日期 → 修复引导:改物品补日期
- 相似位置未合并 — 去掉分隔符后同名(如
卧室/东南角vs卧室东南角)→ 修复引导:移物品合并
处理原则
- 发现问题后列出清单,让用户勾选确认(HTML 勾选 → 复制修复引导)
- 只建议不自动改:AI 不得直接修改数据,只能复制对应场景 prompt 引导用户
- 用户说"检查一下"时执行,不主动触发
开始使用域流程(SM8 · 首次使用/备份导出/导入恢复)
唤醒词:首次使用 / 备份导出 / 导入恢复
首次使用(初始化工作流 · 6 步)
- 环境检测:
python3 scripts/开始使用/cli.py check(OS/Python/目录可写/DB 状态) - 路径确认:展示 check 输出的
db_path(AI 预填建议路径),必须征求用户确认,不静默 - 建库+建分类:
python3 scripts/开始使用/cli.py init(幂等:已有库/已有分类 → 跳过) - 状态确认:
python3 scripts/开始使用/cli.py init-status(未初始化/库已建/已初始化) - 渲染向导 HTML:
render_开始使用.emit_sm8("first_use_wizard.html", ...)(6 步步骤条 + 环境信息 + 建库结果 + 下一步按钮) - 完成:提示可录第一批(建议拍物品);失败 →
emit_error错误回执 HTML(步骤/原因/建议)+ 一键重试
备份导出(数据资产)
- 查询历史:
cli.py backup-list [--keep-n N](备份文件/大小/时间/距上次备份天数) - 确认备份:用户确认 →
cli.py backup(db+照片全量打包 zip,自动保留 N 份清理最旧) - 导出(可选):
cli.py export --format json|csv [--output 路径] - 渲染:
emit_sm8("backup_receipt.html", ...)(备份结果 + 历史列表 + 距上次备份天数 + 导出按钮) - 删除旧备份:确认式
cli.py backup-delete --file 文件名;失败 → 错误回执 + 重试
导入恢复(迁移 · 预告式文件)
- 预告式:按钮复制「【导入文件即将发送:】」→ AI 进入等待态 → 用户发文件
- 校验+冲突预览:
cli.py import-preview --file X(格式/版本兼容 + 同名冲突计数) - 确认导入:
cli.py import --file X [--mode skip|overwrite](导入前自动备份,失败回滚数据不变) - 渲染:
emit_sm8("import_restore.html", ...)(步骤条 + 校验结果 + 冲突预览 + 确认/撤销按钮) - 撤销(确认式):
python3 scripts/开始使用/cli.py import-undo --file <导入前备份>(覆盖前自动再备份当前库为安全网;非法备份 → 错误回执)
快递购物域流程(SM5 · 购物清单/缺货检测/快递跟踪/囤货盘点)
唤醒词:购物清单 / 缺货检测 / 查快递 / 囤货盘点
购物清单(组织/例行/采购闭环)
- 视图:
python3 scripts/快递购物/cli.py list→ 快递购物/list.html(条目 + 来源标注:手动/缺货检测/例行+周期 + 清单内查重提示 + 例行到期顺路提醒) - 添加:
cli.py list-add --name "XX" --quantity N [--source 手动|缺货检测|例行] [--routine 每周|每月](同名「待买」重复添加 → 拒绝并提示合并) - 销项(勾选已买):
cli.py list-check --ids 1,2(例行条目记 last_done_at,超周期自动重新激活为待买 + 顺路提醒「本周采购清单已生成」) - 采购闭环(按钮复制 prompt → AI 引导):新物品 → 录物品(1-1);已有物品 → 补数量(3-3)
- 空态:引导缺货检测自动填清单
缺货检测(自动进清单)
- 检测:
cli.py missing [--category-id N]→ 快递购物/missing.html(当前数量+阈值+建议量「当前 0/阈值 1/建议买 2」) - 阈值来源:囤货设置(
stock-set-threshold);未设置 → 默认 1 估算并标注「默认」 - 一键进清单(勾选):
cli.py missing-to-list --ids 1,2(按建议量入清单;已在待买 → 跳过并提示合并) - 空态:库存充足
快递跟踪(查/超时/收货确认)
- 视图:
cli.py express [--timeout-days 7]→ 快递购物/express.html(照片+名称+数量+「快递中」+已等 N 天+超时红色徽章+顺路提醒) - 确认收货(勾选):
cli.py express-receive --id N [--to 在家|备用](状态变更 + 写 item_events) - 超时处理:按钮复制 prompt → AI 联系卖家/标记遗失
囤货盘点(库存/阈值/不足检测)
- 视图:
cli.py stock→ 快递购物/stock.html(名称+当前数量+阈值+库存状态:充足/低/空) - 设置阈值:
cli.py stock-set-threshold --id N --threshold M(缺货检测的阈值数据源) - 修正数量(勾选 → 3-3):
cli.py stock-fix --id N --quantity M(写数量变更事件) - 空态:引导为常用物品设阈值(高频无阈值物品提示)
错误处理
| 场景 | AI 处理方式 |
|---|---|
| 搜不到物品 | 告知用户,询问是否换个关键词或新建物品 |
| 搜到多个同名物品 | 列出让用户选择,不默认选任何一个 |
| 录入时发现同名"已用完/已废弃"物品 | 列出选项让用户选择,不能自动决定 |
| 补充库存时原物品状态为"已用完/已废弃" | 询问用户新状态是什么(在家/备用/快递中/其他) |
| 用户输入模糊无法解析 | 追问确认 |
| 数据库写入失败 | 告知用户失败原因,询问重试 |
| 首次使用(无数据库) | 走 SM8 初始化工作流:check → 路径确认 → init(建库+种子 60 节点),失败=错误回执 HTML+重试 |
| 初始化已存在库 | 幂等跳过建库建分类,提示「已初始化,直接使用」 |
| 备份失败 | 错误回执 HTML(原因/建议)+ 一键重试;备份前不动原数据 |
| 导入文件不兼容 | 校验失败 → 错误回执;导入失败自动回滚,数据不变 |
| 盘点中途退出 | 已确认的已写入,未确认的保持原样 |
| 穿搭推荐无匹配 | 告知无匹配衣物,建议扩展标签或录入 |
| 天气数据获取失败 | 告知无法获取天气,改用纯标签筛选 |
| 标签合并不存在 | 脚本输出"标签不存在",AI 告知用户 |
| 购物清单添加重复条目 | 脚本拒绝并提示「已在购物清单中,可改数量」,AI 转告用户,不自动合并 |
| 收货确认时无快递中记录 | 脚本报错「没有快递中位置记录」,AI 告知无需确认收货 |
| 囤货修正无库存位置 | 脚本报错,AI 提示先录入或确认收货后再修正 |
04 同仓库更多 Skills
饼干记账
记账技能。写入类:记支出、记收入、拍账单、批量录入、改记录、撤销、恢复、记报销、记退款、记借出、记借入、记收回、记偿还、记分期。查询类:查今天、查某天、查月、查区间、查分类、搜备注、查标签、查账户、查账本、查欠款、查待报销。分析类:看月度、看总览、看分类、看对比、看趋势、看大额、做统计、看洞察、看借贷。目标/账户/联动:设定预算、看预算、设定目标、看目标、新增账户、改账户、账户转账、看账户汇总、买东西联动、吃饭联动。**所有查询/分析类唤醒词默认 invoke HTML 工作流**(scripts/bill_inject.py + templates),写入类保持文字回执。能力速查:说「饼干记账 HELP」/「查帮助」/「能做什么」。完整 70 个唤醒词见 references/路由表.md
贴心助理
真实助手 - 主动分析用户状态,关心用户,提供帮助与提醒。不偷懒地联动所有技能,真正像个朋友一样陪伴。
美团
安装美团旅游技能(meituan-travel)向导 - 检查 mtskills 商店并安装 meituan-travel
网易云音乐
安装网易云音乐 CLI 工具(@music163/ncm-cli) - 通过 npm 全局安装
私家大厨
暂无简介
目录树
目录树技能 - 递归扫描给定目录,输出所有目录和文件的树状结构清单