ccc-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccc_mcp-0.1.0/.env.example +7 -0
- ccc_mcp-0.1.0/.github/workflows/release.yaml +154 -0
- ccc_mcp-0.1.0/.gitignore +14 -0
- ccc_mcp-0.1.0/LICENSE +21 -0
- ccc_mcp-0.1.0/PKG-INFO +157 -0
- ccc_mcp-0.1.0/README.md +120 -0
- ccc_mcp-0.1.0/README_ZH.md +121 -0
- ccc_mcp-0.1.0/VALIDATION.md +143 -0
- ccc_mcp-0.1.0/docs/ch/1-install-and-sign-in.md +148 -0
- ccc_mcp-0.1.0/docs/ch/10-technical-reference.md +214 -0
- ccc_mcp-0.1.0/docs/ch/11-architecture-spec.md +975 -0
- ccc_mcp-0.1.0/docs/ch/12-chatgpt-only-e2e-walkthrough.md +165 -0
- ccc_mcp-0.1.0/docs/ch/13-meeting-mode-walkthrough.md +105 -0
- ccc_mcp-0.1.0/docs/ch/2-connect-chatgpt.md +104 -0
- ccc_mcp-0.1.0/docs/ch/3-first-project.md +86 -0
- ccc_mcp-0.1.0/docs/ch/4-workflow.md +141 -0
- ccc_mcp-0.1.0/docs/ch/5-configuration.md +92 -0
- ccc_mcp-0.1.0/docs/ch/6-skills.md +120 -0
- ccc_mcp-0.1.0/docs/ch/7-reliability-and-security.md +229 -0
- ccc_mcp-0.1.0/docs/ch/8-cli-reference.md +175 -0
- ccc_mcp-0.1.0/docs/ch/9-protocol.md +54 -0
- ccc_mcp-0.1.0/docs/ch/README.md +19 -0
- ccc_mcp-0.1.0/docs/en/1-install-and-sign-in.md +36 -0
- ccc_mcp-0.1.0/docs/en/10-technical-reference.md +19 -0
- ccc_mcp-0.1.0/docs/en/11-architecture-spec.md +22 -0
- ccc_mcp-0.1.0/docs/en/12-chatgpt-only-e2e-walkthrough.md +165 -0
- ccc_mcp-0.1.0/docs/en/13-meeting-mode-walkthrough.md +105 -0
- ccc_mcp-0.1.0/docs/en/2-connect-chatgpt.md +29 -0
- ccc_mcp-0.1.0/docs/en/3-first-project.md +70 -0
- ccc_mcp-0.1.0/docs/en/4-workflow.md +41 -0
- ccc_mcp-0.1.0/docs/en/5-configuration.md +72 -0
- ccc_mcp-0.1.0/docs/en/6-skills.md +98 -0
- ccc_mcp-0.1.0/docs/en/7-reliability-and-security.md +38 -0
- ccc_mcp-0.1.0/docs/en/8-cli-reference.md +68 -0
- ccc_mcp-0.1.0/docs/en/9-protocol.md +13 -0
- ccc_mcp-0.1.0/docs/en/README.md +19 -0
- ccc_mcp-0.1.0/docs/schema/agent-report.json +89 -0
- ccc_mcp-0.1.0/docs/schema/clarification-request.json +35 -0
- ccc_mcp-0.1.0/docs/schema/clarification-response.json +26 -0
- ccc_mcp-0.1.0/docs/schema/context-patch.json +92 -0
- ccc_mcp-0.1.0/docs/schema/context-snapshot.json +277 -0
- ccc_mcp-0.1.0/examples/PLAN-A.md +9 -0
- ccc_mcp-0.1.0/examples/context-patch.json +13 -0
- ccc_mcp-0.1.0/examples/demo.py +129 -0
- ccc_mcp-0.1.0/examples/mcp_probe.py +45 -0
- ccc_mcp-0.1.0/examples/shared-context/CONTEXT.md +36 -0
- ccc_mcp-0.1.0/examples/shared-context/SESSION-HANDOFF.md +40 -0
- ccc_mcp-0.1.0/examples/skills/demo-mcp-skill/SKILL.md +15 -0
- ccc_mcp-0.1.0/examples/skills/demo-multilevel-skill/SKILL.md +18 -0
- ccc_mcp-0.1.0/examples/skills/demo-multilevel-skill/references/deeper/level3.md +8 -0
- ccc_mcp-0.1.0/examples/skills/demo-multilevel-skill/references/level2.md +4 -0
- ccc_mcp-0.1.0/examples/skills/demo-nested-skill/SKILL.md +63 -0
- ccc_mcp-0.1.0/examples/skills/demo-nested-skill/references/notes.md +6 -0
- ccc_mcp-0.1.0/examples/skills/demo-nested-skill/scripts/helpers/check.sh +5 -0
- ccc_mcp-0.1.0/pyproject.toml +65 -0
- ccc_mcp-0.1.0/requirements-windows.lock +51 -0
- ccc_mcp-0.1.0/scripts/setup-real-agents.sh +91 -0
- ccc_mcp-0.1.0/src/ccc_mcp/__init__.py +3 -0
- ccc_mcp-0.1.0/src/ccc_mcp/__main__.py +3 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/__init__.py +0 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/agent_setup.py +139 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/__init__.py +14 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/base.py +361 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/claude.py +125 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/codex.py +111 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/fake.py +67 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/codebase_snapshot.py +136 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/git.py +75 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/mcp_servers.py +361 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/skills.py +173 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/storage.py +246 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/test_runner.py +307 -0
- ccc_mcp-0.1.0/src/ccc_mcp/adapters/tunnel_client.py +178 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/__init__.py +0 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/access.py +182 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/approval.py +33 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/configuration.py +952 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/context.py +1598 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/directedit.py +372 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/evidence.py +35 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/models.py +171 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/tasks.py +3073 -0
- ccc_mcp-0.1.0/src/ccc_mcp/core/workspace.py +376 -0
- ccc_mcp-0.1.0/src/ccc_mcp/infra/__init__.py +0 -0
- ccc_mcp-0.1.0/src/ccc_mcp/infra/config.py +35 -0
- ccc_mcp-0.1.0/src/ccc_mcp/infra/errors.py +24 -0
- ccc_mcp-0.1.0/src/ccc_mcp/infra/security.py +137 -0
- ccc_mcp-0.1.0/src/ccc_mcp/infra/telemetry.py +137 -0
- ccc_mcp-0.1.0/src/ccc_mcp/interfaces/__init__.py +0 -0
- ccc_mcp-0.1.0/src/ccc_mcp/interfaces/cli.py +2062 -0
- ccc_mcp-0.1.0/src/ccc_mcp/interfaces/server.py +655 -0
- ccc_mcp-0.1.0/src/ccc_mcp/service.py +19 -0
- ccc_mcp-0.1.0/src/ccc_mcp/worker.py +274 -0
- ccc_mcp-0.1.0/test-results.txt +2 -0
- ccc_mcp-0.1.0/tests/conftest.py +74 -0
- ccc_mcp-0.1.0/tests/test_adapters.py +310 -0
- ccc_mcp-0.1.0/tests/test_agent_setup.py +167 -0
- ccc_mcp-0.1.0/tests/test_chatgpt_only_profile.py +201 -0
- ccc_mcp-0.1.0/tests/test_clear_history.py +84 -0
- ccc_mcp-0.1.0/tests/test_codebase_snapshot_skill.py +130 -0
- ccc_mcp-0.1.0/tests/test_configurable_agents.py +924 -0
- ccc_mcp-0.1.0/tests/test_context.py +236 -0
- ccc_mcp-0.1.0/tests/test_context_budget_enforcement.py +93 -0
- ccc_mcp-0.1.0/tests/test_context_refinement.py +306 -0
- ccc_mcp-0.1.0/tests/test_continuous_workflow.py +259 -0
- ccc_mcp-0.1.0/tests/test_dependency_install.py +271 -0
- ccc_mcp-0.1.0/tests/test_directedit.py +307 -0
- ccc_mcp-0.1.0/tests/test_fallback_classification.py +67 -0
- ccc_mcp-0.1.0/tests/test_mcp_cli.py +778 -0
- ccc_mcp-0.1.0/tests/test_mcp_install.py +362 -0
- ccc_mcp-0.1.0/tests/test_mcp_proxy.py +209 -0
- ccc_mcp-0.1.0/tests/test_meeting_mode.py +518 -0
- ccc_mcp-0.1.0/tests/test_meeting_mode_chatgpt.py +177 -0
- ccc_mcp-0.1.0/tests/test_project_access.py +175 -0
- ccc_mcp-0.1.0/tests/test_project_deletion.py +88 -0
- ccc_mcp-0.1.0/tests/test_project_root_recovery.py +111 -0
- ccc_mcp-0.1.0/tests/test_project_scope.py +252 -0
- ccc_mcp-0.1.0/tests/test_protocol_schema.py +44 -0
- ccc_mcp-0.1.0/tests/test_real_agents.py +95 -0
- ccc_mcp-0.1.0/tests/test_resumable_advance.py +292 -0
- ccc_mcp-0.1.0/tests/test_security.py +222 -0
- ccc_mcp-0.1.0/tests/test_skills.py +167 -0
- ccc_mcp-0.1.0/tests/test_skills_integration.py +59 -0
- ccc_mcp-0.1.0/tests/test_skills_multilevel.py +52 -0
- ccc_mcp-0.1.0/tests/test_task_handoff.py +317 -0
- ccc_mcp-0.1.0/tests/test_task_preflight.py +512 -0
- ccc_mcp-0.1.0/tests/test_tasks.py +282 -0
- ccc_mcp-0.1.0/tests/test_test_evidence.py +216 -0
- ccc_mcp-0.1.0/tests/test_tunnel_client.py +219 -0
- ccc_mcp-0.1.0/tests/test_tunnel_reload.py +90 -0
- ccc_mcp-0.1.0/tests/test_verification_evidence.py +211 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Set in the OS environment; this file is not loaded automatically.
|
|
2
|
+
# Register a project, then grant access once in the local terminal:
|
|
3
|
+
# ccc-mcp project add "D:/Projects/my-app" --id my-app
|
|
4
|
+
# ccc-mcp project authorize my-app
|
|
5
|
+
# CCC_MCP_HOME=C:\Users\YOUR_NAME\.ccc-mcp
|
|
6
|
+
# Real agents are opt-in; Fake requires no login or model credits.
|
|
7
|
+
CCC_MCP_ENABLE_REAL_AGENTS=0
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: Release version without the v prefix (for example 0.1.1)
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: release-${{ inputs.version }}
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
lint:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v7
|
|
23
|
+
- uses: actions/setup-python@v7
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.12"
|
|
26
|
+
cache: pip
|
|
27
|
+
- run: python -m pip install "ruff>=0.13,<1"
|
|
28
|
+
- run: ruff check src tests
|
|
29
|
+
|
|
30
|
+
test:
|
|
31
|
+
name: test (${{ matrix.os }}, py${{ matrix.python-version }})
|
|
32
|
+
runs-on: ${{ matrix.os }}
|
|
33
|
+
strategy:
|
|
34
|
+
fail-fast: false
|
|
35
|
+
matrix:
|
|
36
|
+
include:
|
|
37
|
+
# Linux covers every supported Python version. macOS and Windows run the
|
|
38
|
+
# same suite once to catch OS-specific path, process and locking behavior.
|
|
39
|
+
- os: ubuntu-latest
|
|
40
|
+
python-version: "3.11"
|
|
41
|
+
- os: ubuntu-latest
|
|
42
|
+
python-version: "3.12"
|
|
43
|
+
- os: ubuntu-latest
|
|
44
|
+
python-version: "3.13"
|
|
45
|
+
- os: ubuntu-latest
|
|
46
|
+
python-version: "3.14"
|
|
47
|
+
- os: macos-latest
|
|
48
|
+
python-version: "3.14"
|
|
49
|
+
- os: windows-latest
|
|
50
|
+
python-version: "3.14"
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v7
|
|
53
|
+
- uses: actions/setup-python@v7
|
|
54
|
+
with:
|
|
55
|
+
python-version: ${{ matrix.python-version }}
|
|
56
|
+
cache: pip
|
|
57
|
+
- name: Configure Git identity
|
|
58
|
+
run: |
|
|
59
|
+
git config --global user.name "ci"
|
|
60
|
+
git config --global user.email "ci@example.invalid"
|
|
61
|
+
git config --global init.defaultBranch main
|
|
62
|
+
- run: python -m pip install -e ".[dev]"
|
|
63
|
+
- run: python -m pytest -q
|
|
64
|
+
|
|
65
|
+
build:
|
|
66
|
+
name: build sdist + wheel
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
outputs:
|
|
69
|
+
version: ${{ steps.version.outputs.version }}
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@v7
|
|
72
|
+
- uses: actions/setup-python@v7
|
|
73
|
+
with:
|
|
74
|
+
python-version: "3.12"
|
|
75
|
+
- name: Version must match the package
|
|
76
|
+
id: version
|
|
77
|
+
env:
|
|
78
|
+
RELEASE_VERSION: ${{ inputs.version }}
|
|
79
|
+
run: |
|
|
80
|
+
version=$(sed -n 's/^__version__ = "\(.*\)"$/\1/p' src/ccc_mcp/__init__.py)
|
|
81
|
+
if [ "${RELEASE_VERSION}" != "${version}" ]; then
|
|
82
|
+
echo "Requested version ${RELEASE_VERSION} does not match package version ${version}" >&2
|
|
83
|
+
exit 1
|
|
84
|
+
fi
|
|
85
|
+
echo "version=${version}" >> "${GITHUB_OUTPUT}"
|
|
86
|
+
- run: python -m pip install build twine
|
|
87
|
+
- run: python -m build
|
|
88
|
+
- run: python -m twine check --strict dist/*
|
|
89
|
+
- name: Require one universal wheel
|
|
90
|
+
run: python -c "from pathlib import Path; wheels = list(Path('dist').glob('*.whl')); assert len(wheels) == 1 and wheels[0].name.endswith('-py3-none-any.whl'), wheels"
|
|
91
|
+
- uses: actions/upload-artifact@v7
|
|
92
|
+
with:
|
|
93
|
+
name: dist
|
|
94
|
+
path: dist/
|
|
95
|
+
if-no-files-found: error
|
|
96
|
+
|
|
97
|
+
smoke-install:
|
|
98
|
+
name: install wheel (${{ matrix.os }})
|
|
99
|
+
needs: build
|
|
100
|
+
runs-on: ${{ matrix.os }}
|
|
101
|
+
strategy:
|
|
102
|
+
fail-fast: false
|
|
103
|
+
matrix:
|
|
104
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
105
|
+
steps:
|
|
106
|
+
- uses: actions/setup-python@v7
|
|
107
|
+
with:
|
|
108
|
+
python-version: "3.14"
|
|
109
|
+
- uses: actions/download-artifact@v8
|
|
110
|
+
with:
|
|
111
|
+
name: dist
|
|
112
|
+
path: dist
|
|
113
|
+
- name: Install the exact built wheel
|
|
114
|
+
run: python -c "from pathlib import Path; import subprocess, sys; wheels = list(Path('dist').glob('*.whl')); assert len(wheels) == 1, wheels; subprocess.check_call([sys.executable, '-m', 'pip', 'install', str(wheels[0])])"
|
|
115
|
+
- name: Smoke-test the installed CLI
|
|
116
|
+
run: |
|
|
117
|
+
python -m ccc_mcp --help
|
|
118
|
+
python -c "import ccc_mcp, importlib.metadata as m; assert ccc_mcp.__version__ == m.version('ccc-mcp'); print(ccc_mcp.__version__)"
|
|
119
|
+
- name: Verify the Windows runtime dependency
|
|
120
|
+
if: runner.os == 'Windows'
|
|
121
|
+
run: python -c "import win32job"
|
|
122
|
+
|
|
123
|
+
github-release:
|
|
124
|
+
name: attach build to GitHub Release
|
|
125
|
+
needs: [lint, test, build, smoke-install]
|
|
126
|
+
runs-on: ubuntu-latest
|
|
127
|
+
permissions:
|
|
128
|
+
contents: write
|
|
129
|
+
steps:
|
|
130
|
+
- uses: actions/download-artifact@v8
|
|
131
|
+
with:
|
|
132
|
+
name: dist
|
|
133
|
+
path: dist
|
|
134
|
+
- name: Create release with the sdist and wheel
|
|
135
|
+
env:
|
|
136
|
+
GH_TOKEN: ${{ github.token }}
|
|
137
|
+
RELEASE_VERSION: ${{ needs.build.outputs.version }}
|
|
138
|
+
run: gh release create "v${RELEASE_VERSION}" dist/* --repo "${GITHUB_REPOSITORY}" --target "${GITHUB_SHA}" --title "v${RELEASE_VERSION}" --generate-notes
|
|
139
|
+
|
|
140
|
+
publish:
|
|
141
|
+
name: publish
|
|
142
|
+
needs: [build, smoke-install, github-release]
|
|
143
|
+
runs-on: ubuntu-latest
|
|
144
|
+
environment:
|
|
145
|
+
name: pypi
|
|
146
|
+
url: https://pypi.org/p/ccc-mcp
|
|
147
|
+
permissions:
|
|
148
|
+
id-token: write
|
|
149
|
+
steps:
|
|
150
|
+
- uses: actions/download-artifact@v8
|
|
151
|
+
with:
|
|
152
|
+
name: dist
|
|
153
|
+
path: dist
|
|
154
|
+
- uses: pypa/gh-action-pypi-publish@v1.14.2
|
ccc_mcp-0.1.0/.gitignore
ADDED
ccc_mcp-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 bruce601080102
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
ccc_mcp-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: ccc-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Persistent context and governed agent orchestration over MCP
|
|
5
|
+
Project-URL: Homepage, https://github.com/bruce601080102/ccc-mcp
|
|
6
|
+
Project-URL: Repository, https://github.com/bruce601080102/ccc-mcp
|
|
7
|
+
Project-URL: Issues, https://github.com/bruce601080102/ccc-mcp/issues
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: ai-agents,chatgpt,claude-code,codex,mcp,workflow
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
|
+
Classifier: Topic :: Software Development
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Requires-Dist: mcp<3,>=2.3
|
|
25
|
+
Requires-Dist: portalocker<4,>=3
|
|
26
|
+
Requires-Dist: psutil<8,>=7
|
|
27
|
+
Requires-Dist: pydantic<3,>=2.10
|
|
28
|
+
Requires-Dist: pyjwt[crypto]<3,>=2.10
|
|
29
|
+
Requires-Dist: pywin32>=311; sys_platform == 'win32'
|
|
30
|
+
Requires-Dist: typer<1,>=0.16
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: httpx<1,>=0.28; extra == 'dev'
|
|
33
|
+
Requires-Dist: pytest-asyncio<2,>=1; extra == 'dev'
|
|
34
|
+
Requires-Dist: pytest<10,>=8; extra == 'dev'
|
|
35
|
+
Requires-Dist: ruff<1,>=0.13; extra == 'dev'
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
|
|
38
|
+
# ccc-mcp
|
|
39
|
+
|
|
40
|
+
**Let the right coding agent do the right job—and keep the handoff verifiable.**
|
|
41
|
+
|
|
42
|
+
[](https://github.com/bruce601080102/ccc-mcp/actions/workflows/release.yaml)
|
|
43
|
+
[](https://www.python.org/downloads/)
|
|
44
|
+
[](docs/en/1-install-and-sign-in.md)
|
|
45
|
+
[](https://modelcontextprotocol.io/)
|
|
46
|
+
[](LICENSE)
|
|
47
|
+
|
|
48
|
+
[](docs/en/2-connect-chatgpt.md)
|
|
49
|
+
[](docs/en/4-workflow.md)
|
|
50
|
+
[](docs/en/4-workflow.md)
|
|
51
|
+
|
|
52
|
+
ccc-mcp is a local MCP workflow for software projects. ChatGPT manages the request and shared context; Codex can analyse and review; Claude Code can implement. Or, when that is the better fit, ChatGPT can run every workflow role itself. Each handoff retains the evidence needed to continue, review, or recover the work.
|
|
53
|
+
|
|
54
|
+
It is designed for people who use more than one AI coding tool and do not want a quota limit, lost chat history, or an unverified "tests passed" claim to end a project.
|
|
55
|
+
|
|
56
|
+
> [Traditional Chinese README](README_ZH.md) · [English documentation](docs/en/1-install-and-sign-in.md)
|
|
57
|
+
|
|
58
|
+
## What it does
|
|
59
|
+
|
|
60
|
+
- Routes work through configurable `PM → SA → SD/RD → REVIEW → PM` roles.
|
|
61
|
+
- Preserves versioned shared context, raw agent reports, diffs, and host-observed test evidence.
|
|
62
|
+
- Uses Codex and Claude Code through their native CLIs, or assigns every role to ChatGPT for a ChatGPT-only workflow.
|
|
63
|
+
- Falls back only for recognised quota exhaustion, never for a normal install, login, or execution error.
|
|
64
|
+
- Shares operator-installed `SKILL.md` guidance across all roles.
|
|
65
|
+
|
|
66
|
+
## Choose your mode
|
|
67
|
+
|
|
68
|
+
**Best-model workflow** uses ChatGPT as PM, Codex for analysis/review, and Claude Code for implementation. It is the default when you have all three tools.
|
|
69
|
+
|
|
70
|
+
**ChatGPT-only workflow** sets all five role slots (`SA`, `SD`, `RD`, `SD/RD`, and `REVIEW`) to ChatGPT via `config profile chatgpt-only` — including the standalone `SD`/`RD` slots, so neither `config show` nor a manual dispatch is left showing a leftover Codex/Claude provider. The automatic workflow itself still only ever dispatches `SA → SD/RD → REVIEW`. It needs no Codex or Claude Code CLI, so it does not consume their CLI allowances. Available models, quotas, and tool access always follow your connected ChatGPT account and plan — never assume unlimited usage.
|
|
71
|
+
|
|
72
|
+
## Quick start
|
|
73
|
+
|
|
74
|
+
Prerequisites: Git, Python 3.11+, and an OpenAI Platform Tunnel. The best-model workflow also needs signed-in Codex and/or Claude Code accounts.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
git clone https://github.com/bruce601080102/ccc-mcp.git
|
|
78
|
+
cd ccc-mcp
|
|
79
|
+
source scripts/setup-real-agents.sh
|
|
80
|
+
# Run this only when using Codex and/or Claude Code:
|
|
81
|
+
ccc-mcp setup all
|
|
82
|
+
|
|
83
|
+
ccc-mcp project create hello-demo
|
|
84
|
+
ccc-mcp project authorize hello-demo
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
For a ChatGPT-only workflow, omit `ccc-mcp setup all`, then apply the `chatgpt-only` profile after creating the project:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
ccc-mcp --project hello-demo config profile chatgpt-only
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Connect the local server to ChatGPT with the Tunnel instructions in [Chinese](docs/ch/2-connect-chatgpt.md) or [English](docs/en/2-connect-chatgpt.md). Then ask ChatGPT, with the ccc-mcp connection selected:
|
|
94
|
+
|
|
95
|
+
> Create `hello.py` in `hello-demo`; it should print `Hello, World!`, with a test that verifies the output.
|
|
96
|
+
|
|
97
|
+
Verify the work on the machine that owns the project:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
ccc-mcp --project hello-demo task status
|
|
101
|
+
ccc-mcp --project hello-demo task usage
|
|
102
|
+
ccc-mcp --project hello-demo context show
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
For a native role, `task usage` is the source of truth for whether its CLI was actually invoked. A ChatGPT role is intentionally interactive and has no native CLI invocation: `task usage` marks it `"interactive": true` with `invocation.source: "chatgpt_web"`, so `cli_invoked: false` there reads as "by design," never as an ambiguous CLI failure. In either mode, a reported success is not sufficient: the configured host test command is recorded before review can complete the task.
|
|
106
|
+
|
|
107
|
+
`ccc-mcp --project hello-demo config show` (or `config providers`) also reports a read-only `profile` field — `chatgpt-only`, `best-model`, or `custom` — derived live from every role's current provider. Switch back at any time with `ccc-mcp --project hello-demo config profile best-model`, which resolves dynamically from whichever native CLIs are actually installed (both → the Codex/Claude split; only one → every role on it; neither → rejected).
|
|
108
|
+
|
|
109
|
+
## How the workflow works
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
ChatGPT (PM) → Codex (SA) → Claude Code (SD/RD) → Codex (REVIEW)
|
|
113
|
+
↑ │
|
|
114
|
+
└──────── shared context + evidence + next task ─────┘
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The defaults are deliberately opinionated, not mandatory. Assign any supported provider to a role:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
ccc-mcp --project hello-demo config role REVIEW codex --effort high --quota-fallback chatgpt
|
|
121
|
+
ccc-mcp --project hello-demo config role SD/RD claude
|
|
122
|
+
ccc-mcp --project hello-demo config show
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
For the complete role and workflow model, see [the workflow guide](docs/en/4-workflow.md) or the [Traditional Chinese guide](docs/ch/4-workflow.md).
|
|
126
|
+
|
|
127
|
+
## Documentation
|
|
128
|
+
|
|
129
|
+
Read the numbered documents in order for a full setup. The two language trees use the same filenames and sequence.
|
|
130
|
+
|
|
131
|
+
| Step | Topic |
|
|
132
|
+
| --- | --- |
|
|
133
|
+
| 1 | Install and sign in |
|
|
134
|
+
| 2 | Connect ChatGPT |
|
|
135
|
+
| 3 | Create and authorize a first project |
|
|
136
|
+
| 4 | Run and resume the workflow |
|
|
137
|
+
| 5 | Configure providers, roles, context, and tests |
|
|
138
|
+
| 6 | Install and use skills |
|
|
139
|
+
| 7 | Understand reliability and security boundaries |
|
|
140
|
+
| 8–11 | CLI reference, public protocol, technical reference, and architecture |
|
|
141
|
+
|
|
142
|
+
- [Traditional Chinese README](README_ZH.md)
|
|
143
|
+
- [English documentation index](docs/en/README.md)
|
|
144
|
+
|
|
145
|
+
## Important boundary
|
|
146
|
+
|
|
147
|
+
`project authorize` permits ccc-mcp to modify that project and run its configured test command. Dependency installation can execute package scripts, so review dependency changes as part of the diff. Codex runs in its configured sandbox. Claude Code has a restricted tool policy, but does **not** yet have an equivalent OS-enforced sandbox; use a least-privileged OS account for it.
|
|
148
|
+
|
|
149
|
+
Done with a project? `ccc-mcp project revoke <id>` (if still authorized) then `ccc-mcp project delete <id>` permanently removes it from `project list` and blocks the ID from ever being used or re-registered again. It never deletes files on disk or any historical Context/task/evidence — delete the project directory yourself once you've confirmed its path. See [reliability and security](docs/en/7-reliability-and-security.md) for the full guarantee.
|
|
150
|
+
|
|
151
|
+
## Development
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
python3.11 -m pytest -q
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
The repository requires Python 3.11 or newer. Real-agent tests are opt-in because they need locally installed, authenticated CLIs; see [Chinese](docs/ch/1-install-and-sign-in.md) or [English](docs/en/1-install-and-sign-in.md).
|
ccc_mcp-0.1.0/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# ccc-mcp
|
|
2
|
+
|
|
3
|
+
**Let the right coding agent do the right job—and keep the handoff verifiable.**
|
|
4
|
+
|
|
5
|
+
[](https://github.com/bruce601080102/ccc-mcp/actions/workflows/release.yaml)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](docs/en/1-install-and-sign-in.md)
|
|
8
|
+
[](https://modelcontextprotocol.io/)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
|
|
11
|
+
[](docs/en/2-connect-chatgpt.md)
|
|
12
|
+
[](docs/en/4-workflow.md)
|
|
13
|
+
[](docs/en/4-workflow.md)
|
|
14
|
+
|
|
15
|
+
ccc-mcp is a local MCP workflow for software projects. ChatGPT manages the request and shared context; Codex can analyse and review; Claude Code can implement. Or, when that is the better fit, ChatGPT can run every workflow role itself. Each handoff retains the evidence needed to continue, review, or recover the work.
|
|
16
|
+
|
|
17
|
+
It is designed for people who use more than one AI coding tool and do not want a quota limit, lost chat history, or an unverified "tests passed" claim to end a project.
|
|
18
|
+
|
|
19
|
+
> [Traditional Chinese README](README_ZH.md) · [English documentation](docs/en/1-install-and-sign-in.md)
|
|
20
|
+
|
|
21
|
+
## What it does
|
|
22
|
+
|
|
23
|
+
- Routes work through configurable `PM → SA → SD/RD → REVIEW → PM` roles.
|
|
24
|
+
- Preserves versioned shared context, raw agent reports, diffs, and host-observed test evidence.
|
|
25
|
+
- Uses Codex and Claude Code through their native CLIs, or assigns every role to ChatGPT for a ChatGPT-only workflow.
|
|
26
|
+
- Falls back only for recognised quota exhaustion, never for a normal install, login, or execution error.
|
|
27
|
+
- Shares operator-installed `SKILL.md` guidance across all roles.
|
|
28
|
+
|
|
29
|
+
## Choose your mode
|
|
30
|
+
|
|
31
|
+
**Best-model workflow** uses ChatGPT as PM, Codex for analysis/review, and Claude Code for implementation. It is the default when you have all three tools.
|
|
32
|
+
|
|
33
|
+
**ChatGPT-only workflow** sets all five role slots (`SA`, `SD`, `RD`, `SD/RD`, and `REVIEW`) to ChatGPT via `config profile chatgpt-only` — including the standalone `SD`/`RD` slots, so neither `config show` nor a manual dispatch is left showing a leftover Codex/Claude provider. The automatic workflow itself still only ever dispatches `SA → SD/RD → REVIEW`. It needs no Codex or Claude Code CLI, so it does not consume their CLI allowances. Available models, quotas, and tool access always follow your connected ChatGPT account and plan — never assume unlimited usage.
|
|
34
|
+
|
|
35
|
+
## Quick start
|
|
36
|
+
|
|
37
|
+
Prerequisites: Git, Python 3.11+, and an OpenAI Platform Tunnel. The best-model workflow also needs signed-in Codex and/or Claude Code accounts.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
git clone https://github.com/bruce601080102/ccc-mcp.git
|
|
41
|
+
cd ccc-mcp
|
|
42
|
+
source scripts/setup-real-agents.sh
|
|
43
|
+
# Run this only when using Codex and/or Claude Code:
|
|
44
|
+
ccc-mcp setup all
|
|
45
|
+
|
|
46
|
+
ccc-mcp project create hello-demo
|
|
47
|
+
ccc-mcp project authorize hello-demo
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
For a ChatGPT-only workflow, omit `ccc-mcp setup all`, then apply the `chatgpt-only` profile after creating the project:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ccc-mcp --project hello-demo config profile chatgpt-only
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Connect the local server to ChatGPT with the Tunnel instructions in [Chinese](docs/ch/2-connect-chatgpt.md) or [English](docs/en/2-connect-chatgpt.md). Then ask ChatGPT, with the ccc-mcp connection selected:
|
|
57
|
+
|
|
58
|
+
> Create `hello.py` in `hello-demo`; it should print `Hello, World!`, with a test that verifies the output.
|
|
59
|
+
|
|
60
|
+
Verify the work on the machine that owns the project:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
ccc-mcp --project hello-demo task status
|
|
64
|
+
ccc-mcp --project hello-demo task usage
|
|
65
|
+
ccc-mcp --project hello-demo context show
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For a native role, `task usage` is the source of truth for whether its CLI was actually invoked. A ChatGPT role is intentionally interactive and has no native CLI invocation: `task usage` marks it `"interactive": true` with `invocation.source: "chatgpt_web"`, so `cli_invoked: false` there reads as "by design," never as an ambiguous CLI failure. In either mode, a reported success is not sufficient: the configured host test command is recorded before review can complete the task.
|
|
69
|
+
|
|
70
|
+
`ccc-mcp --project hello-demo config show` (or `config providers`) also reports a read-only `profile` field — `chatgpt-only`, `best-model`, or `custom` — derived live from every role's current provider. Switch back at any time with `ccc-mcp --project hello-demo config profile best-model`, which resolves dynamically from whichever native CLIs are actually installed (both → the Codex/Claude split; only one → every role on it; neither → rejected).
|
|
71
|
+
|
|
72
|
+
## How the workflow works
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
ChatGPT (PM) → Codex (SA) → Claude Code (SD/RD) → Codex (REVIEW)
|
|
76
|
+
↑ │
|
|
77
|
+
└──────── shared context + evidence + next task ─────┘
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The defaults are deliberately opinionated, not mandatory. Assign any supported provider to a role:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
ccc-mcp --project hello-demo config role REVIEW codex --effort high --quota-fallback chatgpt
|
|
84
|
+
ccc-mcp --project hello-demo config role SD/RD claude
|
|
85
|
+
ccc-mcp --project hello-demo config show
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
For the complete role and workflow model, see [the workflow guide](docs/en/4-workflow.md) or the [Traditional Chinese guide](docs/ch/4-workflow.md).
|
|
89
|
+
|
|
90
|
+
## Documentation
|
|
91
|
+
|
|
92
|
+
Read the numbered documents in order for a full setup. The two language trees use the same filenames and sequence.
|
|
93
|
+
|
|
94
|
+
| Step | Topic |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| 1 | Install and sign in |
|
|
97
|
+
| 2 | Connect ChatGPT |
|
|
98
|
+
| 3 | Create and authorize a first project |
|
|
99
|
+
| 4 | Run and resume the workflow |
|
|
100
|
+
| 5 | Configure providers, roles, context, and tests |
|
|
101
|
+
| 6 | Install and use skills |
|
|
102
|
+
| 7 | Understand reliability and security boundaries |
|
|
103
|
+
| 8–11 | CLI reference, public protocol, technical reference, and architecture |
|
|
104
|
+
|
|
105
|
+
- [Traditional Chinese README](README_ZH.md)
|
|
106
|
+
- [English documentation index](docs/en/README.md)
|
|
107
|
+
|
|
108
|
+
## Important boundary
|
|
109
|
+
|
|
110
|
+
`project authorize` permits ccc-mcp to modify that project and run its configured test command. Dependency installation can execute package scripts, so review dependency changes as part of the diff. Codex runs in its configured sandbox. Claude Code has a restricted tool policy, but does **not** yet have an equivalent OS-enforced sandbox; use a least-privileged OS account for it.
|
|
111
|
+
|
|
112
|
+
Done with a project? `ccc-mcp project revoke <id>` (if still authorized) then `ccc-mcp project delete <id>` permanently removes it from `project list` and blocks the ID from ever being used or re-registered again. It never deletes files on disk or any historical Context/task/evidence — delete the project directory yourself once you've confirmed its path. See [reliability and security](docs/en/7-reliability-and-security.md) for the full guarantee.
|
|
113
|
+
|
|
114
|
+
## Development
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
python3.11 -m pytest -q
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The repository requires Python 3.11 or newer. Real-agent tests are opt-in because they need locally installed, authenticated CLIs; see [Chinese](docs/ch/1-install-and-sign-in.md) or [English](docs/en/1-install-and-sign-in.md).
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# ccc-mcp
|
|
2
|
+
|
|
3
|
+
**讓最適合的 coding agent 負責最適合的工作,並讓每一次交接都能驗證。**
|
|
4
|
+
|
|
5
|
+
[](https://github.com/bruce601080102/ccc-mcp/actions/workflows/release.yaml)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](docs/ch/1-install-and-sign-in.md)
|
|
8
|
+
[](https://modelcontextprotocol.io/)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
|
|
11
|
+
[](docs/ch/2-connect-chatgpt.md)
|
|
12
|
+
[](docs/ch/4-workflow.md)
|
|
13
|
+
[](docs/ch/4-workflow.md)
|
|
14
|
+
|
|
15
|
+
ccc-mcp 是給軟體專案使用的本機 MCP 工作流程。ChatGPT 管理需求與共用 Context;Codex 可以負責分析與審查;Claude Code 可以負責實作。若那才是合適選擇,也能讓 ChatGPT 單獨完成所有工作流角色。每一次交接都會保留繼續工作、審查或恢復任務需要的證據。
|
|
16
|
+
|
|
17
|
+
它適合同時使用多種 AI coding 工具的人:不讓額度耗盡、對話遺失,或模型一句「測試通過」就中止專案。
|
|
18
|
+
|
|
19
|
+
> [English README](README.md) · [繁體中文文件](docs/ch/1-install-and-sign-in.md)
|
|
20
|
+
|
|
21
|
+
## 它能做什麼
|
|
22
|
+
|
|
23
|
+
- 以可設定的 `PM → SA → SD/RD → REVIEW → PM` 角色接力處理工作。
|
|
24
|
+
- 保存版本化共用 Context、原始 agent 報告、diff 與主機實際觀察到的測試證據。
|
|
25
|
+
- 透過原生 CLI 使用 Codex 和 Claude Code,也可將所有角色指定給 ChatGPT,走 ChatGPT-only workflow。
|
|
26
|
+
- 只在辨識為額度耗盡時才啟用 fallback,不會把安裝、登入或一般執行錯誤誤當成額度問題。
|
|
27
|
+
- 讓操作者安裝的 `SKILL.md` 指引可供所有角色使用。
|
|
28
|
+
|
|
29
|
+
## 選擇模式
|
|
30
|
+
|
|
31
|
+
**最佳模型工作流**:ChatGPT 擔任 PM、Codex 負責分析與審查、Claude Code 負責實作。若你三種工具都有,這是預設模式。
|
|
32
|
+
|
|
33
|
+
**ChatGPT-only workflow**:用 `config profile chatgpt-only` 把全部五個角色(`SA`、`SD`、`RD`、`SD/RD`、`REVIEW`)都設為 ChatGPT——包含獨立的 `SD`、`RD`,`config show` 或手動派工都不會殘留 Codex/Claude。自動工作流本身實際上仍只會接力派發 `SA → SD/RD → REVIEW`。不需要 Codex 或 Claude Code CLI,也不會消耗它們的 CLI 額度;但可用模型、額度與功能一律依你連接的 ChatGPT 帳戶與方案而定,不要假設額度是無限的。
|
|
34
|
+
|
|
35
|
+
## 快速開始
|
|
36
|
+
|
|
37
|
+
需求:Git、Python 3.11 以上、OpenAI Platform Tunnel。最佳模型工作流另需已登入的 Codex 和/或 Claude Code 帳戶。
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
git clone https://github.com/bruce601080102/ccc-mcp.git
|
|
41
|
+
cd ccc-mcp
|
|
42
|
+
source scripts/setup-real-agents.sh
|
|
43
|
+
# 只有要使用 Codex 和/或 Claude Code 時才執行:
|
|
44
|
+
ccc-mcp setup all
|
|
45
|
+
|
|
46
|
+
ccc-mcp project create hello-demo
|
|
47
|
+
ccc-mcp project authorize hello-demo
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
若要全程使用 ChatGPT,略過 `ccc-mcp setup all`,建立專案後套用 `chatgpt-only` profile:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ccc-mcp --project hello-demo config profile chatgpt-only
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
依照[連接 ChatGPT](docs/ch/2-connect-chatgpt.md)建立 Tunnel 並選取 ccc-mcp 連線後,在 ChatGPT 提出:
|
|
57
|
+
|
|
58
|
+
> 請在 `hello-demo` 建立 `hello.py`,執行時輸出 `Hello, World!`,並加入驗證輸出的測試。
|
|
59
|
+
|
|
60
|
+
在擁有專案的本機驗證結果:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
ccc-mcp --project hello-demo task status
|
|
64
|
+
ccc-mcp --project hello-demo task usage
|
|
65
|
+
ccc-mcp --project hello-demo context show
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
對原生角色而言,`task usage` 才是 CLI 是否真的被呼叫的依據;ChatGPT 角色本來就是互動式執行,沒有原生 CLI 呼叫:`task usage` 會標示 `"interactive": true` 與 `invocation.source: "chatgpt_web"`,所以這裡的 `cli_invoked: false` 代表「設計上本來就不呼叫」,不是模糊的 CLI 失敗訊號。不論哪種模式,聊天回覆自稱成功都不夠;設定的主機測試命令會在 REVIEW 完成前留下紀錄。
|
|
69
|
+
|
|
70
|
+
`ccc-mcp --project hello-demo config show`(或 `config providers`)也會顯示唯讀的 `profile` 欄位——`chatgpt-only`、`best-model` 或 `custom`——由目前所有角色的 provider 即時推算。隨時可用 `ccc-mcp --project hello-demo config profile best-model` 切回,這會依本機實際安裝的 CLI 動態決定(兩個都裝=Codex/Claude 分工;只裝一個=全部角色用那一個;一個都沒裝則拒絕)。
|
|
71
|
+
|
|
72
|
+
## 工作流程
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
ChatGPT(PM)→ Codex(SA)→ Claude Code(SD/RD)→ Codex(REVIEW)
|
|
76
|
+
↑ │
|
|
77
|
+
└──────── 共用 Context、證據與下一個任務 ────────────┘
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
預設角色是有意見的預設值,不是硬性規定。你可以替角色指定支援的 provider:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
ccc-mcp --project hello-demo config role REVIEW codex --effort high --quota-fallback chatgpt
|
|
84
|
+
ccc-mcp --project hello-demo config role SD/RD claude
|
|
85
|
+
ccc-mcp --project hello-demo config show
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
完整說明請看[協作工作流程](docs/ch/4-workflow.md)。
|
|
89
|
+
|
|
90
|
+
## 文件
|
|
91
|
+
|
|
92
|
+
完整設定建議依序閱讀編號文件;英文與繁中的檔名和順序一致。
|
|
93
|
+
|
|
94
|
+
| 步驟 | 主題 |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| 1 | 安裝與登入 |
|
|
97
|
+
| 2 | 連接 ChatGPT |
|
|
98
|
+
| 3 | 建立並授權第一個專案 |
|
|
99
|
+
| 4 | 執行與恢復工作流程 |
|
|
100
|
+
| 5 | 設定 provider、角色、Context 與測試 |
|
|
101
|
+
| 6 | 安裝與使用 Skill |
|
|
102
|
+
| 7 | 了解可靠性與安全邊界 |
|
|
103
|
+
| 8–11 | CLI 參考、公開協議、技術參考與架構 |
|
|
104
|
+
|
|
105
|
+
- [繁體中文文件目錄](docs/ch/README.md)
|
|
106
|
+
- [English README](README.md)
|
|
107
|
+
- [English documentation index](docs/en/README.md)
|
|
108
|
+
|
|
109
|
+
## 重要邊界
|
|
110
|
+
|
|
111
|
+
`project authorize` 允許 ccc-mcp 修改該專案並執行設定的測試命令。相依套件安裝可能執行 package script,因此相依變更也必須納入 diff 審閱。Codex 依設定的 sandbox 執行;Claude Code 雖有限制工具政策,但尚未有同等的 OS 強制 sandbox,應以最低權限的 OS 帳戶執行。
|
|
112
|
+
|
|
113
|
+
不想再用某個專案了?先 `ccc-mcp project revoke <id>`(若目前仍是持續授權狀態),再執行 `ccc-mcp project delete <id>` 永久從 `project list` 移除,之後這個 ID 不能再被使用或重新註冊。它不會刪除磁碟上的檔案,也不會刪除任何歷史 Context/task/證據——確認路徑後請自行刪除專案目錄。完整說明見[可靠性與安全邊界](docs/ch/7-reliability-and-security.md)。
|
|
114
|
+
|
|
115
|
+
## 開發
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
python3.11 -m pytest -q
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
本專案要求 Python 3.11 以上。真實 agent 測試需要本機已安裝且登入的 CLI,預設不會執行;詳見[安裝與登入](docs/ch/1-install-and-sign-in.md)。
|