diff --git a/README.md b/README.md index bd7ead1c..e12a6ca2 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,8 @@ - **Memory as files**:以带 frontmatter 和 wikilink 的 Markdown 作为记忆节点,让人和 Agent 都能直接读写。 - **自进化知识库**:通过 Auto Memory、Auto Resource、Auto Dream 和 Auto Link,把对话与资料渐进加工、梦境整理为长期 Markdown 记忆,并自动构建 wikilink 关系。 -- **渐进式混合搜索**:构建 BM25 + embedding 的混合检索,先召回片段,再通过 wikilink 支持正向和反向的上下文展开。 -- **Agent 友好集成**:通过文件、索引、工具接口、CLI 模型接入和 MCP 接入组织记忆,方便不同 Agent 维护和复用。 +- **渐进式混合搜索**:构建 wikilink + BM25 + embedding 的渐进式混合搜索。 +- **Agent 友好集成**:通过SKILL.md + CLI 接入,方便不同 Agent 维护和复用。
适用场景 diff --git a/reme/config/qwenpaw.yaml b/reme/config/qwenpaw.yaml deleted file mode 100644 index c6a9a685..00000000 --- a/reme/config/qwenpaw.yaml +++ /dev/null @@ -1,553 +0,0 @@ -service: - backend: http - -jobs: - index_update_loop: - backend: background - # watch_dirs: [daily_dir, digest_dir, resource_dir] - watch_dirs: [daily_dir, digest_dir] - # watch_suffixes: [md, jsonl] - watch_suffixes: [md] - steps: - - backend: init_changes_step - monitor_type: file_store - monitor_name: default - dispatch_steps: [update_index_step] - - backend: watch_changes_step - dispatch_steps: [update_index_step] - - resource_watch_loop: - backend: background - watch_dirs: [resource_dir] - watch_suffixes: [md, txt, json, jsonl, csv, yaml, html] - steps: - - backend: init_changes_step - monitor_type: file_catalog - monitor_name: resource - dispatch_steps: - - backend: update_catalog_step - file_catalog: resource - - backend: auto_resource_step - - backend: watch_changes_step - dispatch_steps: - - backend: update_catalog_step - file_catalog: resource - - backend: auto_resource_step - - version: - backend: base - description: "return reme package version" - parameters: - type: object - properties: { } - steps: - - backend: version_step - - reindex: - backend: base - description: "wipe the file store and rebuild it from the existing files" - watch_dirs: [daily_dir, digest_dir, resource_dir] - watch_suffixes: [md, jsonl] - parameters: - type: object - properties: { } - steps: - - backend: clear_store_step - - backend: init_changes_step - monitor_type: file_store - monitor_name: default - dispatch_steps: [update_index_step] - - search: - backend: base - description: "Hybrid vault search (vector + BM25, RRF-fused)." - parameters: - type: object - properties: - query: - type: string - description: "search query" - limit: - type: integer - description: "max results" - default: 5 - min_score: - type: number - description: "min fused score" - default: 0.0 - required: - - query - steps: - - backend: search_step - vector_weight: 0.7 - candidate_multiplier: 3.0 - expand_links: true - max_links_per_direction: 10 - - node_search: - backend: base - description: "Digest node recall — given a candidate abstraction's name+description, surface existing digest nodes similar enough to either dedup against or link to as related." - parameters: - type: object - properties: - query: - type: string - description: "search query" - limit: - type: integer - description: "max digest nodes to return" - default: 20 - required: - - query - steps: - - backend: node_search_step - vector_weight: 0.7 - candidate_multiplier: 5.0 - - daily_create: - backend: base - description: "Provision a session note under a daily folder: daily//.md or daily/.md" - parameters: - type: object - properties: - session_id: - type: string - description: "the session identifier (also the file stem); empty = day-level file" - default: "" - date: - type: string - description: "YYYY-MM-DD; empty = today" - default: "" - steps: - - backend: daily_create_step - - daily_list: - backend: base - description: "List notes under a single day." - parameters: - type: object - properties: - date: - type: string - description: "YYYY-MM-DD; empty = today" - default: "" - steps: - - backend: daily_list_step - - daily_reindex: - backend: base - description: "Rebuild the day-index page daily/.md." - parameters: - type: object - properties: - date: - type: string - description: "YYYY-MM-DD; empty = today" - default: "" - steps: - - backend: daily_reindex_step - - frontmatter_delete: - backend: base - description: "Drop keys from a file's frontmatter." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path" - keys: - type: array - description: "keys to remove" - items: - type: string - required: - - path - - keys - steps: - - backend: frontmatter_delete_step - - frontmatter_read: - backend: base - description: "Read a file's frontmatter as a dict." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path" - required: - - path - steps: - - backend: frontmatter_read_step - - frontmatter_update: - backend: base - description: "Merge key-values into a file's frontmatter." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path" - metadata: - type: object - description: "key-values to merge" - required: - - path - - metadata - steps: - - backend: frontmatter_update_step - - stat: - backend: base - description: "Stat path (size, mtime, exists, is_dir, is_file)." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path" - required: - - path - steps: - - backend: stat_step - - list: - backend: base - description: "List files under a vault path." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative dir; empty = root" - default: "" - recursive: - type: boolean - description: "recurse" - default: false - limit: - type: integer - description: "max results" - default: 100 - steps: - - backend: list_step - - move: - backend: base - description: "Move / rename a vault file; rewrites inbound wikilinks by default." - parameters: - type: object - properties: - src_path: - type: string - description: "vault-relative source" - dst_path: - type: string - description: "vault-relative destination" - overwrite: - type: boolean - description: "overwrite if dst exists" - default: false - retarget: - type: boolean - description: "rewrite [[src]] → [[dst]] across the vault" - default: true - required: - - src_path - - dst_path - steps: - - backend: move_step - - delete: - backend: base - description: "Delete a vault file or folder; returns surviving inbound wikilinks." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path" - required: - - path - steps: - - backend: delete_step - - read: - backend: base - description: "Read a markdown file under the vault." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path; markdown only" - start_line: - type: integer - description: "first line (1-based, inclusive)" - end_line: - type: integer - description: "last line (1-based, inclusive)" - required: - - path - steps: - - backend: read_step - with_neighbors: false - max_neighbors_per_direction: 10 - - read_image: - backend: base - description: "Read an image file as base64 (vault-relative path)." - parameters: - type: object - properties: - path: - type: string - description: >- - vault-relative path; common image formats supported - (png/jpg/jpeg/webp/gif/bmp/tiff/heic) - required: - - path - steps: - - backend: read_image_step - max_bytes: 5242880 - - write: - backend: base - description: "Write a markdown file (create or overwrite) with name/description frontmatter." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path; markdown only" - name: - type: string - description: "frontmatter name" - description: - type: string - description: "frontmatter description" - content: - type: string - description: "body" - metadata: - type: object - description: "Optional extra frontmatter fields (md only)." - required: - - path - - name - - description - - content - steps: - - backend: write_step - - edit: - backend: base - description: "Find-and-replace in a markdown file (all occurrences)." - parameters: - type: object - properties: - path: - type: string - description: "vault-relative path" - old: - type: string - description: "text to find" - new: - type: string - description: "replacement" - default: "" - required: - - path - - old - - new - steps: - - backend: edit_step - - auto_dream: - backend: base - description: "Auto-dream: scan today's day-index and daily notes, globally extract merged units/topics, integrate digest units, write interests.yaml, and persist the dream catalog." - parameters: - type: object - properties: - date: - type: string - description: "YYYY-MM-DD to scan; defaults to today in the dreamer's timezone" - default: "" - hint: - type: string - description: "caller guidance passed through to dream extract/integrate" - default: "" - topic_count: - type: integer - description: "maximum number of final daily interest topics" - default: 3 - topic_diversity_days: - type: integer - description: "number of previous interests.yaml days to avoid repeating" - default: 7 - steps: - - backend: dream_extract_step - file_catalog: dream - topic_session_id: interests - - backend: dream_integrate_step - - backend: dream_topics_step - topic_count: 3 - topic_diversity_days: 7 - - backend: dream_finish_step - file_catalog: dream - - proactive: - backend: base - description: "Proactive: read daily//interests.yaml and expose the latest user-interest topics." - parameters: - type: object - properties: - date: - type: string - description: "YYYY-MM-DD to read; defaults to today in the dreamer's timezone" - default: "" - include_content: - type: boolean - description: "whether to include the raw YAML content in response metadata" - default: true - steps: - - backend: proactive_step - - auto_memory: - backend: base - description: "Auto-memory: record conversation facts into a daily note" - parameters: - type: object - properties: - messages: - type: array - description: "messages" - items: - type: object - session_id: - type: string - description: "session identifier passed to daily_create" - default: "" - memory_hint: - type: string - description: "optional hint" - required: - - messages - steps: - - backend: auto_memory_step - - auto_resource: - backend: base - description: "Auto-resource: interpret resource files into daily notes" - parameters: - type: object - properties: - changes: - type: array - description: "resource change batch, each item has path/file_path and change" - items: - type: object - properties: - path: - type: string - file_path: - type: string - change: - type: string - description: "added/modified/deleted" - required: - - changes - steps: - - backend: auto_resource_step - -components: - tokenizer: - default: - backend: regex - - as_embedding: - default: - backend: ${EMBEDDING_BACKEND:-openai} - model: ${EMBEDDING_MODEL_NAME:-text-embedding-v4} - credential: - api_key: ${EMBEDDING_API_KEY:-} - base_url: ${EMBEDDING_BASE_URL:-https://dashscope.aliyuncs.com/compatible-mode/v1} - parameters: - dimensions: 1024 - - embedding_store: - default: - backend: local - as_embedding: default - - as_llm: - default: - backend: ${LLM_BACKEND:-openai} - model: ${LLM_MODEL_NAME:-qwen3.7-plus} - stream: true - context_size: 200000 - max_retries: 3 - credential: - api_key: ${LLM_API_KEY:-} - base_url: ${LLM_BASE_URL:-} - parameters: - max_tokens: 65536 - thinking_enable: false - - agent_wrapper: - default: - backend: agentscope - as_llm: default - permission_mode: bypass - react_config: - max_iters: 30 - context_config: - trigger_ratio: 0.8 - reserve_ratio: 0.1 - tool_result_limit: 50000 - model_config: - max_retries: 1 - claude_code: - backend: claude_code - model: ${CLAUDE_CODE_MODEL_NAME:-glm-5.1} - api_key: ${CLAUDE_CODE_API_KEY:-} - base_url: ${CLAUDE_CODE_BASE_URL:-https://dashscope.aliyuncs.com/apps/anthropic} - permission_mode: bypassPermissions - - file_graph: - default: - backend: local - - file_catalog: - default: - backend: local - resource: - backend: local - digest: - backend: local - dream: - backend: local - - file_chunker: - markdown: - backend: markdown - supported_extensions: [ "md" ] - default: - backend: default - supported_extensions: [ "jsonl" ] - - keyword_index: - default: - backend: bm25 - tokenizer: default - - file_store: - default: - backend: local - store_name: local - # embedding_store: default - embedding_store: "" - keyword_index: default - file_graph: default