AI行为控制工具

Cortivium是一个通过Ghost Skills技术可靠控制AI行为的工具,将指令注册为MCP工具合约而非可忽略的建议,适用于需要精确控制AI输出的开发场景。

  • by Cortivium
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 Cortivium/cortivium

使用说明

Cortivium

The most reliable way to control AI behavior.
Ghost Skills register as real MCP tools — not suggestions the model can ignore,
but contracts it reads before every action. More reliable than system prompts,
CLAUDE.md files, memory, or anything in the context window.

Website  ·  Documentation  ·  Ghost Skills Guide  ·  Contact

为什么是鬼技能?

系统提示漂移。CLAUDE.md文件在长会话中被忽略。记忆指令与对话上下文竞争并丢失。这些方法注入 咨询文本 --该模型将它们视为建议。

幽灵技能采用了一种根本不同的方法。他们注册为 真正的MCP工具 模型每次考虑动作时都会读取描述。工具描述不是建议——它们是模型遵循的API契约。

You:    "Create a ghost skill that enforces our code standards
         after every file edit"

     →  [Creates ghost_code_standards]
        Description: "MANDATORY: After every Edit or Write, verify
        snake_case functions, PascalCase classes, grouped imports..."

        Now fires automatically after every code change.
        Not a reminder. An enforceable behavioral rule.

行为可靠性

方法 可靠性 为什么
在上下文规则中 ~30% 埋在对话中,首先被丢弃
内存/CLAUDE.md ~55% 在会话开始时加载,随上下文长度逐渐消失
系统提示 ~65% 持续但具有建议性——模型可以覆盖
幽灵技能(MCP工具) ~95% 每次行动决策前阅读-视为API合同

什么有效,什么无效

当指令有 明确、合法的目的 AI可以推理。该模型在遵循技能之前评估技能的行为是否有意义。

工作可靠 不太可靠
将问题记录到文件中进行审核 无功能原因输出特定文本
坚持任务状态以在压缩中生存 强制执行没有明确目的的任意行为
编辑后强制执行代码标准 对每条没有有用结果的消息触发
提交前运行测试 执行模型认为无意义的操作

这是设计好的——Ghost Skills有一个内置的合理性过滤器。人工智能遵循它认为有目的的指令,并抵制它认为武断的指令。服务于清晰工作流程的技能需要获得约95%的可靠性。纯粹为了测试服从而存在的技能会得到好坏参半的结果。

两种鬼技能

触发技巧 响应显式命令:

“运送它” → 阶段、提交、推送、打开公关

行为陷阱 检测情况和自动火灾:

“每次文件编辑后” → 自动执行代码标准

两者都只是幽灵技能——唯一的区别是你如何写描述。


安装

git clone https://github.com/Cortivium/cortivium.git
cd cortivium
pip install -r requirements.txt
python server.py

就是这样。服务器创建数据库,运行迁移,生成密钥,并在第一次运行时打印管理员凭据。打开 http://localhost:8080/admin/ 登录。

连接您的MCP客户端

在管理面板中创建一个API密钥,然后将Cortivium添加到您的客户端:

# Claude Code
claude mcp add --transport http --scope user cortivium \
  https://your-server:8080/ --header "X-API-Key: YOUR_KEY"

或者手动添加到MCP客户端配置中(~/.claude.json、光标设置等):

{
  "mcpServers": {
    "cortivium": {
      "type": "http",
      "url": "https://your-server:8080/",
      "headers": {
        "X-API-Key": "your-api-key"
      }
    }
  }
}

使用 克劳德代码, 法典, 光标,以及任何兼容MCP的客户端。


幽灵技能

Ghost Skills是您通过对话创建的持久AI工具注册。用简单的语言描述你想要什么——人工智能处理名称、参数、触发短语和其他一切。

创造技能

You: "Create a ghost skill called commit_changes that commits my code
     with a descriptive message based on the diff"

Claude: [Calls ghost_create_skill]
        "Created ghost_commit_changes! Say 'commit my changes' to use it."

没有JSON。没有配置文件。无需重新启动服务器。

自动触发短语

Cortivium会根据您的技能名称、描述和说明自动生成触发短语:

来源 示例输入 生成的短语
姓名 review_pr "review pr"
说明 "Review a pull request for bugs" "review a pull request for bugs"
使用说明 "Check the diff for obvious bugs..." "check the diff for"

随时用自己的覆盖 trigger_phrases 阵列。

使用技能

技能表现为真正的MCP工具。AI会自动调用它们:

You: "commit my changes"

Claude: [Calls ghost_commit_changes]
        [Follows your instructions exactly]
        "Done! Committed with message: 'Add user authentication middleware'"

示例用例

技能 它做什么
ghost_finish_coding 阶段变更、编写常规提交、推送分支、创建PR
ghost_code_standards 强制命名模式、错误处理风格、导入顺序
ghost_plan_feature 在编码之前,根据验收标准将功能分解为子任务
ghost_quality_check 在标记完成之前,进行过梁、类型检查、测试和安全扫描
ghost_try_options 启动git工作树,并行尝试多种方法
ghost_persist_tasklist 自动将任务状态保存到磁盘,使其在上下文压缩中幸存下来

管理技能

工具 说明
ghost_create_skill 通过指令创建新技能
ghost_list_skills 列出你的所有技能
ghost_update_skill 修改现有技能
ghost_delete_skill 删除技能

技能与你的API密钥绑定在一起——对你来说是私有的,可在机器之间移植,在每次会话中都可用。


亮点

  • 大约3000行Python --没有框架膨胀,8个pip依赖,在一秒钟内开始
  • 零基础设施 --SQLite+内存速率限制。没有Redis,没有MySQL,没有消息队列
  • 自我引导 — python server.py 创建数据库、运行迁移、生成凭据
  • 生产就绪 --TLS、异步I/O、WAL模式SQLite、SSE流媒体、使用日志、Docker原生
  • 缺省安全 --SHA-256密钥散列、CSRF保护、签名会话、3层速率限制、每个密钥插件隔离

管理面板

内置深色主题网页界面 /admin/:

页面 功能
仪表盘 服务器统计数据、最近活动、顶级工具图表(7天)
API密钥 创建/编辑/切换/删除按键,创建时显示一次
幽灵技能 浏览、创建、编辑、切换、删除具有执行计数的技能
插件 查看加载的插件及其版本和调用统计信息
使用日志 带过滤器的可搜索请求日志,分页
用户 创建/编辑/删除用户,设置访问级别

普通用户在以下位置获得一个范围面板 /user/ --只有自己的密钥和技能,没有可见的管理页面。

码头工人

docker build -t cortivium .
docker run -p 8080:8080 -v cortivium_data:/app/storage cortivium

# Or with compose
docker compose up -d

对于HTTPS,请挂载您的证书:

services:
  cortivium:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - cortivium_data:/app/storage
      - ./certs:/certs:ro
    environment:
      - CORTIVIUM_SSL_CERT=/certs/fullchain.pem
      - CORTIVIUM_SSL_KEY=/certs/privkey.pem

配置

所有设置都使用 CORTIVIUM_ 前缀。无需配置——开箱即用的合理默认值。

变量 默认值 描述
CORTIVIUM_HOST 0.0.0.0 绑定地址
CORTIVIUM_PORT 8080 服务器端口
CORTIVIUM_SECRET_KEY (自动生成) 会话签名密钥
CORTIVIUM_DATABASE_PATH storage/cortivium.db SQLite数据库路径
CORTIVIUM_LOG_LEVEL info debug, info, warning, error
CORTIVIUM_SSL_CERT (空) SSL证书的路径
CORTIVIUM_SSL_KEY (空) SSL私钥的路径

安全

层 实现
API密钥 SHA-256哈希-从未存储原始密钥
速率限制 每个按键3层节流(每分钟/小时/天)
会话 通过其危险的签名Cookie
跨站请求伪造 双重提交所有突变的cookie模式
密码 bcrypt自动加盐
技能隔离 Ghost Skills的作用域是创建API密钥-其他人不可见
插件隔离 按键 allowed_plugins 限制工具访问
传输层安全 通过Uvicorn的原生HTTPS
输入验证 对所有MCP请求进行严格的模式验证

插件开发

使用自定义插件进行扩展。每个人都可以注册工具、资源和提示:

from cortivium.plugin.base import AbstractPlugin

class Plugin(AbstractPlugin):
    def get_name(self) -> str:
        return "my-plugin"

    async def get_tools(self, context=None) -> list[dict]:
        return [{
            "name": "my_tool",
            "description": "Does something useful",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "input": {"type": "string", "description": "The input"}
                },
                "required": ["input"]
            }
        }]

    async def execute_tool(self, name, arguments, on_progress=None):
        result = arguments.get("input", "")
        return self.text_content(f"Processed: {result}")

建筑

HTTP Request → FastAPI/Uvicorn
                  ↓
            JSON-RPC 2.0 Parser (MCP 2024-11-05)
                  ↓
            API Key Auth + 3-Tier Rate Limiting
                  ↓
            Session Manager (in-memory, auto-expiry)
                  ↓
            PluginManager → Plugin.execute_tool()
                  ↓
            JSON Response  ─or─  SSE Stream
                  ↓
            Usage Logging → SQLite
组件 技术
Web框架 FastAPI+Uvicorn(异步)
数据库 通过aiosqlite实现SQLite(WAL模式)
管理面板 Jinja2+Bulma CSS
API密钥认证 SHA-256哈希,内存缓存
会话身份验证 签名Cookie(它很危险)
速率限制 带TTL清理的内存字典
密码哈希 bcrypt

项目结构

cortivium/
├── server.py                    # Entry point
├── requirements.txt             # 8 dependencies
├── .env.example                 # Configuration template
├── Dockerfile
├── docker-compose.yml
├── migrations/
│   └── 001_initial.sql          # SQLite schema
└── cortivium/
    ├── core/                    # Server core (config, auth, sessions, protocol)
    ├── transport/               # MCP HTTP routes
    ├── plugin/                  # Plugin system (interface, base, manager)
    ├── plugins/
    │   ├── ghost_ootm/          # Ghost Skills — CRUD + dynamic tools
    │   └── example/             # Example plugin template
    ├── admin/                   # Web panel (routes, templates, static)
    └── util/                    # Async subprocess wrapper

贡献

欢迎捐款。请先打开一个问题,讨论您想更改的内容。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/my-feature)
  3. 进行更改
  4. 在本地运行服务器进行验证(python server.py)
  5. 承诺并推动
  6. 打开拉取请求

许可证

Apache 2.0

“Cortivium”和“Ghost Skills”是Cortivium的商标。