DeepSeek Harness Hub
← 返回列表

rxa3c/chat2skill

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

从你的助手对话中自动学习可复用的技能和项目记忆。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/27 · 已提供中文文档

从与AI的日常对话中提取并迭代技能

综合分
29.9
GitHub 分
29.9
用户评分
★ Stars
3
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add rxa3c/chat2skill
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-settings@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

Chat2Skill

从你的助手对话中自动学习可复用的技能和项目记忆。

每次会话结束后,Chat2Skill 会分析对话中的纠正、偏好、约束和项目事实,将其提炼为本地记忆和 SKILL.md 文件,并将相关内容注入到你未来的会话中。它与领域无关:编码工作流是一等集成目标,而同样的机制也适用于支持、研究、写作、运营、销售、教育以及其他能够产生可用对话记录并产出可用记录的助手领域。

与 Claude Code、Codex 和 Cursor 配合效果最佳。其他代理在支持生命周期钩子或能够运行随附的 CLI 脚本时,也可以使用 Chat2Skill。

该算法产出什么

Chat2Skill 将可复用的项目上下文提取到两个存储中:

- 原子化技能:聚焦的 SKILL.md 文件,针对某一交互偏好、流程、约束、成功模式或失败模式。
- 项目记忆:项目事实、决策、流程和警告,存储在本地 SQLite 数据库中并动态检索。
- 项目技能:一个合成的 PROJECT_SKILL.md,将活跃的原子化技能合并为一个紧凑的项目级指令文件,供人工审查和响应防护策略使用。

技能并不是用来记住某一次对话记录的。它捕捉的是一种可泛化的行为,这种行为会在类似情境中改变未来的助手行为。

核心概念

| 概念 | 含义 |
| --- | --- |
| 对话 | 某个会话中最近的助手/用户消息。长会话会被裁剪到最新的分析窗口。 |
| 信号 | 表明应该学习某些内容的证据:纠正、明确约束、负面反馈或稳定的行为偏好。 |
| 分析 | 对哪里出错或哪里有效的结构化诊断,包括失败类型、根本原因、置信度和建议行动。 |
| 提案 | 针对技能候选的创建/编辑/丢弃决策。 |
| 记忆项 | 在具体化为技能之前提取的证据,例如失败原因、失败记忆、成功或约束。 |
| 技能 | 一个经过验证、可执行的 SKILL.md,带有元数据,例如置信度、证据数量、语言、回放分数和状态。 |
| 响应防护 | 可选的前置元数据策略,用于硬性措辞约束,例如基于证据的确定性措辞。 |

学习循环

+---------------------------------------------------------+
| 1. 检索相关的项目记忆和活跃技能                          |
+---------------------------+-----------------------------+
|
v
+---------------------------------------------------------+
| 2. 将检索到的项目记忆 + 技能注入提示词                   |
+---------------------------+-----------------------------+
|
v
+---------------------------------------------------------+
| 3. 助手工作;用户接受、纠正或约束                        |
+---------------------------+-----------------------------+
|
v
+---------------------------------------------------------+
| 4. 在会话结束时提取学习信号                               |
+---------------------------+-----------------------------+
|
v
+---------------------------------------------------------+
| 5. 创建 / 编辑 / 丢弃原子化技能候选                       |
+---------------------------+-----------------------------+
|
v
+---------------------------------------------------------+
| 6. 验证、重放、合并并存储活跃技能                         |
+---------------------------+-----------------------------+
|
v
+---------------------------------------------------------+
| 7. 重建 PROJECT_SKILL.md 并更新本地 profile              |
+---------------------------+-----------------------------+
|
+------------- 返回步骤 1

该算法是一个反馈循环,而非一次性工作流。每个已完成的会话都可能改变项目记忆和技能库;下一个会话会从这些更新后的本地存储中检索;后续的用户反馈会强化、编辑、拒绝或淘汰先前的上下文。

循环内部仍然只有一次提取过程。该过程为:

recent conversation + existing skills + profile
-> detect signals
-> analyze root cause
-> propose create/edit/discard
-> generate SKILL.md
-> quality gate
-> judge
-> optional replay
-> active/rejected/no-action result

LLM 路径使用 Proposer、Generator 和 Judge 风格的阶段。当没有可用的 LLM 时,循环仍会通过关键词检测和基于模板的生成来运行。

循环层次

Chat2Skill 有三个嵌套循环:

1. 会话学习循环:工作前检索技能,工作中观察用户反馈,工作后提取或更新技能,然后下次使用更新后的技能库。
2. 候选精炼循环:如果 judge 拒绝了生成的技能,则将 judge 指出的弱点反馈到生成过程中,并最多重试两次。
3. 维护循环:根据利用率、重放有效性、新近度和重叠度对活跃技能进行评分;合并近似重复项并归档旧的弱技能,而不是让提示词无限增长。

工作原理

your machine                                Chat2Skill cloud
─────────────────────────────────────       ─────────────────────────
Stop hook ──► response guard ──► continue on violation
│
└────► queue ──► worker ─────────────► POST /v1/extract
│                 (stateless algorithm,
~/.chat2skill/ ◄───────┘                  your own LLM credential)
skills + profile + history     ◄──────── skill + profile + replay
POST /v1/project-skill
UserPromptSubmit hook ◄── 本地检索   (项目技能 + 详细技能)

- 你的数据保留在本地。 技能、配置文件和历史记录存放在
~/.chat2skill/(SQLite + markdown 文件)。云端以无状态方式运行
提取算法,不存储任何内容。
- 自带凭证。 提取 LLM 调用支持 API key 或由宿主获取的
短期 OAuth bearer token。凭证随每个请求发送,仅在内存中使用,
绝不会在服务端持久化或记录日志。没有可用凭证时,服务器会回退到
质量较低的启发式方法。
- 响应守卫。 当项目技能包含高置信度的确定性措辞约束时,
Stop hook 会在本地检查最终助手消息。学到的规则基于证据:
已验证的事实必须使用确定性措辞;证据缺口必须指明缺失的源材料、
数据、记录、文档、日志、测试、命令输出或代码,以及下一步
验证步骤。守卫只读取显式的 response_guard frontmatter,
绝不读取散文示例或代码标识符。默认守卫模式为
strict:每次违规都会被继续以进行纠正。设置
CHAT2SKILL_RESPONSE_GUARD=false 可禁用守卫。
- 成本。 一次典型提取会在你的 key 上进行约 4 次 LLM 调用
(检测、分析、生成、评判);针对你的历史记录进行回放验证
最多再增加 5 次。对话会被窗口化(最近约 40 条
消息),因此长会话也能保持低成本。提取仅在检测到
纠正/约束信号时触发,而不是在每个会话中触发。

安装

1. 安装插件

普通用户应从其 agent 的插件市场安装 Chat2Skill。
不要仅仅为了运行 scripts/chat2skill_init.py 而克隆此仓库。

Codex:

codex plugin marketplace add rxacc/chat2skill
codex

然后打开 /plugins,选择 chat2skill 市场,并安装
chat2skill。

Claude Code:

claude plugin marketplace add https://github.com/rxacc/chat2skill
claude plugin install chat2skill@chat2skill

Cursor:

打开 Settings -> Plugins,粘贴此仓库 URL,并安装
Chat2Skill 插件。

Chat2Skill hooks 会运行 Python 代码,因此运行 agent 的机器必须
有可用的 Python 3,命令为 python3、python 或 py -3。如果缺少
Python,插件将无法初始化本地存储或运行检索/学习。

插件安装并受信任后,首次 hook 运行会初始化
本地数据目录:

- macOS/Linux:~/.chat2skill/
- Windows:%USERPROFILE%\.chat2skill\

初始化会创建配置文件、SQLite 数据库和技能
目录:

- config.json
- c2s.db
- skills/

2. 配置本地设置

编辑在本地数据目录下创建的配置文件。Chat2Skill 会调用
无状态 learn API 进行提取,并存储返回的项目记忆,
对话、技能和配置文件位于 ~/.chat2skill/c2s.db。提示检索在该数据库本地运行,并且始终注入检索到的项目记忆以及相关技能。渲染后的技能文件保存在 ~/.chat2skill/skills/ 下。

如果你从源代码检出进行开发,或手动使用 CLI 脚本,你可以自行初始化相同的本地数据目录:

python3 scripts/chat2skill_init.py

在 Windows 上从源代码检出:

python .\scripts\chat2skill_init.py

从源代码检出时,手动设置是等效的:

mkdir -p ~/.chat2skill
cp config.example.json ~/.chat2skill/config.json
edit ~/.chat2skill/config.json: set api_url and an llm credential

如果没有源代码检出,请使用下面的某个 JSON 示例自行创建相同的配置文件。

对于 OpenAI 兼容模型,像这样编写 ~/.chat2skill/config.json:

{
"api_url": "https://api.chat2skill.com",
"user_id": "alice",
"memory": {
"target_model": "generic",
"token_budget": 4000,
"memory_ratio": 0.6,
"skill_top_k": 6,
"prompt_memory_top_k": 12,
"prompt_memory_min_score": 0.3,
"prompt_skill_min_score": 0.2,
"learn_memory_top_k": 40,
"learn_skill_top_k": 20
},
"llm": {
"api_key": "your-openai-compatible-api-key",
"provider": "openai",
"base_url": null,
"model": "gpt-4.1"
},
"embedding": {
"provider": "local_transformers",
"model": "Snowflake/snowflake-arctic-embed-xs",
"dimensions": 384
}
}

对于 DeepSeek,像这样编写 ~/.chat2skill/config.json:

{
"api_url": "https://api.chat2skill.com",
"user_id": "alice",
"memory": {
"target_model": "generic",
"token_budget": 4000,
"memory_ratio": 0.6,
"skill_top_k": 6,
"prompt_memory_top_k": 12,
"learn_memory_top_k": 40,
"learn_skill_top_k": 20
},
"llm": {
"api_key": "your-deepseek-api-key",
"provider": "openai",
"base_url": "https://api.deepseek.com",
"model": "deepseek-chat"
},
"embedding": {
"provider": "local_transformers",
"model": "Snowflake/snowflake-arctic-embed-xs",
"dimensions": 384
}
}

对于 Anthropic,请使用原生 provider 适配器,而不是 Anthropic 的 OpenAI 兼容层:

{
"api_url": "https://api.chat2skill.com",
"user_id": "alice",
"llm": {
"api_key": "your-anthropic-api-key",
"provider": "anthropic",
"base_url": "https://api.anthropic.com/v1/",
"model": "claude-sonnet-5"
},
"embedding": {
"provider": "local_transformers",
"model": "Snowflake/snowflake-arctic-embed-xs",
"dimensions": 384
}
}

对于尚未包含 llm.provider 的旧配置,服务器还会从 api.anthropic.com 基础 URL 推断出 anthropic。

对于启用了 OAuth 的 LLM,请将实际的访问令牌放入 llm.access_token:

{
"llm": {
"access_token": "paste-your-oauth-token-here",
"provider": "anthropic",
"base_url": "https://api.anthropic.com/v1/",
"model": "claude-sonnet-5"
}
}

内联值会在环境变量和令牌文件之前被检查,因此不需要环境变量。auth_type: "oauth" 仍然可以显式接受。access_token_env 和 llm.access_token_file 仍作为兼容性回退保留;每次调用钩子时都会读取该文件,因此主机管理的令牌刷新会被获取到。Chat2Skill 不实现特定于提供商的浏览器登录或存储刷新令牌。

Claude Code 正确的 OAuth 命令是 claude setup-token。它会引导完成 OAuth 授权并打印一个有效期为一年的 CLAUDE_CODE_OAUTH_TOKEN;它不会保存该令牌。然而,Chat2Skill 的默认架构会将 llm.access_token 发送到远程 api_url,因此不得将 Claude 订阅令牌粘贴到此配置中以进行远程提取。Anthropic 将这些令牌记录为用于 Claude Code 和原生 Anthropic 应用程序,并禁止第三方服务代表用户路由 Claude 订阅凭据。请使用 Anthropic Console API 密钥或经批准的工作负载身份进行远程 Chat2Skill 提取。需要本地 Claude Code/Agent SDK 适配器才能将订阅令牌保留在主机上。

有关 claude setup-token,请参阅 Claude Code 身份验证指南,以及凭据使用政策。

对于 OpenAI/Codex,提供商登录方式为:

Browser OAuth flow.
codex login

Headless/device-code OAuth flow.
codex login --device-auth

Verify the active mode.
codex login status

Codex 会在本地 ~/.codex/auth.json 中存储并刷新其 ChatGPT 凭据。不要将该文件或其令牌复制到 Chat2Skill 的远程 llm.access_token 字段中。ChatGPT 管理的 Codex OAuth 用于 Codex 账户使用,而远程提取器使用的 OpenAI Platform API 路径则使用 OpenAI API 密钥。需要本地 Codex 适配器才能在不将凭据转发到 api.chat2skill.com 的情况下使用前者。

对于远程 OpenAI 兼容的嵌入端点,请将 embedding 块替换为:

{
"embedding": {
"api_key": "your-embedding-api-key",
"base_url": "http://127.0.0.1:8080/v1",
"model": "BAAI/bge-large-en-v1.5"
}
}

以下是等效的环境变量。只有在您偏好 shell 配置或需要覆盖 JSON 文件时,才需要环境变量。

本地管理界面

Chat2Skill 包含一个仅限本地的管理页面,用于查看和管理已存储的项目记忆和技能。本节适用于源代码检出或手动 CLI 用户;普通插件安装不需要运行此服务器。

在 macOS、Linux 或 WSL 上从源代码检出运行:

python3 scripts/chat2skill_admin.py

在 Windows PowerShell 上从源代码检出运行:

python .\scripts\chat2skill_admin.py
从已安装的 Codex 插件开始,每个系统都必须先进入已安装的插件目录。该路径包含市场名称、插件名称和版本。

macOS、Linux 或 WSL 已安装插件:

cd ~/.codex/plugins/cache/chat2skill/chat2skill/
python3 scripts/chat2skill_admin.py

Windows PowerShell 已安装插件:

cd "$env:USERPROFILE\.codex\plugins\cache\chat2skill\chat2skill\"
python .\scripts\chat2skill_admin.py

该命令会在需要时初始化 .chat2skill,打印一次性 URL,例如
http://127.0.0.1:8765/?token=...,并默认在浏览器中打开它。
如果浏览器没有打开,请准确复制打印出的 URL;token 是必需的。

有用的选项:

python3 scripts/chat2skill_admin.py --port 8766
python3 scripts/chat2skill_admin.py --no-open

管理服务器默认绑定到 127.0.0.1,并且只读取/写入本地的
~/.chat2skill/c2s.db 数据库。它可以:

- 列出从本地数据库发现的 Chat2Skill 项目
- 查看并重建项目级 PROJECT_SKILL.md
- 搜索、编辑、归档、激活和删除原子化技能
- 搜索、编辑、归档、激活和删除项目记忆
- 检查用于当前项目技能版本的源技能快照

对于前端开发,请单独运行 Vite shell:

cd admin/frontend
npm install
npm run dev

在使用 Vite 开发服务器时,请保持 Python 管理服务器运行在 127.0.0.1:8765 上;Vite 会将 /api 请求代理到 Python 后端。

| 环境变量 | JSON 键 | 默认值 | 描述 |
| --- | --- | --- | --- |
| CHAT2SKILL_API_URL | api_url | https://api.chat2skill.com | 用于无状态 learn/extract 调用的 Chat2Skill API 端点。 |
| CHAT2SKILL_MEMORY_TARGET_MODEL | memory.target_model | generic | 为 API 兼容负载保留的渲染器目标。 |
| CHAT2SKILL_MEMORY_TOKEN_BUDGET | memory.token_budget | 4000 | 记忆加技能的总提示注入 token 预算。 |
| CHAT2SKILL_MEMORY_MEMORY_RATIO | memory.memory_ratio | 0.6 | 初始分配给记忆的检索预算比例。 |
| CHAT2SKILL_MEMORY_SKILL_TOP_K | memory.skill_top_k | 6 | 本地提示检索注入的最大详细技能数。 |
| OPENAI_API_KEY | llm.api_key | 未设置 | 你的 OpenAI 兼容 LLM API 密钥。 |
| OPENAI_BASE_URL | llm.base_url | null | 可选的 OpenAI 兼容基础 URL。OpenAI 使用 null;DeepSeek 使用 https://api.deepseek.com。 |
| CHAT2SKILL_LLM_AUTH_TYPE | llm.auth_type | api_key | 设置为 oauth 以发送 OAuth bearer token 而不是 API 密钥。 |
| CHAT2SKILL_LLM_ACCESS_TOKEN | llm.access_token | 未设置 | 可选的 OAuth bearer-token 回退。会先检查内联的 llm.access_token。 |
| CHAT2SKILL_LLM_ACCESS_TOKEN_FILE | llm.access_token_file | 未设置 | 由主机管理的 JSON 或文本文件,包含当前 OAuth 访问 token。 |
| CHAT2SKILL_LLM_ACCESS_TOKEN_FIELD | llm.access_token_field | access_token | 读取 CHAT2SKILL_LLM_ACCESS_TOKEN_FILE 时使用的点分隔 JSON 字段。 |
| CHAT2SKILL_LLM_PROVIDER | llm.provider | inferred | 聊天提供商。支持的值为 openai 和 anthropic。 |
| CHAT2SKILL_MODEL | llm.model | gpt-4.1 | 用于 detect/analyze/generate/judge 调用的模型。 |
| CHAT2SKILL_USER_ID | user_id | system username | 本地技能和配置文件数据的基础命名空间。项目特定技能使用 __project__。 |
| CHAT2SKILL_RESPONSE_GUARD | unset | strict | 停止响应防护模式。true 启用严格阻止;false 禁用它。高级模式为 adaptive、block-once、warn-only 和 off。结构化 response_guard.mode: evidence_based_terms 允许显式披露证据缺口,同时仍然阻止不支持的模糊措辞。 |

代理说明:Claude Code

对于本地开发,为单个会话加载插件:

claude --plugin-dir ~/plugins/chat2skill

Claude Code 从根目录的 hooks/hooks.json 入口点安装钩子。特定于宿主的副本也保留在 hooks/claude-hooks.json,并且 ${CLAUDE_PLUGIN_ROOT} 会解析为已安装的插件目录——无需设置路径。

代理说明:Codex

Codex 从根目录的 hooks/hooks.json 入口点安装钩子。特定于宿主的副本也保留在 hooks/codex-hooks.json。Codex 安装会注册可配置的阻止 Stop 响应防护。钩子入口点在首次运行钩子时初始化本地数据主目录:

- macOS/Linux:~/.chat2skill/
- Windows:%USERPROFILE%\.chat2skill\

对于本地开发或手动生成钩子:

git clone https://github.com/rxacc/chat2skill.git ~/plugins/chat2skill
cd ~/plugins/chat2skill && ./install.sh

install.sh 会使用特定于代理的钩子文件刷新已知的本地插件缓存目录,并在配置文件缺失时创建它。

代理说明:Cursor

Cursor 通过 .cursor-plugin/plugin.json 支持原生插件。

在 Cursor 中:

1. 打开 Settings -> Plugins。
2. 将此仓库 URL 粘贴到 Search or Paste Link:

https://github.com/rxacc/chat2skill

Cursor 插件使用:

- .cursor-plugin/hooks.json 用于 Cursor 格式的钩子。
- ${CURSOR_PLUGIN_ROOT} 用于已安装插件路径。
- .cursor/rules/chat2skill.mdc 作为始终启用的项目规则。
- sessionStart 在 Cursor 接受钩子上下文时提供当前项目技能。
- stop 从 ~/.cursor/projects/*/agent-transcripts/ 下最新的 Cursor 代理记录中学习。

重要的 Cursor 限制:Cursor 插件确实支持钩子和技能,但 Cursor 的 beforeSubmitPrompt 钩子目前无法将动态的逐提示上下文注入模型。对于 Cursor 中针对提示的检索,请使用 chat2skill 技能。从源代码检出中,你也可以运行:

python3 scripts/retrieve_for_prompt.py "your current task"

代理说明:OpenCode
从本仓库的检出副本运行 OpenCode。opencode.json 会加载
.opencode/plugins/chat2skill.mjs,它调用相同的检索 CLI,并将相关片段
添加到系统提示中。

{ "plugin": ["./.opencode/plugins/chat2skill.mjs"] }

智能体说明:DeepSeek Harness

仓库根目录同时也是一个 DeepSeek Harness 包。将其添加到你运行的配置文件中:

dsh plugin --profile headless add /Users/sac/Desktop/Dev/Chat2Skill
dsh --profile headless

该适配器使用 Harness 的 agent/pre-step 进行检索,并使用
agent/turn-stopping 实现共享的响应守卫和学习。它调用现有的本地 Python 运行时,
因此算法项目及其 API 无需为此集成做任何更改。有关环境变量覆盖,
请参阅 adapters/deepseek-harness/README.md。

智能体说明:其他智能体

对于从源码检出副本进行的手动集成,请将支持钩子的智能体指向:
- prompt-submit:python3 /scripts/hook_user_prompt_submit.py
- session-end learning:python3 /scripts/hook_stop.py
- session-end response guard:python3 /scripts/hook_stop_response_guard.py

没有钩子?从源码检出副本,使用这些 CLI:

after a session: learn from the newest transcript
python3 scripts/update_from_transcript.py --latest

before a task: print a prompt snippet with relevant skills
python3 scripts/retrieve_for_prompt.py "refactor the auth module"

对于仅支持仓库指令的智能体,请复制或保留匹配的适配器文件:

- Cursor:.cursor/rules/chat2skill.mdc
- Windsurf/Cascade:.windsurf/rules/chat2skill.md
- Cline:.clinerules/chat2skill.md
- GitHub Copilot:.github/copilot-instructions.md
- Kiro:.kiro/steering/chat2skill.md
- 通用智能体/Aider:AGENTS.md

智能体支持

Chat2Skill 需要两项能力才能实现完整的自动循环:

- 会话后学习: 一个 stop/session-end 钩子,可以运行
scripts/hook_stop.py。
- 工作前检索: 一个 prompt/session-start 钩子或技能工作流,
可以注入或加载 scripts/retrieve_for_prompt.py 的输出。
- 强制执行硬性措辞规则: 一个 stop/session-end 钩子,可以访问
最终助手消息并运行 scripts/hook_stop_response_guard.py。
默认的 strict 模式会继续处理每一次违规以进行纠正;
CHAT2SKILL_RESPONSE_GUARD=false 可将其禁用。基于证据的规则
区分已验证的结论与缺失证据的披露。

该仓库目前为 Claude Code、Codex、Cursor 和 DeepSeek Harness 提供了原生的
最终响应守卫注册。下面的其他适配器是部分的:仅凭一条规则、
检索插件或手动 CLI 路径本身并不能提供最终响应拦截。

| 智能体 | 当前支持 | 备注 |
| --- | --- | --- |
| Claude Code | 原生插件市场 | 通过 .claude-plugin/marketplace.json、根目录 hooks/hooks.json、hooks/claude-hooks.json、chat2skill 技能、UserPromptSubmit、Stop 学习和 Stop 响应防护,提供全自动支持。 |
| Codex | 原生插件/本地安装器 | 通过 .codex-plugin/plugin.json、根目录 hooks/hooks.json、hooks/codex-hooks.json 实现自动检索、Stop 学习和可配置的 Stop 响应防护,并通过 install.sh 实现本地缓存刷新。 |
| DeepSeek Harness | 原生 Cordis 捆绑包 | 使用 dsh plugin --profile  add  添加 Chat2Skill 仓库根目录。该适配器使用 agent/pre-step 进行检索,使用 agent/turn-stopping 实现共享防护和学习,并使用当前 Chat2Skill 算法 API,无需更改算法项目。 |
| Cursor | 原生插件 + 项目规则 | 通过 .cursor-plugin/plugin.json、.cursor-plugin/hooks.json、.cursor/rules/chat2skill.mdc 和 chat2skill 技能提供支持。Stop 学习可从 Cursor 转录记录中工作,当 Cursor 提供最终响应文本时,响应防护会运行。动态的逐提示上下文注入受 Cursor 当前 beforeSubmitPrompt 钩子行为的限制。 |
| OpenCode | 服务器插件 + 命令 | opencode.json 加载 .opencode/plugins/chat2skill.mjs,该文件调用 retrieve_for_prompt.py 并将相关片段追加到系统提示中。未注册最终响应防护。 |
| GitHub Copilot | 仓库指令 | .github/copilot-instructions.md 提供 CLI 工作流。未注册最终响应防护。 |
| Kimi Code CLI | 技能/手动钩子 | 该项目不附带原生 Kimi 钩子清单。手动钩子配置可以调用共享脚本。 |
| Windsurf / Cascade | 项目规则 | .windsurf/rules/chat2skill.md 仅提供指令。未注册最终响应防护。 |
| Kiro | 引导规则 | .kiro/steering/chat2skill.md 仅提供指令。未注册最终响应防护。 |
| Cline | 项目规则 | .clinerules/chat2skill.md 仅提供指令。未注册最终响应防护。 |
| Aider / 通用代理 | AGENTS.md | AGENTS.md 为读取仓库指南的代理提供可移植指令。 |
| Gemini CLI | 手动集成 | 不包含专用扩展清单和最终响应防护注册。 |
| Google Antigravity | 手动集成 | 不包含专用插件清单和最终响应防护注册。 |
| Continue | 手动/部分 | 规则、提示和 MCP 很有用,但不包含用于完整 Chat2Skill 循环的经过验证的生命周期钩子路径。 |
| Roo Code | 手动/旧版 | 除非你的本地分支暴露了兼容的钩子,否则仅使用 CLI 脚本。 |

完整的适配器映射请参见 docs/agent-portability.md。

要求

- Python 3.10+(仅标准库——无需 pip 安装)
- Node.js + npm,用于通过 Snowflake/snowflake-arctic-embed-xs 实现可选的本地嵌入
- 一个 Chat2Skill API 端点(配置中的 api_url)
- 可选:用于高质量提取的 API 密钥或 OAuth 持有者令牌

数据布局

~/.chat2skill/
├── config.json                  # 端点 + 你的 LLM 凭据
├── c2s.db                       # 对话、技能、project_skills、profile、项目记忆
├── skills///SKILL.md
├── skills//PROJECT_SKILL.md   # 人类可读的项目技能和响应防护输入
└── hook-events.log

技能按项目命名空间划分(__project__),因此你在一个仓库中学到的内容不会泄漏到另一个仓库。

隐私

- Stop 钩子转录内容会发送到 Chat2Skill API 进行无状态分析,在内存中处理,并且不会在服务器端持久化。服务器日志仅包含元数据(会话 ID、错误类型)——绝不包含消息内容、API 密钥或 OAuth 访问令牌。
- 提示检索不会调用云端 API。它会从本地 ~/.chat2skill/c2s.db 加载前 K 个项目记忆和技能,应用配置的预算,并将压缩后的结果注入提示中。
- 代理系统提示、环境横幅和工具噪声会在上传前于本地剥离(参见 scripts/chat2skill/transcripts.py)。
- 要停止所有上传,请移除 Stop 钩子或取消设置 api_url。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群